SpringBoot web--嵌入式Servlet容器(學習筆記20)
阿新 • • 發佈:2019-01-05
1、配置嵌入式Servlet容器 SpringBoot預設使用Tomcat作為嵌入的Servlet容器; 問題: 1、如果是外接的tomcat,我們可以對tomcat的conf目錄中server.xml和web.xml進行定製優化修改。然而對於SpringBoot嵌入式Servlet容器配置如何修改??? 1.1、配置檔案:可以在 application.properties/yml 檔案中設定相關的server資訊,如圖所示:
1.2、程式碼配置
2、SpringBoot能不能支援其它的Servlet容器??? |
2、註冊servlet三大元件:Servlet、Filter、Listener ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean 由於SpringBoot預設是以jar包的方式啟動嵌入式的Servlet容器來啟動SpringBoot的web應用,沒有web.xml檔案。 我們這裡建立的 SpringBoot 應用是 jar 的方式,啟動嵌入式的 tomcat 。如果建立的是一個標準的web專案,我們可以在 webapp/WEB-INF/web.xml 中註冊三大元件。 可以通過以下的方式進行註冊: 2.1、註冊Servlet
2.2、註冊Filter
測試:http://localhost/crud/myFilter、http://localhost/crud/myServlet、http://localhost/crud/test 2.3、註冊Listener
|
下面是MyServerConfig程式碼: |
import java.util.Arrays;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.demo.springbootweb.filter.MyFilter;
import com.demo.springbootweb.listener.MyListener;
import com.demo.springbootweb.servlet.MyServlet;
@Configuration
public class MyServerConfig {
/**
* 配置嵌入式的servlet容器
* @return
*/
@Bean
public TomcatServletWebServerFactory getTomcat(){
TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();
tomcatServletWebServerFactory.setContextPath("/test"); // 設定專案訪問路徑
tomcatServletWebServerFactory.setPort(8090); // 設定專案埠號
return tomcatServletWebServerFactory;
}
/**
* 註冊Servlet元件
* 通過@Bean載入到容器中
* @return
*/
@Bean
public ServletRegistrationBean<MyServlet> myServlet(){
ServletRegistrationBean<MyServlet> servletRegistrationBean = new ServletRegistrationBean<MyServlet>(new MyServlet(), "/myServlet");
return servletRegistrationBean;
}
/**
* 註冊Filter元件,通過@Bean載入到容器中
* @return
*/
@Bean
public FilterRegistrationBean<MyFilter> myFilter(){
FilterRegistrationBean<MyFilter> filterRegistrationBean = new FilterRegistrationBean<MyFilter>();
filterRegistrationBean.setFilter(new MyFilter()); // 設定filter
filterRegistrationBean.setUrlPatterns(Arrays.asList("/myFilter","/myServlet","/test")); // 設定攔截請求的URL
return filterRegistrationBean;
}
/**
* 註冊Listener元件,通過@Bean載入到容器中
* @return
*/
@Bean
public ServletListenerRegistrationBean<MyListener> myListener(){
ServletListenerRegistrationBean<MyListener> myListener = new ServletListenerRegistrationBean<MyListener>(new MyListener());
return myListener;
}
}
感謝--尚矽谷 |