存储在模型中的HttpServletRequest被替换

时间:2014-04-14 14:17:12

标签: java spring-mvc servlets el

我正在研究遗留代码(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。*”属性解决这个问题。然而这让我很困惑,因为这很简单,我很乐意让它继续工作或者至少知道为什么它现在不起作用。有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

首先,将请求存储为请求的属性是坏主意。如果您需要当前请求的特定数据,可以使用${requestContext}直接检索,如果您需要访问该网址,请使用${requestContext.requestURL}。如果您需要访问此URL的某些部分以在客户端显示它,最好通过首先使用StringBuffer url = request.getRequestURL();获取它然后将所需数据设置为属性来解析服务器端(控制器)中的URL。