Ezh*_*hil 3 java session servlets spring-mvc
我们的产品是在Spring 3.0 MVC中开发的.
我们在控制器中使用了如下会话.
@Controller
public class LoginController{
HttpSession session;
@RequestMapping(value="/index.htm",method = RequestMethod.POST)
public ModelAndView viewIndex(HttpServletRequest request){
session=request.getSession(false);
System.out.println(request.getSession(false));
System.out.println(session);
}
}
Run Code Online (Sandbox Code Playgroud)
在Firefox中,我可以看到两者request.getSession(false)并session打印相同的值.
在IE中,我可以看到request.getSession(false)打印值,session并打印为null.
可能是什么原因?
注意:我没有使用任何过滤器进行会话
Bal*_*usC 10
您永远不应将请求或会话特定变量分配为类的字段,在整个应用程序的生命周期中只有一个实例.然后,所有网页访问者将共享相同的变量.访问者X然后将与访问者Y共享会话.这是一个巨大的数据完整性泄漏.
至于抓住会话,如果你需要会话,只需使用request.getSession()没有布尔值的直接.千万不能把它分配给了一些领域"以后重用".
@RequestMapping(value="/index.htm",method = RequestMethod.POST)
public ModelAndView viewIndex(HttpServletRequest request){
HttpSession session = request.getSession();
// ... Get/set attributes?
}
Run Code Online (Sandbox Code Playgroud)
有关servlet如何工作的更多背景信息(Spring MVC是一个构建在基本Servlet API之上的框架),您可能会发现这篇文章很有用:servlet如何工作?实例化,会话,共享变量和多线程.
| 归档时间: |
|
| 查看次数: |
5442 次 |
| 最近记录: |