Filter in life: water purifier, air purifier, bandit, web Filters: When accessing server resources, filters can intercept requests and complete some special functions. The function of filter:
is generally used to complete common operations. Such as: login verification, unified encoding processing, sensitive character filtering...
Steps
1. Define a class and implement the interface Filter
2. Copy method
3. Configure interception path
web.xml
Annotation
Code
@WebFilter("/*")//访问所有资源之前,都会执行该过滤器 public class FilterDemo1 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("filterDemo1被执行了...."); //放行 filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
web.xml configuration
<filter> <filter-name>demo1</filter-name> <filter-class>cn.zjq.web.filter.FilterDemo1</filter-class> </filter> <filter-mapping> <filter-name>demo1</filter-name> <!-- 拦截路径 --> <url-pattern>/*</url-pattern> </filter-mapping>
Filter execution process
Execution filter
Resources after execution and release
Come back and execute the code below the filter release code
Filter life cycle method
init: After the server starts, the Filter object will be created and then the init method will be called. Only executed once. Used to load resources
doFilter: Will be executed every time a request is intercepted for a resource. Executed multiple times
destroy: After the server is shut down, the Filter object is destroyed. If the server is shut down normally, the destroy method will be executed. Only executed once. Used to release resources
Filter configuration details
Interception path configuration:
Specific resources Path: /index.jsp The filter will be executed only when accessing the index.jsp resource
Interception directory: /user/* When accessing all resources under /user, the filter will be executed Will be executed
Suffix name interception: *.jsp When accessing all suffix name jsp resources, the filter will be executed
Intercept all Resources: /* When accessing all resources, the filter will be executed
Interception method configuration: The way the resource is accessed
Annotation configuration:
Set dispatcherTypes attribute
REQUEST: Default value. The browser directly requests the resource
FORWARD: forwards the access resource
INCLUDE: contains the access resource
ERROR: Error jumping resource
ASYNC: Asynchronous access to resource
web.xml configuration setting label
Filter chain (configure multiple filters)
Execution order: If there are two filters: Filter 1 and Filter 2
Filter1
Filter2
Resource Execution
Filter2
Filter 1
Filter order problem:
Annotation configuration: according to the class name String comparison rules compare, the smaller value is executed first
Between AFilter and BFilter, AFilter is executed first. 2. web.xml configuration: Whoever defines it above will execute it first
Concept: one of the three major components of the web. Event listening mechanism
Event: an event
Event source: where the event occurred
Listener: an object
Register listener: bind events, event sources, and listeners together. When an event occurs on the event source, execute the listener code
ServletContextListener: listen to the creation and destruction methods of the ServletContext object: void contextDestroyed(ServletContextEvent sce)
: This method will be called before the ServletContext object is destroyed void contextInitialized(ServletContextEvent sce)
: This method will be called after the ServletContext object is created. Steps:
Define a class to implement ServletContextListener Interface
Copy method
Configuration
web.xml
<listener> <listener-class>cn.zjq.web.listener.ContextLoaderListener</listener-class> </listener>
Specify initialization parameters
Note:
@WebListener
The above is the detailed content of How to use Filter and Listener in Java. For more information, please follow other related articles on the PHP Chinese website!