1. 程式人生 > 實用技巧 >springboot中使用Servlet

springboot中使用Servlet

在springboot中使用Servlet主要有兩種方式:

方式一、使用註解的方式:

首先編寫一個Servlet類繼承HttpServlet,方式和正常寫Servlet一樣。

然後在這個類上面加上@WebServlet註解,如下:

@WebServlet(name = "MyServlet",urlPatterns = "/myServlet")//表示請求路徑
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException { resp.getWriter().println("MyServlet"); resp.getWriter().flush(); resp.getWriter().close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }

但是這個時候,Springboot並不知道你加了Servlet,所以需要在Main方法上加上@ServletComponentScan註解,表示Servlet元件掃描,可以加上引數basePackages來說明需要掃描的包是哪個。具體如下:

@SpringBootApplication//SpringBoot的全域性的自動配置註解,所有的業務類都要放在子包下,才能自動配置
@ServletComponentScan(basePackages = {"com.kunkun.springboot.servlet"})//servlet掃描
public class Application {

    
public static void main(String[] args) { //固定的程式碼,啟動SpringBoot程式,初始化Spring容器 SpringApplication.run(Application.class, args); } }

這樣就完成了Servlet的配置:結果如下:

方式二:配置類的方式

首先依然是寫一個普通的Servlet,如下:

public class HeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println("HeServlet2222222,<br>坤坤");
        resp.getWriter().flush();
        resp.getWriter().close();

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

然後寫一個配置類,如下:

@Configuration
public class ServletConfig {
    /**
     * @Bean 註解等價於在Spring配置檔案xml中配置一個Bean
     * <Bean id="xxx", class="xxx.xxx.xxx">
     *
     * </Bean>
     * 方法名等於id,方法返回型別等於class
     *
     * @return
     */
    @Bean
    public ServletRegistrationBean heServletRegistrationBean(){
        //返回一個Servlet註冊bean,在這裡可以新增Servlet和請求路徑
        ServletRegistrationBean registration = new ServletRegistrationBean(new HeServlet(),"/servlet/heservlet");
        return registration;
    }
}

第二種方式,springboot提供的方式,結果如下: