1. 程式人生 > >Servlet之二 —— HttpServlet的doGet()和doPost()

Servlet之二 —— HttpServlet的doGet()和doPost()

     我們都知道,Servlet程式在Servlet介面中定義了init(),service(),destroy()的方法名稱,但是並沒有具體實現這些方法。

     接著,它在javax.servlet.GenericServlet類中實現了service()方法。而javax.servlet.http.HttpServlet是GenericServlet的子類,所以在HttpServlet中也實現了service()方法,而且,在HttpServlet中還實現了doGet(),doPost(),doOptions(),doTrace(),doDelete(),doHead(),doPut()這7個方法。

    因此,通常寫Httpservlet時,都是覆蓋上面的7中方法中的一種或幾種。而最常使用的方法是doGet()、doPost()這兩個。

    在繼承了HttpServlet的Servlet程式執行請求時,它首先執行service()方法,來判斷接下來是執行doGet()還是doPost()方法,因此,HttpServlet中的service()就是做一個執行doGet(),doPost()方法的判斷。然後去執行相應的方法。

    在Tomcat中,預設是執行doGet()方法的,因為doGet()方法,是處理少量資料的,所以,執行的速度較doPost()快。

    又因為doGet()和doPost()是用來處理表單請求的,所以,在程式中具體要用doGet(),還是doPost()方法,就要看form標籤中method屬性的值是“get”還是“post”了。

一般,如果不確定URL請求的是get還是post方法時,就override這兩個方法,只是,在一個方法中寫具體實現步驟,在另一個方法中去呼叫實現了具體方法的一個。

下面附一個小例子:

<span style="font-family:SimSun;font-size:18px;">package self.servlet.c;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.*;

/**
 * @author time
 *
 */
@SuppressWarnings("unused")
public class SimpleServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Override
	public void doPost(HttpServletRequest request,HttpServletResponse response)
				throws ServletException,IOException{
		response.setContentType("text/html");
		
		PrintWriter writer = response.getWriter();
		writer.print("<html><head></head><body style='font-color:#ee33e3'>Simple Servlet</body></html>");
	}
	
	@Override
	public void doGet(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException{
		doPost(request,response);
	}
	

}
</span>