servlet三大组件配置
1.编写servlet
//编写好后在配置类中注册
public class Myservlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("hello, my big baby");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
2.编写Filter
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("my wonderful filter");
filterChain.doFilter(servletRequest,servletResponse);
}
}
3.编写Listener
public class Mylistenner implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("My wonderful Listener。。。Initialized");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Listener。。。Destroyed");
}
}
4.在配置文件中注册
//编写配置类定制嵌入式servlet容器相关规则servlet相关配置
@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8888);
}
};
}
//注册三大组件
@Bean
//注册servlet
public ServletRegistrationBean myservlet(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new Myservlet(), "/Myservlet");
return servletRegistrationBean;
}
//注册filter
@Bean
public FilterRegistrationBean myfilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new MyFilter());
filterRegistrationBean.setUrlPatterns(Arrays.asList("/Myservlet"));
return filterRegistrationBean;
}
//注册listener
@Bean
public ServletListenerRegistrationBean mylistener(){
ServletListenerRegistrationBean<Mylistenner> mylistennerServletListenerRegistrationBean = new ServletListenerRegistrationBean<>(new Mylistenner());
return mylistennerServletListenerRegistrationBean;
}
5.引入web模块时就默认使用嵌入式tomcat容器,但不支持JSP。然而开发是需要JSP,则需要手动引入外部的tomcat
#使用外置的tomcat容器
1.将项目的打包方式改为war
2.(系统会自动生产,但是这个类必须有)编写一个类继承
SpringBootServletInitializer,并重写configure方法,调用参数的sources方法springboot启动类传过去然后返回
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(HelloSpringBootWebApplication.class);
}
}
3.(设置后系统会自动加上,没有就需要手动加)然后把tomcat的依赖范围改为provided
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.2.1.RELEASE</version>
<scope>provided</scope>
</dependency>
4.最后就可以把项目打包成war放到tomcat中了并创建web.xml