12-1 Springboot过滤拦截和日志处理

Springboot的日志

默认日志框架:logback

1.日志以文件的形式的保存 使用logback框架 ->(运行日志,开发中用于调式的,在开发中作为系统运行日志记录故障,从而追究问题根源)

2.日志相关的表 记录用户相关操作信息 -> 需要我们去处理  -> 作为系统功能存在

日志配置:

SpringBoot默认日志输出目的地: console(控制台)

在生产环境,日志肯定不是在控制台

设置日志输出目的地:文件
 

问题:
这个项目所有的日志保存在一个文件,系统运行越久,日志文件中内容越多,打开越慢,找特定日期的日志文件困难

解决方案:

每一天产生一个日志文件,根据每个日志文件级别单独再创建一个文件

想实现解决方案效果,默认配置无法实现

logback框架允许我们编写配置文件:推荐使用xml

logback运行流程:
1. logback会在类路径下寻找名为logback-test.xml的文件
2。如果没有找到,logback会继续寻找名为logback.groovy的文件

3.如果没有找到,logback会继续寻找名为logback.xml的文件

4.如果没有找到,将会在类路径下寻找文件META-INFO/services/ch.qos.logback.classic.spi.Configurator,该文件的内容为实现了Configurator接口的实现类的全限定类名
5.如果以上都没有成功,logback会通过BasicConfigurator为自己进行配置,并且日志将会全部在控制台打印出来

SpringBoot加载logback的配置文件默认默认会加载classpath:logback-spring.xml或者classpath:logback-spring.groovy或者:classpath:logback.xml或者: classpath: logback-test.xml

如果logback的配置文件:不是logback-spring.xml,logback-test.xmL,logback.xml可以在SpringBoot全局配置文件: application.yml指定配置文件

注意:
logback配置文件名: logback-logback.xml不能使用

SpringBoot中过滤器和拦截器的应用

过滤器

过滤器的实现:
1. javaWeb实现:实现javax.servlet.Filter接口  如果设置拦截方式为forward,默认面定向拦截
2. Spring对Filter接口进行再次封装:OncePerRequestFilter抽象类,Spring框架推荐使用

OncePreRequestFilter :  只对该请求进行一次过滤

AFilter拦截方式:重定向方式拦截,转发拦截

localhost:8080/hello    可以访问   不会拦截此时  因为拦截会打印AFilter......

过滤器的配置方式:
1.使用@WebFilter注解(javaWeb的注解),配置过滤器,使用@ServletComponentScan扫描web注解

.

.

.

.

.注释AFilter

AFilter再转发中拦截了两次  BFilter是另一种方式,是继承了OncePerRequestFiter这种方式

.继承OncePreRequestFilter,一-次请求只拦截一次

.

.

改变过滤器1拦截顺序:

1.使用@WebFilter配置,指定过滤器执行顺序,修改类名,根据类名顺序

2.使用Springboot提供的配置类方式配置: FilterRegistrationBean类,专门用于注册过滤器

方法二:(解决之前JavaWeb中所没有的指定过滤方法的缺陷)

提供setOrder()指定过滤器执行顺序,数字越小,越先执行

JavaWeb的配置类

@Bean

public  FilterRegisterationBean<AFilter>  aFilterRegisterationBean(){

        new 

}

拦截器

使用配置类进行配置

WebMvcConfigurer接口是SPringboot提供给开发者对SpringMvc的配置扩展

登录成功->得到token

带回服务器  防止伪造token -> 

token

拦截处理判断

登录的重定向解决

ajax发送的请求!!!!!

跳转由前端来处理  下面这种方式是不对的

token从session里拿

Q1主界面 详情界面不是可以直接访问的,需要登录  直接访问会因为没有携带token导致允许都无法访问

Q2拦截ajax请求 没有token response重定向跳转到login.html 前端需要数据 前端实现跳转

解决方案:不让用户直接通过url访问主界面和详情界面

我可以提供一个处理器controller来让用户进行访问

HtmlController.java

@RequestMapping("test")

public String toindex(){return "forward:/index.html"}

Q2:

拿到请求头里的东向来进行区分

ajax没有token下的失败   过滤器会拦截  根据header里的状态判断是否拦截

手动响应json

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值