spring session实现session统一管理(jdbc实现)

阅读更多

最近在看一些关于spring session 的知识,特做一个笔记记录一下。

在项目中经常会遇到这么一种情况,同一个web项目有时需要部署多份,然后使用nginx实现负载均衡,那么遇到的问题就是,部署多份之后,如何实现一个session的共享功能。此时就可以使用spring session来实现。

 参考网址:http://docs.spring.io/spring-session/docs/current/reference/html5/guides/httpsession-jdbc-xml.html

1.引入spring session 的jar包依赖。

 



	4.0.0
	
		com.huan.spring
		spring-session-parent
		0.0.1-SNAPSHOT
	
	02_spring_session_jdbc
	war
	02_spring_session_jdbc Maven Webapp
	http://maven.apache.org
	
		
			org.springframework
			spring-web
		
		
			org.springframework.session
			spring-session-jdbc
			pom
		
		
			com.alibaba
			druid
		
		
			com.oracle
			ojdbc14
		
	
	
		02_spring_session_jdbc
	

   spring 的版本:4.1.5.RELEASE spring session-jdbc的版本:1.2.0.RELEASE

 

二、配置spring session的配置文件



	
	
		
		
		
		
		
	
	
	
		
	

 三、配置web.xml



	
		contextConfigLocation
		
			classpath:spring-session.xml
		
	
	
		org.springframework.web.context.ContextLoaderListener
	

	
		springSessionRepositoryFilter
		org.springframework.web.filter.DelegatingFilterProxy
	
	
		springSessionRepositoryFilter
		/*
		REQUEST
		ERROR
	

 四、编写测试代码

1.登录界面(login.jsp)


	
用户名:
密码:

 2.后台的逻辑处理

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = -8455306719565291102L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) resp;
		request.setCharacterEncoding("UTF-8");
		String loginName = request.getParameter("loginName");
		String password = request.getParameter("password");
		request.getSession().setAttribute("login", true);
		request.getSession().setAttribute(loginName, password);
		response.sendRedirect(request.getContextPath() + "/show.jsp");
	}
}

 3.展示界面(show.jsp ---> 没有登录访问次界面,直接跳到登录界面)


	输出session中的值:
	<%
	if (request.getSession().getAttribute("login") == null) {
		response.sendRedirect(request.getContextPath() + "/login.jsp");
	}
%>
	<%
		Enumeration enumeration = request.getSession().getAttributeNames();
		while (enumeration.hasMoreElements()) {
			String key = enumeration.nextElement();
			Object value = request.getSession().getAttribute(key);
			out.println(key + " --- " + value);
		}
	%>
	
----------------- jsessionId:<%=request.getSession().getId() %> ---------------------- <%=request.getRemoteAddr()%> <%=request.getRemotePort()%> <%=request.getRemoteHost()%> <%=request.getRemoteUser()%> <%=request.getHeader("X-Real-IP")%> <%=request.getHeader("Host")%> <%=request.getHeader("X-Forwarded-For")%> <%=request.getLocalPort()%>

 

4.nginx的简单配置 --- 启动ngnix
spring session实现session统一管理(jdbc实现)_第1张图片

 

5.分别启动2个tomcat容器


6.修改其中一个tomcat容器中的show.jsp的值,随便加一个内容,以示区分。

 

7.页面上访问


spring session实现session统一管理(jdbc实现)_第2张图片
 
 8.可以到oracle数据区中进行查询,用到的表

select * from SPRING_SESSION t;
select * from SPRING_SESSION_ATTRIBUTES t;

 9.用到的sql语句所在的jar包目录


spring session实现session统一管理(jdbc实现)_第3张图片
 

  • spring session实现session统一管理(jdbc实现)_第4张图片
  • 大小: 12.7 KB
  • spring session实现session统一管理(jdbc实现)_第5张图片
  • 大小: 9 KB
  • spring session实现session统一管理(jdbc实现)_第6张图片
  • 大小: 48.9 KB
  • spring session实现session统一管理(jdbc实现)_第7张图片
  • 大小: 35.1 KB
  • 查看图片附件

你可能感兴趣的:(spring session实现session统一管理(jdbc实现))