springboot中过滤器和使⽤及区别
1、深⼊SpringBoot2.x过滤器Filter和使⽤Servlet3.0配置⾃定义Filter实战(核⼼知识)
简介:讲解SpringBoot⾥⾯Filter讲解和使⽤Servlet3.0配置⾃定义Filter实战
filter简单理解:⼈--->检票员(filter)---> 景点
1、SpringBoot启动默认加载的Filter
characterEncodingFilter
hiddenHttpMethodFilter
httpPutFormContentFilter
requestContextFilter
2、Filter优先级
Ordered.HIGHEST_PRECEDENCE
spring mvc和boot区别
Ordered.LOWEST_PRECEDENCE
低位值意味着更⾼的优先级 Higher values are interpreted as lower priority
⾃定义Filter,避免和默认的Filter优先级⼀样,不然会冲突
注册Filter的bean FilterRegistrationBean
同模块⾥⾯有相关默认Filter
web->servlet->filter
3、⾃定义Filter
1)使⽤Servlet3.0的注解进⾏配置
2)启动类⾥⾯增加 @ServletComponentScan,进⾏扫描
3)新建⼀个Filter类,implements Filter,并实现对应的接⼝
4) @WebFilter 标记⼀个类为filter,被spring进⾏扫描
urlPatterns:拦截规则,⽀持正则
6)控制chain.doFilter的⽅法的调⽤,来实现是否通过放⾏
不放⾏,web应⽤resp.sendRedirect("/index.html");
场景:权限控制、⽤户登录(⾮前端后端分离场景)等
2、Servlet3.0的注解⾃定义原⽣Servlet实战
讲解:使⽤ Servlet3.0的注解⾃定义原⽣Servlet和Listener
1、⾃定义原⽣Servlet
@WebServlet(name = "userServlet",urlPatterns = "/test/customs")
public class UserServlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Writer().print("custom sevlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
3、Servlet3.0的注解⾃定义原⽣Listener实战
简介:介绍和Servlet3.0的注解⾃定义原⽣Listener实战
1、⾃定义Listener(常⽤的 servletContextListener、httpSessionListener、servletRequestListener)
@WebListener
public class RequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {
// TODO Auto-generated method stub
System.out.println("======requestDestroyed========");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("======requestInitialized========");
}
4、SpringBoot2.X⾃定义实战及新旧配置对⽐(核⼼知识)
简介: 讲解使⽤,Spingboot2.x新版本配置拦截和旧版本SpringBoot配置区别讲解
1、@Configuration
继承WebMvcConfigurationAdapter(SpringBoot2.X之前旧版本)
SpringBoot2.X 新版本配置 implements WebMvcConfigurer
2、⾃定义 HandlerInterceptor
preHandle:调⽤Controller某个⽅法之前
postHandle:Controller之后调⽤,视图渲染之前,如果控制器Controller出现了异常,则不会执⾏此⽅法
afterCompletion:不管有没有异常,这个afterCompletion都会被调⽤,⽤于资源清理
3、按照注册顺序进⾏拦截,先注册,先被拦截
不⽣效常见问题:
1)是否有加@Configuration
2)拦截路径是否有问题 ** 和 *
3)最后路径⼀定要 “/**”, 如果是⽬录的话则是 /*/
Filter
是基于函数回调 doFilter(),⽽Interceptor则是基于AOP思想
Filter在只在Servlet前后起作⽤,⽽Interceptor够深⼊到⽅法前后、异常抛出前后等
依赖于Servlet容器即web应⽤中,⽽Interceptor不依赖于Servlet容器所以可以运⾏在多种环境。 在接⼝调⽤的⽣命周期⾥,Interceptor可以被多次调⽤,⽽Filter只能在容器初始化时调⽤⼀次。 Filter和Interceptor的执⾏顺序
过滤前->拦截前->action执⾏->拦截后->过滤后
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论