Spring-Session+Redis实现session共享

1、添加依赖


    org.springframework.data
    spring-data-redis
    2.0.9.RELEASE


    org.springframework.session
    spring-session-data-redis
    2.0.5.RELEASE



    io.lettuce
    lettuce-core
    5.1.0.RC1

2、配置

spring-mvc.xml:



        




web.xml添加拦截器


    org.springframework.web.context.ContextLoaderListener


    contextConfigLocation
    classpath*:applicationContext*.xml



    springSessionRepositoryFilter
    org.springframework.web.filter.DelegatingFilterProxy


    springSessionRepositoryFilter
    /*
    REQUEST
    ERROR

3、使用spring-session

只要使用标准的servlet api调用session,在底层就会通过Spring Session得到的,并且会存储到Redis或其他你所选择的数据源中。

这里我们写个测试类LoginController:

@RequestMapping("/login")
public ModelAndView login(HttpServletRequest request, HttpServletResponse response) {
    Map model = new HashMap();
    String userName = request.getParameter("userName");
    String password = request.getParameter("password");
    HttpSession session = request.getSession(true);
    String p = request.getParameter("p");
    if(StringUtils.isNotEmpty(p) || StringUtils.isEmpty((String)session.getAttribute("p"))) {
      session.setAttribute("p", p);
    }
    return new ModelAndView("login", model);
}

然后写一个login.jsp页面:



<% String url = request.getLocalAddr() + ":" + request.getLocalPort(); %>

<%= url %>

传入参数:${p}


启动两个tomcat,一个通过http://127.0.0.1:8080/login?p=yori访问,

Spring-Session+Redis实现session共享_第1张图片

另一个通过http://127.0.0.1:8085/login

Spring-Session+Redis实现session共享_第2张图片​​​​​​​

 

你可能感兴趣的:(JAVA,session)