Redis(六)-- SpringMVC整合Redis

一、pom.xml

   
   
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  3. <modelVersion>4.0.0</modelVersion>

  4. <groupId>com.xbq.demo</groupId>

  5. <artifactId>SpringRedisDemo</artifactId>

  6. <packaging>war</packaging>

  7. <version>0.0.1-SNAPSHOT</version>

  8. <name>SpringRedisDemo Maven Webapp</name>

  9. <url>http://maven.apache.org</url>

  10. <!-- Spring版本号 -->

  11. <properties>

  12. <org.springframework.version>4.2.3.RELEASE</org.springframework.version>

  13. </properties>

  14. <dependencies>

  15. <dependency>

  16. <groupId>javax.servlet</groupId>

  17. <artifactId>servlet-api</artifactId>

  18. <version>2.5</version>

  19. </dependency>

  20. <dependency>

  21. <groupId>junit</groupId>

  22. <artifactId>junit</artifactId>

  23. <version>4.10</version>

  24. <scope>test</scope>

  25. </dependency>

  26. <dependency>

  27. <groupId>commons-logging</groupId>

  28. <artifactId>commons-logging</artifactId>

  29. <version>1.1.1</version>

  30. </dependency>

  31. <dependency>

  32. <groupId>log4j</groupId>

  33. <artifactId>log4j</artifactId>

  34. <version>1.2.16</version>

  35. </dependency>

  36. <dependency>

  37. <groupId>org.slf4j</groupId>

  38. <artifactId>slf4j-api</artifactId>

  39. <version>1.7.7</version>

  40. </dependency>

  41. <dependency>

  42. <groupId>org.slf4j</groupId>

  43. <artifactId>slf4j-log4j12</artifactId>

  44. <version>1.7.7</version>

  45. </dependency>

  46. <dependency>

  47. <groupId>redis.clients</groupId>

  48. <artifactId>jedis</artifactId>

  49. <version>2.9.0</version>

  50. </dependency>

  51. <dependency>

  52. <groupId>org.apache.commons</groupId>

  53. <artifactId>commons-pool2</artifactId>

  54. <version>2.4.2</version>

  55. </dependency>

  56. <dependency>

  57. <groupId>commons-fileupload</groupId>

  58. <artifactId>commons-fileupload</artifactId>

  59. <version>1.3.2</version>

  60. </dependency>

  61. <dependency>

  62. <groupId>org.springframework.data</groupId>

  63. <artifactId>spring-data-redis</artifactId>

  64. <version>1.8.1.RELEASE</version>

  65. </dependency>

  66. <dependency>

  67. <groupId>org.springframework</groupId>

  68. <artifactId>spring-context</artifactId>

  69. <version>${org.springframework.version}</version>

  70. </dependency>

  71. <dependency>

  72. <groupId>org.springframework</groupId>

  73. <artifactId>spring-core</artifactId>

  74. <version>${org.springframework.version}</version>

  75. </dependency>

  76. <dependency>

  77. <groupId>org.springframework</groupId>

  78. <artifactId>spring-beans</artifactId>

  79. <version>${org.springframework.version}</version>

  80. </dependency>

  81. <dependency>

  82. <groupId>org.springframework</groupId>

  83. <artifactId>spring-webmvc</artifactId>

  84. <version>${org.springframework.version}</version>

  85. </dependency>

  86. <dependency>

  87. <groupId>org.springframework</groupId>

  88. <artifactId>spring-orm</artifactId>

  89. <version>${org.springframework.version}</version>

  90. </dependency>

  91. <dependency>

  92. <groupId>org.springframework</groupId>

  93. <artifactId>spring-test</artifactId>

  94. <version>${org.springframework.version}</version>

  95. </dependency>

  96. <dependency>

  97. <groupId>org.springframework</groupId>

  98. <artifactId>spring-aspects</artifactId>

  99. <version>${org.springframework.version}</version>

  100. </dependency>

  101. <dependency>

  102. <groupId>org.springframework</groupId>

  103. <artifactId>spring-tx</artifactId>

  104. <version>${org.springframework.version}</version>

  105. </dependency>

  106. </dependencies>

  107. <build>

  108. <finalName>SpringRedisDemo</finalName>

  109. </build>

  110. </project>

