基本概念:
- Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对WEB服务器管理的所有WEB资源:例如JSP 、servlet、图片、进行过滤拦截,从而实现一些特殊功能,例如:访问权限级别的判断,敏感词。
问题:
- 项目开发中经常会涉及到重复代码实现!如判断用户是否登录,之后登录才能有操作权限!这样每一个方法都要进行判断,太过冗余,希望将没有权限的请求过滤掉!
如何解决上面的问题:
- 1.抽取重复代码,分装调用(手动调用方法)
- 2.在请求到达之前,拦截请求进行判断,符合判断放行(过滤器)
过滤器执行流程:
- 1.用户访问服务器。
- 2.过滤器对Servlet请求进行拦截
- 3.先进入过滤器,过滤器进行处理
- 4.过滤器处理完成,符合放行,到达Servlet访问数据库
- 5.Servlet处理完成,有Tomcat服务年相应用户请求操作。
(过滤器就像门,只有有钥是的人才能进入这道门。)
开发步骤:
- 1.写一个JAVA类实现Filter接口
- 2.配置过滤器
package com.example.demo;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/*过滤器开发*/
@WebFilter(filterName = "TestFilter", urlPatterns = { "/*" })
public class TestFilter implements Filter {
public TestFilter() {
System.err.println("创建过滤器实例");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.err.println("执行过滤器初始化方法");
}
@Override
public void destroy() {
System.err.println("销毁过滤器");
}
// 在请求方法执行之前调用
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.err.println("执行过滤器业务处理方法");
filterChain.doFilter(servletRequest,servletResponse);
System.err.println("方法处理完成,回到过滤器");
}
}
@SpringBootApplication
@ServletComponentScan //扫描过滤器
public class FilterImplementApplication {
public static void main(String[] args) {
SpringApplication.run(FilterImplementApplication.class, args);
}
}
网友评论