配置嵌入式Servlet容器
SpringBoot默认是用嵌入式的Servlet容器(Tomcat)
1.如何定制Servlet有关配置(ServletProperties):
server.port=8080 server.context-path=/web # 通用的Servlet容器设置 # server.xxx # Tomcat的设置 server.tomcat.accept-count=100 # server.tomcat.xxx
2.编写WebServerFactoryCustomizer定制器。
@Bean public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
@Override public void customize(ConfigurableWebServerFactory factory) {
//配置服务端口 factory.setPort(8080); } }; }
3.注册Servlet、Filter、Listener组件
编写相关组件
public class MyServlet extends HttpServlet {
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("访问中"); resp.getWriter().write("成功"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp); } }
public class MyFilter implements Filter {
@Override public void init(FilterConfig filterConfig) throws ServletException {
} @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("拦截"); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() {
} }
public class MyListener implements ServletContextListener {
@Override public void contextInitialized(ServletContextEvent sce) {
System.out.println("服务器启动"); } @Override public void contextDestroyed(ServletContextEvent sce) {
System.out.println("服务器关闭"); } }
SpringBoot注册:
@Configuration public class MyServerConfig {
//注册三大组件 @Bean public ServletRegistrationBean myServlet(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); servletRegistrationBean.setServlet(new MyServlet()); servletRegistrationBean.setUrlMappings(Arrays.asList("/myServlet")); servletRegistrationBean.setLoadOnStartup(1); return servletRegistrationBean; } @Bean public FilterRegistrationBean myFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); //添加Filter filterRegistrationBean.setFilter(new MyFilter()); //设置拦截路径 filterRegistrationBean.setUrlPatterns(Arrays.asList("/myServlet")); return filterRegistrationBean; } @Bean public ServletListenerRegistrationBean servletListenerRegistrationBean(){
ServletListenerRegistrationBean<MyListener> servletListenerRegistrationBean = new ServletListenerRegistrationBean(); servletListenerRegistrationBean.setListener(new MyListener()); return servletListenerRegistrationBean; } }
使用外置Servlet(Tomcat)
<dependency> <groupId>org.springframework.boot
groupId> <artifactId>spring-boot-starter-tomcat
artifactId> <scope>provided
scope>
dependency>
启动类
public class ServletInitializer extends SpringBootServletInitializer {
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBoot启动类.class); } }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206550.html原文链接:https://javaforall.net