二、applicaltionContext.xml

   
   
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4. xmlns:p="http://www.springframework.org/schema/p"

  5. xmlns:aop="http://www.springframework.org/schema/aop"

  6. xmlns:context="http://www.springframework.org/schema/context"

  7. xmlns:jee="http://www.springframework.org/schema/jee"

  8. xmlns:tx="http://www.springframework.org/schema/tx"

  9. xmlns:cache="http://www.springframework.org/schema/cache"

  10. xsi:schemaLocation="

  11. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

  12. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

  13. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

  14. http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd

  15. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd ">

  16. <!-- 自动扫描 -->

  17. <context:component-scan base-package="com.xbq.demo.util"/>

  18. <!-- 加载文件 -->

  19. <context:property-placeholder location="classpath:redis.properties" />

  20. <!-- jedis 配置 -->

  21. <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">

  22. <property name="maxIdle" value="${redis.maxIdle}" />

  23. <property name="minIdle" value="${redis.minIdle}" />

  24. <property name="maxWaitMillis" value="${redis.maxWait}" />

  25. <property name="testOnBorrow" value="${redis.testOnBorrow}" />

  26. </bean>

  27. <!-- redis服务器中心 -->

  28. <bean id="connectionFactory"

  29. class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">

  30. <property name="poolConfig" ref="poolConfig" />

  31. <property name="port" value="${redis.port}" />

  32. <property name="hostName" value="${redis.host}" />

  33. <property name="password" value="${redis.pass}" />

  34. <property name="timeout" value="${redis.timeout}" />

  35. </bean>

  36. <!-- redis操作模板,面向对象的模板 -->

  37. <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">

  38. <property name="connectionFactory" ref="connectionFactory" />

  39. <!-- 如果不配置Serializer,那么存储的时候只能使用String,如果用对象类型存储,那么会提示错误 -->

  40. <property name="keySerializer">

  41. <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />

  42. </property>

  43. <property name="valueSerializer">

  44. <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />

  45. </property>

  46. </bean>

  47. </beans>

三、redis.properties

   
   
  1. redis.host=192.168.242.130

  2. redis.port=6379

  3. redis.pass=xbq123

  4. redis.timeout=-1

  5. redis.maxIdle=100

  6. redis.minIdle=8

  7. redis.maxWait=-1

  8. redis.testOnBorrow=true

四、spring-mvc.xml

   
   
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <beans xmlns="http://www.springframework.org/schema/beans"

  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  4. xmlns:p="http://www.springframework.org/schema/p"

  5. xmlns:aop="http://www.springframework.org/schema/aop"

  6. xmlns:context="http://www.springframework.org/schema/context"

  7. xmlns:jee="http://www.springframework.org/schema/jee"

  8. xmlns:tx="http://www.springframework.org/schema/tx"

  9. xmlns:mvc="http://www.springframework.org/schema/mvc"

  10. xsi:schemaLocation="

  11. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

  12. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

  13. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd

  14. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

  15. http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd

  16. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

  17. <!-- 视图解析器 -->

  18. <bean id="viewResolver"

  19. class="org.springframework.web.servlet.view.InternalResourceViewResolver">

  20. <property name="prefix" value="/" />

  21. <property name="suffix" value=".jsp"></property>

  22. </bean>

  23. <bean id="multipartResolver"

  24. class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

  25. <property name="defaultEncoding" value="UTF-8"/>

  26. <property name="maxUploadSize" value="10000000"/>

  27. </bean>

  28. <!-- 使用注解的包,包括子集 -->

  29. <context:component-scan base-package="com.xbq.demo.controller"/>

  30. </beans>

