我正在研究遗留代码(Spring 2.5.x,Java 1.5),其中控制器通过Http Servlet Request来查看如下:
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map attributes = new HashMap();
attributes.put("httpRequest", request);
return new ModelAndView("/path/to/page.jsp", attributes);
}
然而,发生的情况是,http页面上下文确实存在httpRequest属性,但它包含当前请求(JSP页面)而不是原始(控制器)。传递的请求用于从URL中提取一些信息。看来我可以通过使用一堆“javax.servlet.forward。*”属性解决这个问题。然而这让我很困惑,因为这很简单,我很乐意让它继续工作或者至少知道为什么它现在不起作用。有人有什么想法吗?
答案 0 :(得分:1)
首先,将请求存储为请求的属性是坏主意。如果您需要当前请求的特定数据,可以使用${requestContext}
直接检索,如果您需要访问该网址,请使用${requestContext.requestURL}
。如果您需要访问此URL的某些部分以在客户端显示它,最好通过首先使用StringBuffer url = request.getRequestURL();
获取它然后将所需数据设置为属性来解析服务器端(控制器)中的URL。