SpringBoot 中Servlet,Filter,Listener的程式碼配置
阿新 • • 發佈:2021-01-11
技術標籤:SpringBootspringbootFilter程式碼配置Listener程式碼配置Servlet程式碼配置
SpringBoot建立web專案中,有可能是以jar的方式建立的.建立之後沒有對應的webapp目錄,也沒有對應的web.xml檔案.而web.xml檔案通常會配置Servlet,Filter,Listener等資訊.SpringBoot為我們提供了ServletRegistrationBean,FilterRegistrationBean,ServletListenerRegistrationBean等類配置相關資訊.
1.Servlet配置
1)新建servlet類
public class MyServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("hello servlet...");
}
}
2)通過ServletRegistrationBean註冊
/**
* 注入servlet 代替web.xml配置
* @return
*/
@Bean
public ServletRegistrationBean servletRegistrationBean(){
return new ServletRegistrationBean (new MyServlet(), "/myServlet");
}
3)頁面顯示:
2.Filter配置
1)新建Filter類
package com.oxx.springboot.component;
import javax.servlet.*;
import java.io.IOException;
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("-----myfilter init......");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("----------myfilter doFilter.......");
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
System.out.println("------------myFilter destroy........");
}
}
2)通過FilterRegistrationBean註冊:
/**
* 注入filter 代替web.xml配置
* @return
*/
@Bean
public FilterRegistrationBean filterRegistrationBean(){
return new FilterRegistrationBean(new MyFilter(), servletRegistrationBean());
}
3)啟動專案,退出專案 控制檯顯示:
配置的是自定義的servlet,過濾的是/myServlet,需要訪問一次才會出現doFilter…點選紅色框框按鈕退出才會顯示destroy
3.Listener配置
1)新建Listener類:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyServletContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("-----------------MyServletContextListener init ......");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("---------------MyServletContextListener destroy........");
}
}
2)通過ServletListenerRegistrationBean註冊Listener:
/**
* 注入listener 代替web.xml配置
* @return
*/
@Bean
public ServletListenerRegistrationBean servletListenerRegistrationBean(){
return new ServletListenerRegistrationBean(new MyServletContextListener());
}
3)啟動專案,退出專案 控制檯顯示
點選紅色框框按鈕退出,才回顯示destroy…
4.容器相關配置
1)通過程式碼配置容器相關資訊
/**
* 程式碼配置容器相關資訊
* @return
*/
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> webServerFactoryCustomizer(){
return new WebServerFactoryCustomizer<TomcatServletWebServerFactory>() {
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.setPort(9999); //埠
factory.setContextPath("/tomcat"); //訪問路徑
}
};
}
2)啟動專案 控制檯顯示: