Web學習日記_13:HttpServlet

1,HttpServlet概述

HttpServlet類是GenericServlet的子類,它提供了對HTTP請求的特殊支持,所以通
常我們都會通過繼承HttpServlet來完成自定義的Servlet。

2 ,HttpServlet覆蓋了service()方法

HttpServlet類中提供了service(HttpServletRequest,HttpServletResponse)方法,這個
方法是HttpServlet自己方法,不是從Servlet繼承來的。在HttpServlet的service(ServletRequest,
ServletResponse)方法中會把ServletRequest和ServletResponse強轉成HttpServletRequest和
HttpServletResponse,然後調用service(HttpServletRequest,HttpServletResponse)方法,這說
明子類可以去覆蓋service(HttpServletRequest,HttpServletResponse)方法即可,這就不用自己去
強轉請求和響應對象了。其實子類也不用去覆蓋service(HttpServletRequest,HttpServletResponse)方
法,因爲HttpServlet還要做另一步簡化操作,下面會介紹。
HttpServlet.java

public abstract class HttpServlet extends GenericServlet {
    protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        ……
}
    @Override
    public void service(ServletRequest req, ServletResponse res)
        throws ServletException, IOException {

        HttpServletRequest  request;
        HttpServletResponse response;

        try {
            request = (HttpServletRequest) req;
            response = (HttpServletResponse) res;
         } catch (ClassCastException e) {
            throw new ServletException("non-HTTP request or response");
        }
        service(request, response); 
}

}

3,doGet()和doPost()
在HttpServlet的service(HttpServletRequest,HttpServletResponse)方法會去判斷當前請求是GET還是POST,
如果是GET請求,那麼會去調用本類的doGet()方法,如果是POST請求會去調用doPost()方法,這說明我們
在子類中去覆蓋doGet()或doPost()方法即可。

public class AServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("hello doGet()...");
	}
}
public class BServlet extends HttpServlet {
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("hello doPost()...");
	}
}

 

 

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