导入 servlet 依赖

Servlet-Specification Jar,Servlet 规范包,经过版本升级命名有变化:

  • 3.1 之前的 Servlet API 叫 servlet-api
  • 3.1 之后的 Servlet API 叫 javax.servlet-api ```xml javax.servlet servlet-api 2.5 provided

javax.servlet javax.servlet-api 4.0.1 provided

  1. <a name="bK0ea"></a>
  2. ### 整合Servlet
  3. <a name="EBAqK"></a>
  4. #### 通过注解扫描完成Servlet组件的注册:@WebServlet
  5. 1、创建Servlet:
  6. ```java
  7. @WebServlet(name = "FirstServlet",urlPatterns = "/first")
  8. public class DemoServlet01 extends HttpServlet {
  9. @Override
  10. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  11. System.out.println("第一个Servlet启动");
  12. resp.getWriter().print("Hello");
  13. }
  14. }

2、修改启动类:

  1. @SpringBootApplication
  2. @ServletComponentScan // 在Spring Boot启动时会扫描@WebServlet注解,并将该类实例化
  3. public class DemoForSpringBootBasicApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(DemoForSpringBootBasicApplication.class, args);
  6. }
  7. }


通过方法完成Servlet组件的注册

1、创建 Servlet

  1. public class DemoServlet02 extends HttpServlet {
  2. @Override
  3. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  4. System.out.println("第二个Servlet启动");
  5. resp.getWriter().print("Hello ,I am second");
  6. }
  7. }

2、创建Servlet配置类

  1. @Configuration
  2. public class ServletConfig {
  3. @Bean
  4. public ServletRegistrationBean getServletRegistrationBean() {
  5. return new ServletRegistrationBean(new DemoServlet02(), "/second");
  6. }
  7. }

整合filter

通过注解扫描完成Filter组件的注册:@WebFilter

1、创建Filter:

  1. @WebFilter(filterName = "first",urlPatterns = {"/first"})
  2. public class DemoFilter01 implements Filter {
  3. @Override
  4. public void init(FilterConfig filterConfig) throws ServletException {
  5. System.out.println("First Filter初始化");
  6. }
  7. @Override
  8. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  9. System.out.println("进入First Filter");
  10. filterChain.doFilter(servletRequest,servletResponse);
  11. System.out.println("离开First Filter");
  12. }
  13. @Override
  14. public void destroy() {
  15. System.out.println("First Filter结束");
  16. }
  17. }

2、修改启动类:

  1. @SpringBootApplication
  2. @ServletComponentScan // 在Spring Boot启动时会扫描@WebFilter注解,并将该类实例化
  3. public class DemoForSpringBootBasicApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(DemoForSpringBootBasicApplication.class, args);
  6. }
  7. }


通过方法完成Filter组件的注册

1、创建Filter

  1. @WebFilter(filterName = "second",urlPatterns = {"/second"})
  2. public class DemoFilter02 implements Filter {
  3. @Override
  4. public void init(FilterConfig filterConfig) throws ServletException {
  5. System.out.println("Second Filter初始化");
  6. }
  7. @Override
  8. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  9. System.out.println("进入Second Filter");
  10. filterChain.doFilter(servletRequest,servletResponse);
  11. System.out.println("离开Second Filter");
  12. }
  13. @Override
  14. public void destroy() {
  15. System.out.println("Second Filter结束");
  16. }
  17. }
  18. public class DemoServlet02 extends HttpServlet {
  19. @Override
  20. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  21. System.out.println("第二个Servlet启动");
  22. resp.getWriter().print("Hello ,I am second");
  23. }
  24. }

2、创建Filter配置类

  1. @Configuration
  2. public class FilterConfig {
  3. @Bean
  4. public FilterRegistrationBean getFilterRegistrationBean(){
  5. FilterRegistrationBean bean = new FilterRegistrationBean(new DemoFilter02());
  6. // bean.addUrlPatterns(new String[]{"/second","*.action"});
  7. bean.addUrlPatterns("/second");
  8. return bean;
  9. }
  10. }


整合listener

通过注解扫描完成Listener组件注册

1、创建Listener:

  1. @WebListener
  2. public class DemoListener01 implements ServletContextListener {
  3. @Override
  4. public void contextDestroyed(ServletContextEvent sce) {
  5. }
  6. @Override
  7. public void contextInitialized(ServletContextEvent sce) {
  8. System.out.println("Servlet Context初始化!");
  9. }
  10. }

2、修改配置类

  1. @SpringBootApplication
  2. @ServletComponentScan // 在Spring Boot启动时会扫描@WebListener注解,并将该类实例化
  3. public class DemoForSpringBootBasicApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(DemoForSpringBootBasicApplication.class, args);
  6. }
  7. }

通过方法完成Listener组件注册

1、编写Listener:

  1. public class DemoListener02 implements ServletContextListener {
  2. @Override
  3. public void contextDestroyed(ServletContextEvent sce) {
  4. }
  5. @Override
  6. public void contextInitialized(ServletContextEvent sce) {
  7. System.out.println("Servlet Context初始化!");
  8. }
  9. }

2、配置Listener启动类

  1. @Configuration
  2. public class ListenerConfig {
  3. @Bean
  4. public ServletListenerRegistrationBean getListener(){
  5. return new ServletListenerRegistrationBean(new DemoListener02());
  6. }
  7. }