zoukankan      html  css  js  c++  java
  • 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中配置

        <!-- 用于管理请求相关内容的监听器,只有配置了这个监听器才能使用RequestContextHolder -->
        <listener>
            <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
        </listener>

        使用

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

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

  • 相关阅读:
    HDU 3695 Computer Virus on Planet Pandora (AC自己主动机)
    Crawley Project · Crawley Project
    Ubuntu下deb包的安装方法
    Google Chrome 59 Released – Install on Debian, Ubuntu and Linux Mint
    如何从 WEB 页面中提取信息 | Binuxの杂货铺
    Binuxの杂货铺 Data Highlighter
    pyspider爬京东商品信息案例分享
    Token bucket
    debian8上安装pyspider
    求助下 Ubuntu 15.10(64 位)下安装 pyspider 下的问题
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/11670199.html
Copyright © 2011-2022 走看看