首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring3MVC从控制器访问HttpRequest

Spring3MVC从控制器访问HttpRequest
EN

Stack Overflow用户
提问于 2011-12-14 20:13:11
回答 4查看 271.7K关注 0票数 118

我想自己处理请求和会话属性,而不是把它留给spring @SessionAttributes,例如处理cookie的登录。

我只是想不出如何从控制器内部访问HttpRequest,我需要一种方法去访问@RequestAttribute之上的一层并访问HttpRequest本身。通过实现ApplicationContext和调用getAttribute(),可以使用Stripes来完成此操作。

此外,将HttpServletRequest作为参数传递似乎不起作用:

@RequestMapping(value="/") public String home(HttpServletRequest request){
    System.out.println(""+request.getSession().getCreationTime());
    return "home"; 
}

上面的方法不会打印任何内容。

你对此有什么建议吗?

EN

回答 4

Stack Overflow用户

发布于 2011-12-14 20:19:58

如果你只是把它添加到你的控制器方法签名中,Spring MVC会给你一个HttpRequest:

例如:

/**
 * Generate a PDF report...
 */
@RequestMapping(value = "/report/{objectId}", method = RequestMethod.GET)
public @ResponseBody void generateReport(
        @PathVariable("objectId") Long objectId, 
        HttpServletRequest request, 
        HttpServletResponse response) {

    // ...
    // Here you can use the request and response objects like:
    // response.setContentType("application/pdf");
    // response.getOutputStream().write(...);

}

如您所见,只需将HttpServletRequestHttpServletResponse对象添加到签名中,就可以使Spring MVC将这些对象传递给您的控制器方法。您还需要HttpSession对象。

编辑:似乎HttpServletRequest/Response在Spring3下对某些人不起作用。正如Eduardo Zola指出的那样,尝试使用Spring WebRequest/WebResponse对象。

我强烈建议您查看一下Spring MVC能够自动神奇地注入到处理程序方法中的list of supported arguments

票数 208
EN

Stack Overflow用户

发布于 2013-04-11 07:58:34

我知道这是个老问题,但是...

您也可以在您的类中使用以下代码:

@Autowired
private HttpServletRequest context;

这将提供当前的HttpServletRequest实例,供您在方法上使用。

票数 84
EN

Stack Overflow用户

发布于 2021-10-21 06:53:55

另一种方法是像这样使用RequestContextHolder:(从2.0开始)

类以绑定线程的RequestAttributes对象的形式公开RequestContextHolder请求。如果可继承标志设置为true,则该请求将由当前线程派生的任何子线程继承。

HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8504258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档