In diesem Artikel wird hauptsächlich die Methode von SpringBoot zum Definieren von Filtern, Listenern und Interceptoren vorgestellt. Interessierte können mehr darüber erfahren.
1. Benutzerdefinierter Filter
Erstellen Sie einen Filter, implementieren Sie die javax.servlet.Filter-Schnittstelle und schreiben Sie die Methoden init, doFilter und destroy neu .
package com.example.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; /** * 实现javax.servlet.Filter,覆盖其三个方法 * @author Administrator * */ @WebFilter(filterName="customFilter",urlPatterns="/*") public class CustomFilter implements Filter{ @Override public void destroy() { System.out.println("CustomFilter过滤器销毁"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("CustomFilter指定过滤器操作......"); //执行操作后必须doFilter chain.doFilter(request, response); } @Override public void init(FilterConfig arg0) throws ServletException { System.out.println("CustomFilter初始化......"); } }
2. Benutzerdefinierter Listener
Erstellen Sie einen Filter und implementieren Sie die ServletContextListener-Schnittstelle
package com.example.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; /** * 实现ServletContextListener,覆盖其两个方法 * @author Administrator * */ @WebListener public class CustomListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent servletContext) { System.out.println("servletContext销毁......"); } @Override public void contextInitialized(ServletContextEvent servletContext) { System.out.println("servletContext初始化......"); } }
Erstellen Sie einen Sitzung Listener zur Überwachung der Erstellung und Zerstörung der Sitzung
package com.example.listener; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; /** * 实现HttpSessionListener接口,监视session的动态 * @author Administrator * */ @WebListener public class SessionListener implements HttpSessionListener{ @Override public void sessionCreated(HttpSessionEvent session) { System.out.println("session创建成功......"); } @Override public void sessionDestroyed(HttpSessionEvent session) { System.out.println("session销毁......"); } }
3. Benutzerdefinierter Interceptor
Schritte:
1. Erstellen Sie Ihren eigenen Interceptor, um die HandlerInterceptor-Schnittstelle zu implementieren
2. Erstellen Sie Ihre eigene Interceptor-Kette, erben Sie die Klasse WebMvcConfigurerAdapter und überschreiben Sie die Methode addInterceptors.
3. Instanziieren Sie Ihren eigenen Interceptor und fügen Sie ihn der Interceptor-Kette hinzu.
Interceptor eins:
package com.example.Interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class CustomInterceptor implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) throws Exception { //在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) System.out.println("3. 整个请求结束之后被调用......CustomInterceptor1......"); } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view) throws Exception { // 请求处理之后进行调用,但是在视图被渲染之前 System.out.println("2. 请求处理之后进行调用,但是在视图被渲染之前......CustomInterceptor1......"); } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { // 在请求处理之前进行调用 System.out.println("1. 在请求处理之前进行调用......CustomInterceptor1......"); // 只有返回true才会继续向下执行,返回false取消当前请求 return true; } }
Interceptor zwei:
package com.example.Interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class CustomInterceptor2 implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) throws Exception { //在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) System.out.println("3. 整个请求结束之后被调用......CustomInterceptor2......"); } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView view) throws Exception { // 请求处理之后进行调用,但是在视图被渲染之前 System.out.println("2. 请求处理之后进行调用,但是在视图被渲染之前......CustomInterceptor2......"); } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception { // 在请求处理之前进行调用 System.out.println("1. 在请求处理之前进行调用......CustomInterceptor2......"); // 只有返回true才会继续向下执行,返回false取消当前请求 return true; } }
Passen Sie die Interceptor-Kette an und fügen Sie den benutzerdefinierten Interceptor hinzu
package com.example.adapter; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import com.example.Interceptor.CustomInterceptor; import com.example.Interceptor.CustomInterceptor2; /** * 继承WebMvcConfigurerAdapter,复写addInterceptors方法 * @author Administrator * */ @Configuration public class WebAdapter extends WebMvcConfigurerAdapter{ @Override public void addInterceptors(InterceptorRegistry registry) { //众多的拦截器组成了一个拦截器链 /** * 主要方法说明: * addPathPatterns 用于添加拦截规则 * excludePathPatterns 用户排除拦截 */ registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/*"); registry.addInterceptor(new CustomInterceptor2()).addPathPatterns("/*"); super.addInterceptors(registry); } }
Das obige ist der detaillierte Inhalt vonEinführung in Methoden zur Implementierung von Filtern, Listenern und Interceptoren über SpringBoot in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!