세션 세션 관리
웹 프로젝트 개발에서, 세션 세션 관리 레코드에게 사용자의 상태 또는 관련 데이터를 저장하기위한 매우 중요한 부분이며, 일반적으로 세션이 컨테이너 (바람둥이) 저장 및 관리에 대한 책임을 언급하지만, 프로젝트 배포의 경우 여러 톰캣은 큰 문제가 다음 세션 관리 1 세션은 서버에 사용자가 로그인 한 톰캣 같은 여러 톰캣 공유하지만 할 수없는 경우 톰캣 B 인해 톰캣 B에로드 밸런싱 점프 서버와 실패가 아니라 사용자의 로그인 정보, 세션, 사용자 종료는 로그인, 2, 컨테이너가 종료하거나 세션의 실패로 이어질 것 바람둥이 세션을 다시 시작하면, 프로젝트가 여러 바람둥이에 배포 그러므로, 당신이 공유 세션을 해결하기 위해 필요 문제;
프로필
하나의 pom.xml <의존성> <의 groupId> org.springframework.session </의 groupId> <artifactId를> 스프링 세션 데이터 레디 스 </ artifactId를> <version>은 1.3.1.RELEASE </ 버전> </ 의존성> 2 web.xml의 <필터> <필터 이름> springSessionRepositoryFilter </ 필터 이름> <필터 클래스> org.springframework.web.filter.DelegatingFilterProxy </ 필터 클래스> </ 필터> <필터 매핑> <필터 - 이름> springSessionRepositoryFilter </ 필터 이름> <URL 패턴> *. 할 </ URL 패턴> </ 필터 매핑> <수신기> <청취자 클래스> org.springframework.web.context.ContextLoaderListener </ 청취자 클래스> </ 청취자> <컨텍스트 PARAM> <PARAM 이름>는 contextConfigLocation </ PARAM 이름> <PARAM 값> 클래스 경로 : applicationContext.xml </ PARAM 값> </ 상황 PARAM> 3 applicationContext.xml <컨텍스트 : 주석 - 설정 /> <! -初始化一切봄 세션准备,且把springSessionFilter放入IOC -> <콩 ID = "redisHttpSessionConfiguration" 클래스 = "org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"> <속성 이름 = "maxInactiveIntervalInSeconds"값 = "300"/> </ 빈> <! -配置쿠키信息-> <콩 클래스= "org.springframework.session.web.http.DefaultCookieSerializer"ID = "defaultCookieSerializer"> <속성 명 = "cookieName"값 = "SESSION_NAME"/> <속성 명 = "는 domainName"값 = "wangjun.com"/> <속성 이름 = "useHttpOnlyCookie"값 = "진정한"/> <속성 이름 = "cookiePath"값 = "/"/> <속성 이름 = "cookieMaxAge"값 = "31536000"/> </ 빈> <! -配置레디 스连接池信息-> <콩 ID = "jedisPoolConfig" 클래스 = "redis.clients.jedis.JedisPoolConfig"> <속성 이름 = "maxTotal"값 = /> "(20)는" </ 빈> ! 레디 스 접속 설정 정보 - -> < <빈 ID = "jedisConnectionFactory" 클래스= "org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <속성 명 = "여기서 hostName"값 = "127.0.0.1"/> <속성 명 = "포트"값 = "6379"/> <속성 이름 = "poolConfig"REF = "jedisPoolConfig"/> </ 콩>
코드 테스트
공용 클래스 SessionServlet는 연장 HttpServlet을가 { 보호 공극 의 doPost (HttpServletRequest 요청, HttpServletResponse 응답) 발생 ServletException을 IOException을 { 이 .doGet (요청, 응답); } 보호 공극 의 doGet (HttpServletRequest의 요청 HttpServletResponse를 대응) 발생 ServletException을 IOException을 { 문자열 sesssionID = . request.getSession ()를 getId (); // 部署两份,把这个地方8081改成8080就行了,只是为了区分 . response.getWriter () ( "8081 서버 세션 ID"+ 쓰기 sesssionID을); } }