springBoot配置servlet,filter,listener
阿新 • • 發佈:2019-01-25
過濾器,監聽器,轉發器
1、customFilter過濾器
public class CustomFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init filter");
}
@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 destroy() {
System.out.println("destroy filter");
}
}
2、CustomListener監聽器
public class CustomListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("contextDestroyed");
}
3、轉發器CustomServlet
public class CustomServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet get method");
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet post method");
resp.getWriter().write("hello world");
}
}
方法一:通過註冊ServletRegistrationBean,FilterRegistrationBean,ServletListenerRegistrationBean獲得控制
@SpringBootApplication
public class SpringBootDemo71Application {
@Bean//註冊Servlet
public ServletRegistrationBean servletRegistrationBean() {
return new ServletRegistrationBean(new CustomServlet(), "/roncoo");
}
@Bean//註冊Filter
public FilterRegistrationBean filterRegistrationBean() {
return new FilterRegistrationBean(new CustomFilter());
}
@Bean//註冊Listener
public ServletListenerRegistrationBean<CustomListener> servletListenerRegistrationBean() {
return new ServletListenerRegistrationBean<CustomListener>(new CustomListener());
}
public static void main(String[] args) {
SpringApplication.run(SpringBootDemo71Application.class, args);
}
}
方法二:通過介面ServletContextInitializer直接註冊
@SpringBootApplication
public class SpringBootDemo71Application implements ServletContextInitializer{
public static void main(String[] args) {
SpringApplication.run(SpringBootDemo71Application.class, args);
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.addServlet("customServlet",new CustomServlet()).addMapping("/zzrdemo");
servletContext.addFilter("customFilter",new CustomFilter()).addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST),true,"customServlet");
servletContext.addListener(new CustomListener());
}
}
方法三:在SpringBootApplication使用註解@ServletComponentScan,然後在servlet,filter,listener上增加註解即可:
- servlet上加註解:
@WebServlet(value = "/zzrdemo",name = "customServlet")
- filter上加註解:
@WebFilter(urlPatterns = "/*",filterName = "customFilter")
- listener上加註解:
@WebListener