我想自己处理请求和会话属性,而不是将其留给spring @SessionAttributes,例如登录cookie处理.
我只是无法弄清楚如何HttpRequest在控制器中访问from,我需要一种方法去上面一层@RequestAttribute并访问它HttpRequest自己.使用Stripes来实现ApplicationContext和调用getAttribute().
此外,传递HttpServletRequestas参数似乎不起作用:
@RequestMapping(value="/") public String home(HttpServletRequest request){
System.out.println(""+request.getSession().getCreationTime());
return "home";
}
Run Code Online (Sandbox Code Playgroud)
上述方法不打印任何内容.
你对此有什么建议吗?
我正在从xml配置转到annoations.我想转换一个会话范围的bean
<aop:scoped-proxy>
Run Code Online (Sandbox Code Playgroud)
这可以通过注释来完成,如果没有,我还能做些什么来保持该声明的有效性?
编辑: 我有兴趣在Spring 2.5中这样做
我使用超过6个月的春天.我无法理解与下面场景相关的这种潜在机制.
我有一个春季网络应用程序.现在我在控制器中自动启动了模型.基于url匹配,它调用各自的方法.我所有的方法都是单身.
现在当两个用户同时打开app时,spring可以并行运行它们并为它们提供结果.我不明白它怎么能这样做.我的意思是,因为bean是单例,它必须等待直到不使用bean或覆盖bean中的数据.但春天工作正常.有人可以用一些类比来解释这种行为.
为了解释我的问题,下面是一段代码:
我的默认控制器很简单:
@Autowired
private AppModel aModel;
public AppModel getModel(){
return aModel;
}
public void setModel(AppModel aModel){
this.aModel = aModel;
}
@RequestMapping(method = RequestMethod.GET)
public ModelAndView defaultGetter(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView(getViewName());
mav.addObject("model", aModel);
Runtime.getRuntime().gc();
return mav;
}
Run Code Online (Sandbox Code Playgroud)
也可以有人告诉我,当两个客户打开应用程序时,我会使用@autowired生成两个单独的模型.如果所有客户端只存在一个模型bean,那么请说客户端1的请求进来,我需要30秒才能获得结果.现在,如果第二个客户端在第3秒发送请求,那么第一个客户端请求是否会被覆盖?
我想我很困惑.有人可以澄清这种魔法是如何发生的吗?
谢谢
我可以HttpServletRequest在我的RestController类似下面自动装配吗,servletRequest即使它在高度并发的环境中执行,它也会返回不同的结果。我有一个限制,我不能作为方法参数,因为我正在实现一个自动生成的接口,不会HttpServletRequest作为方法参数。
@RestController
public class MyController implements MyInterface {
@Autowired
private HttpServletRequest servletRequest;
@Override
@RequestMapping(value = "/test", produces = {"application/json"}, consumes = {"application/json"}, method = RequestMethod.POST)
public ResponseEntity<MyResponse> test(@RequestBody final MyRequest payload){
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我已经浏览了这些 SO 问题和其他一些关于此的文章。但只是想确保当我们HttpServletRequest在控制器中自动装配时,它的Scope是Request?
Spring 3 MVC 从控制器访问 HttpRequest
如何在 Spring bean 中获取 HttpServletRequest?
注意:我确实尝试过这个,它似乎工作正常。但只是想确认即使在高度并发的环境中它也是一个万无一失的解决方案。此外,如果这是正确的方法,如果有人能解释它的工作原理,我将不胜感激。