SpringBoot用Servlet處理請求

認識Servlet容器

Servlet是在javax.servlet包中定義的一個接口。在開發Spring Boot應用程序時,使用Controller基本能解決大部分的功能需求。但有時候也需要使用Servlet,比如實現攔截和監聽功能。

Spring Boot的核心控制器DispatcherServlet會處理所有的請求。如果自定義Servlet,則需要進行註冊,以便DispatcherServlet核心控制器知道它的作用,以及處理請求url-pattern.

使用Servlet處理請求,可以直接通過@WebServlet(urlPattern,descript)註冊Servlet,然後在入口類中添加註解@ServletComponentScan,以掃描該註解指定包下的所有Servlet。

用Servlet處理請求

實驗結果
運行程序,使用postman測試軟件中GET方法訪問地址
沒有postman的小夥伴可以點擊鏈接,進行下載postman和簡單使用測試軟件Postman下載(親測有效)

http://localhost:8080/ServletDemo02/*

會返回重寫doGET方法的值

Servlet ServletDemo02

下面是postman 的界面和返回結果

在這裏插入圖片描述
同時控制檯會輸出doGet裏定義的值

doGet

項目結構
在這裏插入圖片描述
無需依賴配置
1.註冊Servlet類
ServletDemo02.java
代碼解釋:
@WebServlet(urlPattern="/ServletDemo02/*"):屬性urlPattern指定WebServlet的作用範圍,這裏代表ServletDemo02下的所有子路徑。
doGet:父類HpptServlet的doGet方法是空的,沒有實現任何代碼,子類需要重寫此方法。

package com.example.demo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(urlPatterns = "/ServletDemo02/*")
public class ServletDemo02 extends HttpServlet {
    /**
     * 重寫doGet方法,父類的HttpServlet的doGet方法是空的,沒有實現任何代碼,子類需要重寫此方法
     * 客戶使用GET方法請求Servlet時,Web容器會調用doGet方法處理請求
     * */
    @Override
    protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws  ServletException,IOException{
        System.out.println("doGet");
        resp.getWriter().print("Servlet ServletDemo02");
    }

}

2.開啓Servlet支持
在入口類上添加註解@ServletComponentScan,以使得Servlet生效。
ServletDemoApplication.java

代碼解釋
@CompomentScan:組件掃描,可自動發現和裝配一些Bean,並根據定義的掃描路徑把符合掃描規則的類裝配到Spring容器中。
@SpringBootApplication:入口類Application的啓動註解

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

@ServletComponentScan
@SpringBootApplication
public class ServletDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(ServletDemoApplication.class, args);
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章