弹簧引导中的Servlet简单使用

  

当使用spring-Boot时,嵌入式Servlet容器通过扫描注解的方式注册Servlet,过滤器和Servlet规范的所有监听器(如HttpSessionListener监听器)。

  

春季启动的主Servlet为DispatcherServlet,其默认的url模式为“/?也许我们在应用中还需要定义更多的Servlet,该如何使用SpringBoot来完成呢?

  

在春天引导中添加自己的Servlet有两种方法,代码注册Servlet和注解自动注册(过滤器和侦听器也是如此)。

  

一、代码注册通过ServletRegistrationBean, FilterRegistrationBean和ServletListenerRegistrationBean获得控制。

  

也可以通过实现ServletContextInitializer接口直接注册。

  

二,在SpringBootApplication上使用@ServletComponentScan注解后,Servlet、过滤器、监听器可以直接通过@WebServlet, @WebFilter, @WebListener注解自动注册,无需其他代码。

  

<强> 1。通过代码注册Servlet示例代码

  

1) .SpringBootSimpleApplication.Java类:

        com . example,包   进口org.springframework.boot.SpringApplication;   进口org.springframework.boot.autoconfigure.SpringBootApplication;   进口org.springframework.boot.web.servlet.ServletRegistrationBean;   进口org.springframework.context.annotation.Bean;   进口com.example.servlet.MyServlet;   @SpringBootApplication   公开课SpringBootSimpleApplication {/* *   *使用代码注册Servlet(不需要@ServletComponentScan注解)   */@ bean   公共ServletRegistrationBean ServletRegistrationBean () {   返回新ServletRegistrationBean(新MyServlet (), "/st/* ");//ServletName默认值为首字母小写,即MyServlet   }   公共静态void main (String [] args) {   SpringApplication.run (SpringBootSimpleApplication.class, args);   }   }      

2) .MyServlet.java类:

        包com.example.servlet;   进口java.io.IOException;   进口java.io.PrintWriter;   进口javax.servlet.ServletException;   进口javax.servlet.http.HttpServlet;   进口javax.servlet.http.HttpServletRequest;   进口javax.servlet.http.HttpServletResponse;   公开课MyServlet扩展HttpServlet {   @Override   保护无效doGet (HttpServletRequest点播,HttpServletResponse resp)抛出ServletException IOException {   System.out.println(“在在在在在在在在在在doGet () & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt;”);   doPost(要求、职责);   }   @Override   保护无效doPost (HttpServletRequest点播,HttpServletResponse resp)抛出ServletException IOException {   System.out.println(“在在在在在在在在在在doPost () & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt;”);   resp.setContentType (" text/html ");   resp.setCharacterEncoding(“utf - 8”);   PrintWriter=resp.getWriter ();   out.println (“& lt; html>”);   out.println (“& lt; head>”);   out.println (“& lt; title>你好World</title>”);   out.println (“& lt;/head>”);   out.println (“& lt; body>”);   out.println (“& lt; h2>大家好,我的名字叫Servlet”);   out.println (“& lt;/body>”);   out.println (“& lt;/html>”);   }   }      

<强> 2。使用注解注册Servlet示例代码

  

1) .SpringBootSimpleApplication.java类:

        com . example,包   进口org.springframework.boot.SpringApplication;   进口org.springframework.boot.autoconfigure.SpringBootApplication;   进口org.springframework.boot.web.servlet.ServletComponentScan;   进口org.springframework.boot.web.servlet.ServletRegistrationBean;   进口org.springframework.context.annotation.Bean;   进口com.example.servlet.MyServlet;   @SpringBootApplication   @ServletComponentScan   公开课SpringBootSimpleApplication {/* *   *使用代码注册Servlet(不需要@ServletComponentScan注解)   */@ bean   公共ServletRegistrationBean ServletRegistrationBean () {   返回新ServletRegistrationBean(新MyServlet (), "/st/* ");//ServletName默认值为首字母小写,即MyServlet   }   公共静态void main (String [] args) {   SpringApplication.run (SpringBootSimpleApplication.class, args);   }   }      

2) .MyServlet2.java类:

        包com.example.servlet;   进口java.io.IOException;   进口java.io.PrintWriter;   进口javax.servlet.ServletException;   进口javax.servlet.annotation.WebServlet;   进口javax.servlet.http.HttpServlet;   进口javax.servlet.http.HttpServletRequest;   进口javax.servlet.http.HttpServletResponse;//不指定名字的情况下,名字默认值为类全路径,即com.example.servlet.MyServlet2   @WebServlet (urlpattern="/st/myservlet2 ",描述=盨ervlet的说明”)   公开课Myservlet2扩展HttpServlet {   @Override   保护无效doGet (HttpServletRequest点播,HttpServletResponse resp)抛出ServletException IOException {   System.out.println(“在在在在在在在在在在doGet2 () & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt;”);   doPost(要求、职责);   }   @Override   保护无效doPost (HttpServletRequest点播,HttpServletResponse resp)抛出ServletException IOException {   System.out.println(“在在在在在在在在在在doPost2 () & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt; & lt;”);   resp.setContentType (" text/html ");   resp.setCharacterEncoding(“utf - 8”);   PrintWriter=resp.getWriter ();   out.println (“& lt; html>”);   out.println (“& lt; head>”);   out.println (“& lt; title>你好World</title>”);   out.println (“& lt;/head>”);   out.println (“& lt; body>”);   out.println (“& lt; h2>大家好,我的名字叫Servlet2

弹簧引导中的Servlet简单使用