为了账号安全,请及时绑定邮箱和手机立即绑定

Spring 3 MVC从控制器访问HttpRequest

/ 猿问

Spring 3 MVC从控制器访问HttpRequest

慕标5265247 2019-11-13 14:35:53

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


我只是无法弄清楚如何HttpRequest从控制器中访问,我需要一种方法来访问之上@RequestAttribute并访问HttpRequest自身。使用Stripes可以通过实现an ApplicationContext和调用来实现此目的getAttribute()。


另外,传递HttpServletRequestas参数似乎不起作用:


@RequestMapping(value="/") public String home(HttpServletRequest request){

    System.out.println(""+request.getSession().getCreationTime());

    return "home"; 

}

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


您对此有什么建议吗?


查看完整描述

3 回答

?
浮云间

如果您将HttpRequest添加到控制器方法签名中,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(...);


}

如您所见,只需将HttpServletRequest和HttpServletResponse对象添加到签名中,Spring MVC即可将这些对象传递给控制器方法。您还将需要该HttpSession对象。


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


我强烈建议您查看Spring MVC能够自动神奇地注入处理程序方法的受支持参数列表。


查看完整回答
反对 回复 2019-11-13
?
慕码人2483693

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


您也可以在课堂上使用它:


@Autowired

private HttpServletRequest context;

这将为您提供方法的当前实例HttpServletRequest。


查看完整回答
反对 回复 2019-11-13
?
繁星coding

@RequestMapping(value="/") public String home(HttpServletRequest request){

    System.out.println("My Attribute :: "+request.getAttribute("YourAttributeName"));

    return "home"; 

}


查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 42 浏览
我要回答

相关问题推荐

慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信