软件编程
位置:首页>> 软件编程>> java编程>> SpringBoot * 的使用

SpringBoot * 的使用

作者:久曲键  发布时间:2023-04-27 23:27:27 

标签:SpringBoot, ,

一、 * 简介

* 通常通过 * 的方式来执行。
* 的生命周期由IoC容器管理,可以通过注入等方式来获取其他Bean的实例,使用更方便。

二、 * 配置使用方式

1、过滤器 * 作用范围

SpringBoot * 的使用

2、 * 的使用

示例代码如下:


package com.rongrong.wiki.interceptor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

/**
 * * :Spring框架特有的,常用于登录校验,权限校验,请求日志打印 /login
 */
@Component
public class LogInterceptor implements HandlerInterceptor {

private static final Logger LOG = LoggerFactory.getLogger(LogInterceptor.class);

@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 打印请求信息
        LOG.info("------------- LogInterceptor 开始 -------------");
        LOG.info("请求地址: {} {}", request.getRequestURL().toString(), request.getMethod());
        LOG.info("远程地址: {}", request.getRemoteAddr());

long startTime = System.currentTimeMillis();
        request.setAttribute("requestStartTime", startTime);
        return true;
    }

@Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        long startTime = (Long) request.getAttribute("requestStartTime");
        LOG.info("------------- LogInterceptor 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime);
    }
}

将 * 加入到配置中,示例代码如下:


package com.rongrong.wiki.config;

import com.rongrong.wiki.interceptor.LogInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.Resource;

@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {

@Resource
   LogInterceptor loginInterceptor;

public void addInterceptors(InterceptorRegistry registry) {
       registry.addInterceptor(loginInterceptor)
               .addPathPatterns("/**")
               .excludePathPatterns("/login");
   }
}

重新编译启动,查看结果如下:

SpringBoot * 的使用

三、知识点总结

1、 * 的使用

  • 返回true会往后执行

  • 返回false会结束,可以利用这点来做权限拦截

  • addPathPatterns() ,要拦截请求

  • excludePathPatterns() ,排除请求,不拦截

2、 * 和过滤器的相同与不同

  • 都可以用来统一处理请求,比如:打印日志、权限控制

  • 过滤器依赖于servlet容器, * 依赖Spring框架

  • 过滤器不用注入其它类, * 可注入其它类,基于这一点,建议能用 * 的都用 *

来源:https://www.cnblogs.com/longronglang/p/15470625.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com