JAVA資格認(rèn)證:糾正一些關(guān)于Servlet的誤解

字號:

剛才看了幾篇對Servlet總結(jié)的文章,發(fā)現(xiàn)他們都有異曲同工之處,上來就是這樣寫的:
    Servlet三個要素:
    1.必須繼承自HttpServlet
    2.必須實現(xiàn)doGet()或者doPost()
    3.必須在web.xml中配置Servlet
    
    
    
    
  
    
    
    
    
    有誰說了編寫一個Servlet必須繼承自HttpServlet類,必須實現(xiàn)doGet()或者doPost() ,難道實現(xiàn)Servlet接口就不行了嗎?
    其實編寫一個Servlet主要有三種方法,一是實現(xiàn)Servlet接口,二是繼承抽象類GenericServlet,三是繼承HttpServlet類。下面分別用這三種方法去實現(xiàn)Servlet:
    (一)要從實現(xiàn)Servlet接口來編寫一個Servlet是比較麻煩的,因為必須實現(xiàn)Servlet接口中的所有方法,Servlet接口主要定義了五個方法,它們分別為:
    (1)void init(ServletConfig config) throws ServletException
    (2)ServletConfig getServletConfig()
    (3)void service(ServletRequest req,ervletResponse res) throws ServletException,IOException
    (4)String getServletInfo()
    (5)void destroy()
    下面用實現(xiàn)Servlet接口的方法編寫一個Servlet:
    import javax.servlet.*;
    import java.io.*;
    public class TestServlet implements Servlet{
    public void init(ServletConfig config) throws ServletException{
    System.out.println("init");
    }
    public ServletConfig getServletConfig(){
    reture null;
    }
    public void service(ServletRequest req,ServletResponse res)
    throws ServletException,IOException{
    //這里可以實現(xiàn)請求后要做的內(nèi)容
    PrintWriter out = response.getWriter();
    out.println("Hello World!");
    }
    public String getServletInfo(){
    return null;
    }
    public void destroy(){
    System.out.println("destory");
    }
    }
    (二)繼承抽象類GenericServlet編寫一個Serlvet,這個相對比實現(xiàn)Servlet接口要容易一點,GenericServlet類中只有一個抽象方法,即service(ServletRequest req, ServletResponse res),只要實現(xiàn)這個方法就行了,下面看例子:
    import javax.servlet.*;
    import java.io.IOException;
    public TestGenericServlet extends GenericServlet{
    public abstract void service(ServletRequest req,ServletResponse res)
    throws ServletException,IOException{
    PrintWriter out = response.getWriter();
    out.println("Hello World!");
    }
    }
    (3)繼承HttpServlet類編寫Servlet應(yīng)該是最容易的,而且是最常見的,我們一般要編寫Servlet直接繼承這個類就行了,重寫doGet()或者doPost()方法即可,下面看例子:
    import javax.servlet.http.*;
    import javax.servlet.*;
    import java.io.*;
    public TestHttpServlet extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {
    response.setContentType("text/html;charset=gb2312");
    PrintWriter out = response.getWriter();
    out.println("");
    out.println("");
    out.println("HelloWorld");
    out.println("

    ");
    out.println("");
    out.println("");
    out.println("HelloWorld");
    out.println("

    ");
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {
    doGet(request, response);
    }
    }