java mvc 获取session_Spring MVC----获取session/request

获取session方法1:

在controller层,可以直接注入,如果需要在service层获取,就可以直接将session传入进去

public JsonResult login(String username, String password, HttpSession httpSession) {

System.out.println(httpSession);

获取session方法2:

使用监听器的方式

在web.xml中配置

org.springframework.web.context.request.RequestContextListener

使用

((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession()

原理:RequestContextListener实现了ServletRequestListener接口(就和我们自定义监听器一样),RequestContextListener监听器内部使用RequestContextHolder每次请求后,在执行业务层代码之前,就将request存储起来(利用ThreadLocal将reqeust对象存储起来),然后到我们业务层代码的时候,通过threadLocal就可以获取当前的request,获取了request就可以获取session()。【其中的ThradLocal设计非常巧妙,一次请求过程中,都是通过一个线程,因为AOP原则,监听器的代码不会和我们业务层代码有联系,如何在监听器中保存的值,可以传入到业务层中,就可以通过ThreadLocal这个对象保存数据,spring解决并发问题,就是通过ThreadLocal这个对象的】,虽然每次都会保存request,但是浏览器不关闭,每次的reqeust都是一样的,所以获取的session都是一样的


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部