拦截器,Redis数据库

一:定义拦截器

1.1:创建java类继承自WebMvcConfigurerAdapetr,并通过@Configruation注解进行标注

@Configuration
public class MyInterception extends WebMvcConfigurerAdapter {

1.2、重写父类addInterceptors方法,创建HandlerInterceptor对象

@Override
    public void addInterceptors(InterceptorRegistry registry) {
        HandlerInterceptor handlerInterceptor = new HandlerInterceptor() {
            /**
             * 拦截请求的方法
             */
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
                System.out.println("****************");
                return true; //true=放行;false=拦截(直接大白页)
            }

            @Override
            public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

            }

            @Override
            public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

            }
        };

1.3、在addInterceptors方法中,将HandlerInterceptor对象放到InterceptorRegistry对象中,并通过addPathPatterns方法定义拦截规则

registry.addInterceptor(handlerInterceptor).addPathPatterns("/**"); //拦截一切请求

二、全部源代码

package demo.interceptor;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerAdapter;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Configuration
public class MyInterceptor extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        HandlerInterceptor handlerInterceptor = new HandlerInterceptor() {
            /**
             * 拦截请求的方法
             */
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
                System.out.println("****************");
                return true; //true=放行;false=拦截(直接大白页)
            }

            @Override
            public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

            }

            @Override
            public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

            }
        };
        registry.addInterceptor(handlerInterceptor).addPathPatterns("/**");
    }

}

二、window环境下redis安装

redis的发行版应用于Linux操作系统,并没有提供windows操作系统的版本,网上流传的windows版本的redis属于linux的移植版本,该版本在windows操作系统上可以直接双击运行,无需配置任何环境

 部分电脑出现双击之后无法运行的情况,请使用命令行运行:

redis-server.exe redis.windows.conf

三、使用jedis操作redis

1.1、创建web项目并在pom.xml中添加jedis依赖

<!-- jedis依赖,访问redis数据库-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

<!-- jedis依赖,访问redis数据库-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

3.2、创建Jedis对象向Redis数据库中保存数据

Redis是以键值对的形式保存数据的,这点和Java的HashMap很相似。

//创建Jedis对象用于操作redis数据库
        Jedis jedis = new Jedis("127.0.0.1", 6379); //访问到redis服务器
        //jedis.auth("Aa123123."); //设置范围redis服务器的密码

        jedis.set("hello", "hello Redis"); //向redis中保存数据,以键值对的形式,思路和HashMap一致

        //释放资源
        jedis.close();

//创建Jedis对象用于操作redis数据库
        Jedis jedis = new Jedis("127.0.0.1", 6379); //访问到redis服务器
        //jedis.auth("Aa123123."); //设置范围redis服务器的密码

        jedis.set("hello", "hello Redis"); //向redis中保存数据,以键值对的形式,思路和HashMap一致

        //释放资源
        jedis.close();

3.3、创建Jedis对象从Redis数据库中获取数据

   //创建Jedis对象,访问Redis服务器(数据库)
        Jedis jedis = new Jedis("127.0.0.1", 6379);

        //通过key从reids中读取数据
        String str = jedis.get("hello");

        //释放资源
        jedis.close();

3.4、创建Jedis对象从Redis数据库删除数据

Spring Boot 和 Redis拦截器主要用于在 Spring Boot 应用中集成 Redis 数据库操作时提供额外的功能或校验。Spring Boot 提供了对 Redis 的支持,允许通过 Spring Data Redis 或 Jedis 这样的库来进行数据操作。拦截器在这种场景下通常用于: 1. **缓存管理**:可以创建一个 Redis 缓存拦截器,对特定的操作结果进行缓存,提高应用性能。当下次请求相同的键值时,直接从缓存读取,而不是每次都去Redis查询。 2. **日志记录**:拦截Redis的操作,例如所有成功的 put、get 操作后自动记录到日志中,便于追踪和调试。 3. **权限验证**:如果需要基于 Redis 存储用户状态或角色信息,可以在获取数据前检查是否有访问权限。 4. **统计分析**:收集 Redis 中的数据使用情况,如命中率、过期策略等。 在Spring Boot中实现这样的拦截器,你可以自定义一个实现了`org.springframework.data.redis.connection.RedisCallback`或`JedisTemplate`回调接口的类,并利用`@Around`注解在方法上,然后在`doInRedis`上下文中执行你的业务逻辑。 ```java @Component public class RedisInterceptor { @Around("execution(* com.example.service.RedisService.*(..))") public Object around(RedisOperations redis, Method method, Object[] args) { // 自定义操作前处理 beforeMethod(redis, method, args); try { return redis.execute(method, args); // 执行原方法 } finally { // 自定义操作后处理 afterMethod(redis, method, args); } } private void beforeMethod(RedisOperations redis, Method method, Object[] args) { // 日志记录或权限检查等 } private void afterMethod(RedisOperations redis, Method method, Object[] args) { // 缓存更新或统计数据收集等 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值