五、web.xml

   
   
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  3.   xmlns="http://java.sun.com/xml/ns/javaee"

  4.   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

  5.   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  6. <display-name>SpringDemoTest</display-name>

  7. <welcome-file-list>

  8. <welcome-file>index.jsp</welcome-file>

  9. </welcome-file-list>

  10. <!-- Spring配置文件 -->

  11. <context-param>

  12. <param-name>contextConfigLocation</param-name>

  13. <param-value>

  14. classpath*:applicationContext.xml,

  15. </param-value>

  16. </context-param>

  17. <!-- 编码过滤器 -->

  18. <filter>

  19. <filter-name>encodingFilter</filter-name>

  20. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

  21. <async-supported>true</async-supported>

  22. <init-param>

  23. <param-name>encoding</param-name>

  24. <param-value>UTF-8</param-value>

  25. </init-param>

  26. </filter>

  27. <filter-mapping>

  28. <filter-name>encodingFilter</filter-name>

  29. <url-pattern>/*</url-pattern>

  30. </filter-mapping>

  31. <!--spring监听器-->

  32. <listener>

  33. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  34. </listener>

  35. <!-- 防止spring内存溢出监听器-->

  36. <listener>

  37. <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

  38. </listener>

  39. <!-- 添加对springmvc的支持 -->

  40. <servlet>

  41. <servlet-name>springMVC</servlet-name>

  42. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  43. <init-param>

  44. <param-name>contextConfigLocation</param-name>

  45. <param-value>classpath*:spring-mvc.xml</param-value>

  46. </init-param>

  47. <load-on-startup>1</load-on-startup>

  48. <async-supported>true</async-supported>

  49. </servlet>

  50. <servlet-mapping>

  51. <servlet-name>springMVC</servlet-name>

  52. <url-pattern>*.do</url-pattern>

  53. </servlet-mapping>

  54. </web-app>

六、封装一个操作hash基本数据类型的工具类

   
   
  1. package com.xbq.demo.util;

  2. import javax.annotation.Resource;

  3. import org.springframework.data.redis.core.StringRedisTemplate;

  4. import org.springframework.stereotype.Component;

  5. /**

  6. * 操作 hash 的基本操作

  7. * @author xbq

  8. */

  9. @Component("redisCache")

  10. public class RedisCacheUtil {

  11. @Resource

  12. private StringRedisTemplate redisTemplate;

  13. /**

  14. * 向Hash中添加值

  15. * @param key 可以对应数据库中的表名

  16. * @param field 可以对应数据库表中的唯一索引

  17. * @param value 存入redis中的值

  18. */

  19. public void hset(String key, String field, String value) {

  20. if(key == null || "".equals(key)){

  21. return ;

  22. }

  23. redisTemplate.opsForHash().put(key, field, value);

  24. }

  25. /**

  26. * 从redis中取出值

  27. * @param key

  28. * @param field

  29. * @return

  30. */

  31. public String hget(String key, String field){

  32. if(key == null || "".equals(key)){

  33. return null;

  34. }

  35. return (String) redisTemplate.opsForHash().get(key, field);

  36. }

  37. /**

  38. * 判断 是否存在 key 以及 hash key

  39. * @param key

  40. * @param field

  41. * @return

  42. */

  43. public boolean hexists(String key, String field){

  44. if(key == null || "".equals(key)){

  45. return false;

  46. }

  47. return redisTemplate.opsForHash().hasKey(key, field);

  48. }

  49. /**

  50. * 查询 key中对应多少条数据

  51. * @param key

  52. * @return

  53. */

  54. public long hsize(String key) {

  55. if(key == null || "".equals(key)){

  56. return 0L;

  57. }

  58. return redisTemplate.opsForHash().size(key);

  59. }

  60. /**

  61. * 删除

  62. * @param key

  63. * @param field

  64. */

  65. public void hdel(String key, String field) {

  66. if(key == null || "".equals(key)){

  67. return;

  68. }

  69. redisTemplate.opsForHash().delete(key, field);

  70. }

  71. }

七、测试类

   
   
  1. package com.xbq.demo;

  2. import org.junit.Before;

  3. import org.junit.Test;

  4. import org.springframework.context.support.ClassPathXmlApplicationContext;

  5. import com.xbq.demo.util.RedisCacheUtil;

  6. /**

  7. * 测试

  8. */

  9. public class RedisTest {

  10. private RedisCacheUtil redisCache;

  11. private static String key;

  12. private static String field;

  13. private static String value;

  14. @Before

  15. public void setUp() throws Exception {

  16. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

  17. context.start();

  18. redisCache = (RedisCacheUtil) context.getBean("redisCache");

  19. }

  20. // 初始化 数据

  21. static {

  22. key = "tb_student";

  23. field = "stu_name";

  24. value = "一系列的关于student的信息!";

  25. }

  26. // 测试增加数据

  27. @Test

  28. public void testHset() {

  29. redisCache.hset(key, field, value);

  30. System.out.println("数据保存成功!");

  31. }

  32. // 测试查询数据

  33. @Test

  34. public void testHget(){

  35. String re = redisCache.hget(key, field);

  36. System.out.println("得到的数据:" + re);

  37. }

  38. // 测试数据的数量

  39. @Test

  40. public void testHsize(){

  41. long size = redisCache.hsize(key);

  42. System.out.println("数量为:" + size);

  43. }

  44. }

八、控制层 StudentController

   
   
  1. package com.xbq.demo.controller;

  2. import java.io.PrintWriter;

  3. import javax.annotation.Resource;

  4. import javax.servlet.http.HttpServletRequest;

  5. import javax.servlet.http.HttpServletResponse;

  6. import org.springframework.stereotype.Controller;

  7. import org.springframework.web.bind.annotation.RequestMapping;

  8. import com.xbq.demo.util.RedisCacheUtil;

  9. /**

  10. * 控制层

  11. * @author xbq

  12. */

  13. @Controller

  14. @RequestMapping("/student/")

  15. public class StudentController {

  16. @Resource

  17. private RedisCacheUtil redisCache;

  18. // 查询数据

  19. @RequestMapping("list")

  20. public String list(HttpServletResponse response, HttpServletRequest request){

  21. String re = redisCache.hget("tb_student", "stu_id");

  22. try {

  23. this.write(response, re);

  24. } catch (Exception e) {

  25. e.printStackTrace();

  26. }

  27. return null;

  28. }

  29. /**

  30. * 回写到页面上

  31. * @param response

  32. * @param o

  33. * @throws Exception

  34. */

  35. private void write(HttpServletResponse response, Object o) throws Exception{

  36. response.setContentType("text/html;charset=utf-8");

  37. PrintWriter out=response.getWriter();

  38. out.println(o.toString());

  39. out.flush();

  40. out.close();

  41. }

  42. }

十、源码下载

点击阅读原文可以下载源码哦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值