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;
}
}
感谢--尚硅谷 |