剛才看了幾篇對Servlet總結(jié)的文章,發(fā)現(xiàn)他們都有異曲同工之處,上來就是這樣寫的:
Servlet三個(gè)要素:
1.必須繼承自HttpServlet
2.必須實(shí)現(xiàn)doGet()或者doPost()
3.必須在web.xml中配置Servlet
<servlet>
<servlet-name> </servlet-name>
<servlet-class> </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> </servlet-name>
<url-pattern> </url-pattern>
</servelt-mapping>
|
有誰說了編寫一個(gè)Servlet必須繼承自HttpServlet類,必須實(shí)現(xiàn)doGet()或者doPost() ,難道實(shí)現(xiàn)Servlet接口就不行了嗎?
其實(shí)編寫一個(gè)Servlet主要有三種方法,一是實(shí)現(xiàn)Servlet接口,二是繼承抽象類GenericServlet,三是繼承HttpServlet類.下面分別用這三種方法去實(shí)現(xiàn)Servlet:
(一)要從實(shí)現(xiàn)Servlet接口來編寫一個(gè)Servlet是比較麻煩的,因?yàn)楸仨殞?shí)現(xiàn)Servlet接口中的所有方法,Servlet接口主要定義了五個(gè)方法,它們分別為:
(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()
下面用實(shí)現(xiàn)Servlet接口的方法編寫一個(gè)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
{
//這里可以實(shí)現(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編寫一個(gè)Serlvet,這個(gè)相對比實(shí)現(xiàn)Servlet接口要容易一點(diǎn),GenericServlet類中只有一個(gè)抽象方法,即service(ServletRequest req, ServletResponse res),只要實(shí)現(xiàn)這個(gè)方法就行了,下面看例子:
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直接繼承這個(gè)類就行了,重寫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("<html>");
out.println("<head>");
out.println("<title>HelloWorld</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
out.println("<hr>");
out.println("HelloWorld");
out.println("</body></html>");
}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException
{
doGet(request, response);
}

}