Servlet接口為所有servlet提供常見的行為。
GenericServlet類實(shí)現(xiàn)了Servlet,ServletConfig和Serializable接口。它提供除了service方法之外,還實(shí)現(xiàn)了這些接口的所有方法。
GenericServlet類可以處理任何類型的請求,因此它與協(xié)議無關(guān)。
可以通過繼承GenericServlet類并提供服務(wù)方法的實(shí)現(xiàn)來創(chuàng)建通用的servlet。
GenericServlet類中有很多方法。它們分別如下:
| 序號 | 方法 | 描述 |
|---|---|---|
| 1 | public void init(ServletConfig config) |
用于初始化servlet |
| 2 | public abstract void service(ServletRequest request, ServletResponse response) |
為傳入請求提供服務(wù),每當(dāng)用戶請求一個(gè)servlet時(shí)調(diào)用它。 |
| 3 | public void destroy() |
在整個(gè)生命周期中僅調(diào)用一次,以表明servlet正在被銷毀。 |
| 4 | public ServletConfig getServletConfig() |
返回ServletConfig對象 |
| 5 | public String getServletInfo() |
返回有關(guān)servlet的信息,如作者,版權(quán),版本等。 |
| 6 | public void init() |
這是servlet程序員的一個(gè)方便的方法,現(xiàn)在不需要調(diào)用super.init(config) |
| 7 | public ServletContext getServletContext() |
返回ServletContext的對象。 |
| 8 | public String getInitParameter(String name) |
返回給定參數(shù)名稱的參數(shù)值。 |
| 9 | public Enumeration getInitParameterNames() |
返回web.xml文件中定義的所有參數(shù)。 |
| 10 | public String getServletName() |
返回servlet對象的名稱。 |
| 11 | public void log(String msg) |
在servlet日志文件中寫入給定的消息。 |
| 12 | public void log(String msg,Throwable t) |
將說明性消息寫入servlet日志文件和堆棧跟蹤。 |
下面是一個(gè)通過繼承GenericServlet類的servlet簡單例子。
打開Eclipse,創(chuàng)建一個(gè)動(dòng)態(tài)網(wǎng)站項(xiàng)目(Dynamic Web Project):genericservlet,如下 -
注:有關(guān)如何在Eclipse創(chuàng)建動(dòng)態(tài)網(wǎng)站項(xiàng)目,請參考:http://www.yiibai.com/servlet/creating-servlet-in-eclipse-ide.html
MyServlet.java的代碼如下所示 -
package com.yiibai;
import java.io.*;
import javax.servlet.*;
public class MyServlet extends GenericServlet {
public void service(ServletRequest req, ServletResponse res) throws IOException, ServletException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.print("<html><body>");
out.print("<div style=\"text-align:center;\"><h2>hello generic servlet</h2></div>");
out.print("</body></html>");
}
}
執(zhí)行上面項(xiàng)目,打開瀏覽器,輸入網(wǎng)址: http://localhost:8080/genericservlet/index 可以看到類似下面的界面 -
