java Servlet結構概述

漫漫想想發表於2020-10-27
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FirstServlet extends HttpServlet{
	private static final long serialVersionUID = 1L;
	public void init(ServletConfig config) throws ServletException{
		super.init(config);
	}
	public void service(HttpServletRequest request,HttpServletResponse response)
			throws IOException{
		//設定響應的內容型別
		response.setContentType("text/html;charset=utf-8");
		//取得輸出物件
		PrintWriter out = response.getWriter();
		out.println("<html><body>");
		//在瀏覽器中顯示:第一個Servlet類
		out.println("第一個Servlet類");
		out.println("</body></html>");
	} 
}

先從引入的包說明

  • java.io.PrintWriter
    引入PrintWriter類,使用getWriter()獲取PrintWriter型別的物件可以直接輸出字元文字內容。
 PrintWriter out = response.getWriter();
 out.println("第一個Servlet類");
  • javax.servlet.ServletConfig
    在第一個初始化方法裡面使用了ServletConfig的物件,這是Servlet容器或者是Servlet引擎在建立好Servlet物件後,就會呼叫初始化方法void init(ServletConfig config),接收一個ServletConfig型別的引數,Servlet通過這個引數向Servlet傳遞初始配置資訊
@WebServlet(name = "thirdServlet", urlPatterns = { "/thirdServlet" },
initParams={@WebInitParam(name = "firstParam", value = "one"),
		@WebInitParam(name = "secondParam", value = "two")})
public void init(ServletConfig config) throws ServletException {
		//獲得引數firstParam的值
		first = config.getInitParameter("firstParam");
		second = config.getInitParameter("secondParam");
		System.out.println("第一個引數值:" + first);//輸出one
		System.out.println("第二個引數值:" + second);//輸出teo
	}
  • javax.servlet.http.HttpServlet

Servlet的介面實現類有兩個:GenericServlet和HttpServlet
GenericServlet是一個抽象類,該類俄日Servlet提供了部分實現,他並沒有實現HTTP請求處理
HttpServlet是GenericServlet的子類,它繼承了GenericServlet所有方法,並且為HTTP請求中的POST、GEt等型別提供了具體的操作方法
所以我們通常寫的Servlet類都是繼承HttpServlet
HttpServlet的對於POST、GET的具體操作方法就是doPost()以及doGet()

  • public void service(HttpServletRequest request,HttpServletResponse response)
    再看一下service()方法
    通過service()方法將HTTP請求和響應分別強轉為HttpServletRequest和HttpServletResponse型別的物件。分別傳遞客戶端的請求以及響應客戶端的請求
    此外由於Httpservlet類在重寫的service()方法中,為每一種HTTP請求方式都定義了對應的doxxx()方法,因此當我們寫的Servlet類繼承HttpServlet類繼續根據請求方式,重寫對應的doXxx()方法即可,而不需要重寫service()方法
  • doPost() doGet()
    一般情況,如果無論使用者請求型別是get還是post,伺服器的處理過程都是完全相同的,那麼可以只在doPost()方法中編寫處理過程,而在doGet()方法中呼叫doPost()方法即可;反之亦可。

相關文章