在负载均衡情况下,如果用户访问不同的机器,如果没有做session同步,用户就会被提出,这样用户体验非常不好,所以我们很远必要做session同步,把session放到reids缓存服务器就能很好的解决问题。下面是代码简单的实现。
一、配置web.xml过滤器:
[html] view plain copy
- <filter>
- <filter-name>sessionFilter</filter-name>
- <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>sessionFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
二、配置对应的过滤器名字:
[html] view plain copy
- <bean id="sessionFilter" class="com.plateno.interceptor.SessionFilter">
- <property name="redisTemplate" ref="redisTemplate"/>
- </bean>
三、SessionFilter的实现:
[java] view plain copy
- public class SessionFilter extends GenericFilterBean {
- private RedisTemplate redisTemplate;
- @Override
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- System.out.println("filter");
- HttpServletRequest re = (HttpServletRequest)request;
- HttpServletResponse res = (HttpServletResponse)response;
- TerryHttpServletRequestWrapper wrapper = new TerryHttpServletRequestWrapper(re,res,redisTemplate);
- chain.doFilter(wrapper, response);
- }
- public RedisTemplate getRedisTemplate() {
- return redisTemplate;