SpringBoot与web开发(六)----SpringBoot容器
SpringBoot容器
Page content
SpringBoot 容器
SpringBoot的容器默认使用的Tomcat,
1.如何修改Servlet容器的相关配置?
修改Servlet的配置 (org.springframework.boot.autoconfigure.web.ServerProperties)
server.servlet.context-path=/crud server.port=8081
2.如何注册自己的Servlet,Filter,Listener
SpringBoot默认的是以jar包的方式启动嵌入Serlvet容器,没有Web.xml。
注册三大组件的方式
ServletRegistrationBean
FilterRegistrationBean
ServletListenerRegistrationBean
/** * @program: spring-boot-restful-crud * @description: servlet配置类 * @author: YuanChangYue * @create: 2019-08-19 19:20 */ @Configuration public class MyServletConfig { @Bean public ServletRegistrationBean myServlet() { return new ServletRegistrationBean<>(new MyServlet(), "/myServlet"); } @Bean public FilterRegistrationBean myFilter() { FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new MyFilter()); registrationBean.setUrlPatterns(Arrays.asList("/hello", "/myServlet")); return registrationBean; } @Bean public ServletListenerRegistrationBean myListen() { return new ServletListenerRegistrationBean(new MyListen()); } }/** * @program: spring-boot-restful-crud * @description: 自定义Listen * @author: YuanChangYue * @create: 2019-08-19 19:42 */ public class MyListen implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("contextInitialized ing...."); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("contextDestroyed...."); } }/** * @program: spring-boot-restful-crud * @description: 自定义Filter * @author: YuanChangYue * @create: 2019-08-19 19:33 */ 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("servletRequest ing..... "); filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { System.out.println("destroy "); } }/** * @program: spring-boot-restful-crud * @description: 自定义Servlet * @author: YuanChangYue * @create: 2019-08-19 19:17 */ public class MyServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("myServlet--doPost"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } }
SpringBoot 在自动配置SpringMvc,就将DispatcherServlet配置好了
3. 切换Servlet容器
切换到 Jetty
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>spring-boot-starter-tomcat</artifactId> <groupId>org.springframework.boot</groupId> </exclusion> </exclusions> </dependency> <dependency> <artifactId>spring-boot-starter-jetty</artifactId> <groupId>org.springframework.boot</groupId> </dependency>

4.使用外置Servlet容器
**优点: **简单 ,便携.
缺点:默认不支持JSP,优化定制复杂.