博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot学习笔记(4):自定义的过滤器
阅读量:4945 次
发布时间:2019-06-11

本文共 2242 字,大约阅读时间需要 7 分钟。

SpringBoot:学习笔记(4)——自定义的过滤器

快速开始

  SpringBoot提供的前端控制器无法满足我们产品的需求时,我们需要添加自定义的过滤器。

  在SpringBoot的开发中,我们应该还听说过拦截器,他们的效果是一样的,都是对请求和响应进行过滤,但还是有一点区别:

  • 过滤器是Servlet概念中定义的,需要收到容器的支持,如Tomcat;拦截器是Spring定义的,有Spring框架支持。
  • Filter只能用于Web开发,拦截器既可以用在Web开发,也可以用在App、Swing开发中。
  • 拦截器更加灵活,在Spring环境中更适合使用拦截器。

  所以,本片文章仅仅是讲解过滤器的使用,SpringBoot开发中建议使用拦截器,请看

编写过滤器

package com.mrsaber.security;import org.springframework.core.annotation.Order;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;@Order(1)@WebFilter(filterName = "MSecurity",urlPatterns = {"*.html"})public class MSecurityFilter implements Filter {    @Override    public void init(FilterConfig filterConfig) throws ServletException {    }    @Override    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) servletRequest;        HttpServletResponse response= (HttpServletResponse) servletResponse;        System.out.println(request.getRequestURI());        //检查是否是登录页面        if(request.getRequestURI().equals("/web/index.html"))            filterChain.doFilter(servletRequest,servletResponse);        //检测用户是否登录        HttpSession session =request.getSession();        String status= (String) session.getAttribute("isLogin");        if(status==null || !status.equals("true"))        {            try{  response.sendRedirect("/web/index.html");}catch (Exception e){}        }        filterChain.doFilter(servletRequest,servletResponse);    }    @Override    public void destroy() {    }}

说明:

  这里使用了注解@ WebFilter来表明这是一个过滤器,这是Servlet 3.0引入的新注解,同样还有@WebFilter 和 @WebListener,这就类似于我们传统的WebServlet开发了

注册过滤器

  使用嵌入式容器时,可以使用@ServletComponentScan启用@WebServlet,@ WebFilter和@WebListener注释类的自动注册。

@SpringBootApplication@ServletComponentScan(basePackages = "com.mrsaber.security")public class MsSupplyAndSaleApplication {    public static void main(String[] args) {        SpringApplication.run(MsSupplyAndSaleApplication.class, args);    }}

 

转载于:https://www.cnblogs.com/MrSaver/p/8040390.html

你可能感兴趣的文章
Java中hashCode的作用
查看>>
Ubuntu下SVN的安装
查看>>
【洛谷P3952】[NOIP2017]时间复杂度
查看>>
【SQL Server学习笔记】通过加密来保护数据库中的数据
查看>>
在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)
查看>>
mongo数据库的数据模型
查看>>
Spring AOP-----------基础
查看>>
TCP/IP 详解 卷1 协议一书的困惑
查看>>
有四中方法可以实现PHP的伪静态,你造吗?
查看>>
简单选择排序(C)
查看>>
android 背景边框变圆角
查看>>
Android类参考---Fragment(七)
查看>>
关于OC和Swift使用GIT创建项目
查看>>
linq学习
查看>>
hotCity 小程序城市选择器, 城市数据库可自己导出
查看>>
iphone UI的大小(转)
查看>>
Android Layout XML属性
查看>>
E20170828-mk
查看>>
E20170905-mk
查看>>
E20180527-hm
查看>>