Spring Session入门(包含示例项目)
2016-07-18 18:13
399 查看
本指南描述了如何通过java配置来让Spring Session透明地使用Redis进行web项目的Session存储。
1、更新依赖
在使用Spring Session之前,你必须保证已经更新了项目依赖。如果你使用的是Maven,请确保添加了一下 dependencies。
2、Spring Java 配置
添加了必须的依赖之后,我们开始创建Spring配置的Java类。这个Spring配置类的作用是,通过创建一个Servlet Filter来让Spring Session实现代替原有的HttpSession实现。Spring 配置类如下:
① 通过@EnableRedisHttpSession注解,将会创建一个SessionRepositoryFilter的Spring Bean。通过这个Filter,能够把HttpSession替换成Spring Session的实现。在这个实例中,Spring
Session将会把Session保存到Redis。
② 然后我们创建了一个JedisConnectionFactory用来连接Spring Session和Redis。如果没有设置Redis的port和host,JedisConnectFactory将会使用默认的地址(localhost)和端口(6379)。具体能容可参考reference
documentation
3、Java Servlet 容器初始化
我们通过上面说的config类来创建了SessionRepositoryFilter的Spring,用来把HttpSession替换成Spring Session自定义实现的Session管理。但是,为了让这个Filter能发挥作用,Spring还需要对Config类进行加载。所以,最后我们得保证在Servlet容器(例如Tomcat)中,这个Filter能够对每一个请求产生作用。幸好,Spring
Session提供了一个有效的类(AbstractHttpSessionApplication Initializer),让这一系列步骤变得十分加单。
示例如下:
①第一步是创建一个继承AbstractHttpSessionApplicationInitializer的Java类。这能让上文中的创建的Filter Spring Bean注册到Servlet容器中,并且对所有的请求生效。
②AbstractHttpSessionApplicationInitializer 提供了让Spring 加载Config类的机制。
4、HttpSession 示例应用
指南提供了一个HttpSession的简单示例。为了让这个示例能正常运行,需要先在你的本地安装Redis 2.8+,默认端口为6379,让JedisConnectionFactory能够连接到一个Redis Server。
示例代码如下:
在Servlet容器中部署示例应用,然后通过浏览器访问http://localhost:8080/springsessionDemo/session。访问之后即可以在Redis中看到Session被保存。
示例项目下载地址:http://pan.baidu.com/s/1kVdIzCr
1、更新依赖
在使用Spring Session之前,你必须保证已经更新了项目依赖。如果你使用的是Maven,请确保添加了一下 dependencies。
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.4.1.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.5.2</version> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session</artifactId> <version>1.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.0.7.RELEASE</version> </dependency> </dependencies> |
添加了必须的依赖之后,我们开始创建Spring配置的Java类。这个Spring配置类的作用是,通过创建一个Servlet Filter来让Spring Session实现代替原有的HttpSession实现。Spring 配置类如下:
@EnableRedisHttpSession ① public class Config { @Bean public JedisConnectionFactory connectionFactory(){ JedisConnectionFactory connect = new JedisConnectionFactory(); ② connect.setPort(6379); connect.setHostName("192.168.99.100"); return connect; } } |
Session将会把Session保存到Redis。
② 然后我们创建了一个JedisConnectionFactory用来连接Spring Session和Redis。如果没有设置Redis的port和host,JedisConnectFactory将会使用默认的地址(localhost)和端口(6379)。具体能容可参考reference
documentation
3、Java Servlet 容器初始化
我们通过上面说的config类来创建了SessionRepositoryFilter的Spring,用来把HttpSession替换成Spring Session自定义实现的Session管理。但是,为了让这个Filter能发挥作用,Spring还需要对Config类进行加载。所以,最后我们得保证在Servlet容器(例如Tomcat)中,这个Filter能够对每一个请求产生作用。幸好,Spring
Session提供了一个有效的类(AbstractHttpSessionApplication Initializer),让这一系列步骤变得十分加单。
示例如下:
public class Initializer extends AbstractHttpSessionApplicationInitializer { ① public Initializer(){ super(Config.class); ② } } |
②AbstractHttpSessionApplicationInitializer 提供了让Spring 加载Config类的机制。
4、HttpSession 示例应用
指南提供了一个HttpSession的简单示例。为了让这个示例能正常运行,需要先在你的本地安装Redis 2.8+,默认端口为6379,让JedisConnectionFactory能够连接到一个Redis Server。
示例代码如下:
@WebServlet("/session") public class SessionServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String attributeName = req.getParameter("userName"); String attributeValue = req.getParameter("tiger"); req.getSession().setAttribute(attributeName, attributeValue); resp.sendRedirect(req.getContextPath() + "/"); } private static final long serialVersionUID = 2878267318695777395L; } |
示例项目下载地址:http://pan.baidu.com/s/1kVdIzCr
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- redis安装问题小结
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序