包引入(maven dependency):
<dependency> <groupId>me.hao0</groupId> <artifactId>session-redis</artifactId> <version>1.0.0</version> </dependency>
依赖包,注意引入项目时是否需要排除(exclude if necessary):
<dependency> <groupId>me.hao0</groupId> <artifactId>session-api</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.2</version> </dependency>
Servlet-Filter机制(Mechanism)
SessionFilter如何工作(How SessionFilter Works):
使用(Usage):
在web.xml中配置Filter(Config Filter in web.xml):
<filter> <filter-name>RedisSessionFilter</filter-name> <filter-class>me.hao0.session.redis.RedisSessionFilter</filter-class> <init-param> <!-- cookie中的sessionId名称 --><!-- the session id in cookie --> <param-name>sessionCookieName</param-name> <param-value>scn</param-value> </init-param> <init-param> <!-- session过期时间(秒) --><!-- session expired time in seconds --> <param-name>maxInactiveInterval</param-name> <param-value>1800</param-value> </init-param> <init-param> <!-- cookie上下文路径 --><!-- cookie context path --> <param-name>cookieContextPath</param-name> <param-value>/</param-value> </init-param> <init-param> <!-- cookie域名 --><!-- cookie domain --> <param-name>cookieDomain</param-name> <param-value>session.com</param-value> </init-param> <init-param> <!-- cookie保存时间(秒) --><!-- cookie lifetime in seconds --> <param-name>cookieMaxAge</param-name> <param-value>1800</param-value> </init-param>
```ruby # redis model: is sentinel or not, default is not sentinel # session.redis.mode= # session serialize class, default is JsonSerializer # session.serializer= # redis host session.redis.host=localhost # redis port session.redis.port=6379 # redis max connections, default is 5 # session.redis.pool.max.total=5 # redis max idle connections, default is 2 # session.redis.pool.max.idle=2 # redis session id prefix session.redis.prefix=sid ```Demo:
配置**/etc/hosts**(config /etc/hosts):
127.0.0.1demo1.session.comdemo2.session.com
假如使用nginx作web代理,配置server(config server if use nginx):
upstreamsession_server{serverlocalhost:10000;serverlocalhost:10001;}server{listen80;server_namedemo1.session.comdemo2.session.com;location / {proxy_passhttp://session_server;proxy_set_headerX-Real-IP $remote_addr;proxy_set_headerX-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_headerHost $http_host;}}
运行session-demo(run session-demo):
# demo1.session.com mvn clean jetty:run -Dmaven.test.skip -Djetty.port=10000 # demo2.session.com mvn clean jetty:run -Dmaven.test.skip -Djetty.port=10001
测试(Test):
用户首页(user index):
http://demo1.session.com/users/index http://demo2.session.com/users/index
用户登录(user login):
http://demo1.session.com/users/login?username=admin&passwd=admin http://demo2.session.com/users/login?username=admin&passwd=admin
用户登出(user logout):
http://demo1.session.com/users/logout http://demo2.session.com/users/logout
使用其它的存储,如Memcache(Use other storage, Memcache, etc):
- 继承SessionFilter(inherit SessionFilter);
- 实现SessionManager(implement SessionManager)。
相关文档(References):
历史版本(Release History):
1.0.0:
- 基本功能实现(basic implementation)。
你是好人:
Latest commit
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|



