javaWeb filter-filter-overview
filter-overview
- What is Filter?
Java web development has three major components: Servlet Filter Listener
- What is the role of Filter?
Filters actually intercept web resources, do some processing, and then pass them to the next filter or servlet for processing - What are the characteristics? It
is usually used to intercept the request for processing, and
it can also intercept the returned response.
filter- filter creation
- Idea Create Filter
- Analog Servlet
//servlet的创建
@WebServlet
extends HttpServlet
doGet/doPost方法
//filter的创建
@WebFilter
implements Filter
doFilter方法
- Correct understanding of
filtering If the filtering address is s1, then only the request whose address is s1 can be filtered. If you visit a.jpg, s2, etc., the filter will not filter and the doFilter method will not be executed.
##Case code
Demo01Servlet :
package com.lbl.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/s1")
public class Demo01Servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet方法执行了啦");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Demo01Filter:
package com.lbl.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/s1")
public class Demo01Filter implements Filter {
public void destroy() {
}
/*
1:这个方法是你访问我要过滤的资源时,自动执行
2: FilterChain被称为过滤器链
3: chain.doFilter(req, resp);放行
如果调用:请求放行
如果不调用,请求不放行
*/
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("过滤器doFilter方法执行了");
chain.doFilter(req, resp);
System.out.println("过滤器响应了");
}
public void init(FilterConfig config) throws ServletException {
}
}
running result: