一.Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet、 Filter、 Listener等等
二.在spring boot中的三种实现方式
方法一:通过注册ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 获得控制
servlet类:
package com.demo.example.util.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletRequest; public class CustomServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("servlet get method"); doPost(request , response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub System.out.println("servlet get method"); response.getWriter().write("Hello world"); } } filter类:
package com.demo.example.util.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; public class CustonFilter implements Filter { @Override public void destroy() { // TODO Auto-generated method stub System.out.println("do destroy"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("do filter"); chain.doFilter(request, response); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub System.out.println("do init"); } }
Listener类:
package com.demo.example.util.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class CustomListener implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { // TODO Auto-generated method stub System.out.println("servletContextEvent"); } @Override public void contextInitialized(ServletContextEvent servletContextEvent) { // TODO Auto-generated method stub System.out.println("servletContextEvent"); } }
注册bean(第一种方式)
代码注册:(在SpringBootDemoFilerServletLisApplication类中)
@Bean public ServletRegistrationBean<CustomServlet> servletRegistrationBean() { return new ServletRegistrationBean<CustomServlet>(new CustomServlet(), "/customServlet"); } @Bean public FilterRegistrationBean<CustonFilter> filterRegistrationBean(){ return new FilterRegistrationBean<CustonFilter>(new CustonFilter(),servletRegistrationBean() ); } @Bean public ServletListenerRegistrationBean<CustomListener> servletListenerRegistrationBean(){ return new ServletListenerRegistrationBean<CustomListener>(new CustomListener()); }
第二种代码注册:(类似一)
@SpringBootApplication public class SpringBootDemoFilerServletLisApplication implements ServletContainerInitializer{ @Override public void onStartup(Set<Class<?>> arg0, ServletContext servletContext) throws ServletException { // TODO Auto-generated method stub servletContext.addServlet("CustomServlet", new CustomServlet()).addMapping("/customServlet"); servletContext.addFilter("CustonFilter", new CustonFilter()).addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), true, "CustomServlet"); servletContext.addListener(new CustomListener()); }
第三种基于注释:
首先:在 SpringBootDemoFilerServletLisApplication 类中添加
在listener
在servlet
在filter ( "/*" 代表过滤全局 )
原文地址:https://www.cnblogs.com/durenniu/p/9520910.html
时间: 2024-10-10 23:32:48