zoukankan      html  css  js  c++  java
  • 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   
     11   <!-- Spring版本号 -->
     12   <properties>
     13      <org.springframework.version>4.2.3.RELEASE</org.springframework.version>
     14   </properties>
     15   
     16  <dependencies>
     17      <dependency>
     18         <groupId>javax.servlet</groupId>
     19         <artifactId>servlet-api</artifactId>
     20         <version>2.5</version>
     21     </dependency>
     22     <dependency>
     23       <groupId>junit</groupId>
     24       <artifactId>junit</artifactId>
     25       <version>4.10</version>
     26       <scope>test</scope>
     27     </dependency>
     28     <dependency>
     29         <groupId>commons-logging</groupId>
     30         <artifactId>commons-logging</artifactId>
     31         <version>1.1.1</version>
     32     </dependency>
     33     <dependency>
     34         <groupId>log4j</groupId>
     35         <artifactId>log4j</artifactId>
     36         <version>1.2.16</version>
     37     </dependency>
     38     <dependency>
     39         <groupId>org.slf4j</groupId>
     40         <artifactId>slf4j-api</artifactId>
     41         <version>1.7.7</version>
     42     </dependency>
     43     <dependency>
     44         <groupId>org.slf4j</groupId>
     45         <artifactId>slf4j-log4j12</artifactId>
     46         <version>1.7.7</version>
     47     </dependency>
     48     <dependency>
     49         <groupId>redis.clients</groupId>
     50         <artifactId>jedis</artifactId>
     51         <version>2.9.0</version>
     52     </dependency>
     53     <dependency>
     54         <groupId>org.apache.commons</groupId>
     55         <artifactId>commons-pool2</artifactId>
     56         <version>2.4.2</version>
     57     </dependency>
     58     <dependency>
     59         <groupId>commons-fileupload</groupId>
     60         <artifactId>commons-fileupload</artifactId>
     61         <version>1.3.2</version>
     62     </dependency>
     63     <dependency>  
     64         <groupId>org.springframework.data</groupId>  
     65         <artifactId>spring-data-redis</artifactId>  
     66         <version>1.8.1.RELEASE</version>  
     67     </dependency>
     68     <dependency>
     69         <groupId>org.springframework</groupId>
     70         <artifactId>spring-context</artifactId>
     71         <version>${org.springframework.version}</version>
     72     </dependency>
     73     <dependency>
     74         <groupId>org.springframework</groupId>
     75         <artifactId>spring-core</artifactId>
     76         <version>${org.springframework.version}</version>
     77     </dependency>
     78     <dependency>
     79         <groupId>org.springframework</groupId>
     80         <artifactId>spring-beans</artifactId>
     81         <version>${org.springframework.version}</version>
     82     </dependency>
     83     <dependency>
     84         <groupId>org.springframework</groupId>
     85         <artifactId>spring-webmvc</artifactId>
     86         <version>${org.springframework.version}</version>
     87     </dependency>
     88     <dependency>
     89         <groupId>org.springframework</groupId>
     90         <artifactId>spring-orm</artifactId>
     91         <version>${org.springframework.version}</version>
     92     </dependency>
     93     <dependency>
     94         <groupId>org.springframework</groupId>
     95         <artifactId>spring-test</artifactId>
     96         <version>${org.springframework.version}</version>
     97     </dependency>
     98     <dependency>
     99         <groupId>org.springframework</groupId>
    100         <artifactId>spring-aspects</artifactId>
    101         <version>${org.springframework.version}</version>
    102     </dependency>
    103     <dependency>
    104         <groupId>org.springframework</groupId>
    105         <artifactId>spring-tx</artifactId>
    106         <version>${org.springframework.version}</version>
    107     </dependency>
    108   </dependencies>
    109   
    110   <build>
    111     <finalName>SpringRedisDemo</finalName>
    112   </build>
    113 </project>
    View Code

    二、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 
    21     <!-- jedis 配置 -->
    22     <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
    23         <property name="maxIdle" value="${redis.maxIdle}" />
    24         <property name="minIdle" value="${redis.minIdle}" />
    25         <property name="maxWaitMillis" value="${redis.maxWait}" />
    26         <property name="testOnBorrow" value="${redis.testOnBorrow}" />
    27     </bean>
    28     <!-- redis服务器中心 -->
    29     <bean id="connectionFactory"
    30         class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    31         <property name="poolConfig" ref="poolConfig" />
    32         <property name="port" value="${redis.port}" />
    33         <property name="hostName" value="${redis.host}" />
    34         <property name="password" value="${redis.pass}" />
    35         <property name="timeout" value="${redis.timeout}" />
    36     </bean>
    37     <!-- redis操作模板,面向对象的模板 -->
    38     <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
    39         <property name="connectionFactory" ref="connectionFactory" />
    40         <!-- 如果不配置Serializer,那么存储的时候只能使用String,如果用对象类型存储,那么会提示错误 -->
    41         <property name="keySerializer">
    42             <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
    43         </property>
    44         <property name="valueSerializer">
    45             <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
    46         </property>
    47     </bean>
    48 </beans>

    三、redis.properties

    1 redis.host=192.168.242.130
    2 redis.port=6379
    3 redis.pass=xbq123
    4 redis.timeout=-1
    5   
    6 redis.maxIdle=100
    7 redis.minIdle=8
    8 redis.maxWait=-1
    9 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     <!-- 视图解析器 -->
    19     <bean id="viewResolver"
    20         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    21         <property name="prefix" value="/" />
    22         <property name="suffix" value=".jsp"></property>
    23     </bean>
    24     
    25     <bean id="multipartResolver"
    26         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    27         <property name="defaultEncoding" value="UTF-8"/>  
    28         <property name="maxUploadSize" value="10000000"/>
    29     </bean>
    30 
    31     <!-- 使用注解的包,包括子集 -->
    32     <context:component-scan base-package="com.xbq.demo.controller"/>
    33 </beans>  

    五、web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns
    ="http://java.sun.com/xml/ns/javaee"
      xmlns:web
    ="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      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"> <display-name>SpringDemoTest</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- Spring配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:applicationContext.xml, </param-value> </context-param> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--spring监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止spring内存溢出监听器--> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- 添加对springmvc的支持 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>

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

     1 package com.xbq.demo.util;
     2 
     3 import javax.annotation.Resource;
     4 import org.springframework.data.redis.core.StringRedisTemplate;
     5 import org.springframework.stereotype.Component;
     6 
     7 /**
     8  * 操作 hash 的基本操作
     9  * @author xbq
    10  */
    11 @Component("redisCache")
    12 public class RedisCacheUtil {
    13 
    14     @Resource
    15     private StringRedisTemplate  redisTemplate;
    16     
    17     /**
    18      * 向Hash中添加值
    19      * @param key      可以对应数据库中的表名
    20       * @param field    可以对应数据库表中的唯一索引
    21      * @param value    存入redis中的值
    22      */
    23     public void hset(String key, String field, String value) {
    24         if(key == null || "".equals(key)){
    25             return ;
    26         }
    27         redisTemplate.opsForHash().put(key, field, value);
    28     }
    29     
    30     /**
    31      * 从redis中取出值
    32      * @param key
    33      * @param field
    34      * @return
    35      */
    36     public String hget(String key, String field){
    37         if(key == null || "".equals(key)){
    38             return null;
    39         }
    40         return (String) redisTemplate.opsForHash().get(key, field);
    41     }
    42     
    43     /**
    44      * 判断 是否存在 key 以及 hash key
    45      * @param key
    46      * @param field
    47      * @return
    48      */
    49     public boolean hexists(String key, String field){
    50         if(key == null || "".equals(key)){
    51             return false;
    52         }
    53         return redisTemplate.opsForHash().hasKey(key, field);
    54     }
    55     
    56     /**
    57      * 查询 key中对应多少条数据
    58      * @param key
    59      * @return
    60      */
    61     public long hsize(String key) {
    62         if(key == null || "".equals(key)){
    63             return 0L;
    64         }
    65         return redisTemplate.opsForHash().size(key);
    66     }
    67     
    68     /**
    69      * 删除
    70      * @param key
    71      * @param field
    72      */
    73     public void hdel(String key, String field) {
    74         if(key == null || "".equals(key)){
    75             return;
    76         }
    77         redisTemplate.opsForHash().delete(key, field);
    78     }
    79 }

    七、测试类

     1 package com.xbq.demo;
     2 
     3 import org.junit.Before;
     4 import org.junit.Test;
     5 import org.springframework.context.support.ClassPathXmlApplicationContext;
     6 import com.xbq.demo.util.RedisCacheUtil;
     7 
     8 /**
     9  * 测试
    10  */
    11 public class RedisTest {
    12 
    13     private RedisCacheUtil redisCache;
    14     private static String key;
    15     private static String field;
    16     private static String value;
    17     
    18     @Before
    19     public void setUp() throws Exception {
    20         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    21         context.start();
    22         redisCache = (RedisCacheUtil) context.getBean("redisCache");
    23     }
    24 
    25     // 初始化 数据
    26     static {
    27         key = "tb_student";
    28         field = "stu_name";
    29         value = "一系列的关于student的信息!";
    30     }
    31     
    32     // 测试增加数据
    33     @Test
    34     public void testHset() {
    35         redisCache.hset(key, field, value);
    36         System.out.println("数据保存成功!");
    37     }
    38 
    39     // 测试查询数据
    40     @Test
    41     public void testHget(){
    42         String re = redisCache.hget(key, field);
    43         System.out.println("得到的数据:" + re);
    44     }
    45     
    46     // 测试数据的数量
    47     @Test
    48     public void testHsize(){
    49         long size = redisCache.hsize(key);
    50         System.out.println("数量为:" + size);
    51     }
    52 }

    八、控制层 StudentController

     1 package com.xbq.demo.controller;
     2 
     3 import java.io.PrintWriter;
     4 import javax.annotation.Resource;
     5 import javax.servlet.http.HttpServletRequest;
     6 import javax.servlet.http.HttpServletResponse;
     7 import org.springframework.stereotype.Controller;
     8 import org.springframework.web.bind.annotation.RequestMapping;
     9 import com.xbq.demo.util.RedisCacheUtil;
    10 
    11 /**
    12  * 控制层
    13  * @author xbq
    14  */
    15 @Controller
    16 @RequestMapping("/student/")
    17 public class StudentController {
    18 
    19     @Resource
    20     private RedisCacheUtil redisCache;
    21     
    22     // 查询数据
    23     @RequestMapping("list")
    24     public String list(HttpServletResponse response, HttpServletRequest request){
    25         String re = redisCache.hget("tb_student", "stu_id");
    26         try {
    27             this.write(response, re);
    28         } catch (Exception e) {
    29             e.printStackTrace();
    30         }
    31         return null;
    32     }
    33     
    34     /**
    35      * 回写到页面上
    36      * @param response
    37      * @param o
    38      * @throws Exception
    39      */
    40     private void write(HttpServletResponse response, Object o) throws Exception{
    41         response.setContentType("text/html;charset=utf-8");
    42         PrintWriter out=response.getWriter();
    43         out.println(o.toString());
    44         out.flush();
    45         out.close();
    46     }
    47 }

    九、jsp页面

    <body>
        Hello World!
        <a href="${pageContext.request.contextPath}/student/list.do">显示数据</a>
    </body>

    十、源码下载

       点我下载

  • 相关阅读:
    git简单使用
    简单Spring和mybatis整合配置文件
    ASP.NET程序开发范例宝典
    C# DataSet和DataTable详解
    AOP
    匿名内部类
    数据库事务
    mybatis
    线程池
    单例模式
  • 原文地址:https://www.cnblogs.com/xbq8080/p/6739152.html
Copyright © 2011-2022 走看看