Servlet接口为所有servlet提供常见的行为。
GenericServlet
类实现了Servlet
,ServletConfig
和Serializable
接口。它提供除了service
方法之外,还实现了这些接口的所有方法。
GenericServlet
类可以处理任何类型的请求,因此它与协议无关。
可以通过继承GenericServlet
类并提供服务方法的实现来创建通用的servlet
。
GenericServlet类的方法
GenericServlet
类中有很多方法。它们分别如下:
序号 | 方法 | 描述 |
---|---|---|
1 | public void init(ServletConfig config) |
用于初始化servlet |
2 | public abstract void service(ServletRequest request, ServletResponse response) |
为传入请求提供服务,每当用户请求一个servlet时调用它。 |
3 | public void destroy() |
在整个生命周期中仅调用一次,以表明servlet正在被销毁。 |
4 | public ServletConfig getServletConfig() |
返回ServletConfig 对象 |
5 | public String getServletInfo() |
返回有关servlet的信息,如作者,版权,版本等。 |
6 | public void init() |
这是servlet程序员的一个方便的方法,现在不需要调用super.init(config) |
7 | public ServletContext getServletContext() |
返回ServletContext 的对象。 |
8 | public String getInitParameter(String name) |
返回给定参数名称的参数值。 |
9 | public Enumeration getInitParameterNames() |
返回web.xml 文件中定义的所有参数。 |
10 | public String getServletName() |
返回servlet 对象的名称。 |
11 | public void log(String msg) |
在servlet日志文件中写入给定的消息。 |
12 | public void log(String msg,Throwable t) |
将说明性消息写入servlet日志文件和堆栈跟踪。 |
通过继承GenericServlet类的Servlet示例
下面是一个通过继承GenericServlet
类的servlet简单例子。
打开Eclipse,创建一个动态网站项目(Dynamic Web Project):genericservlet,如下 -
注:有关如何在Eclipse创建动态网站项目,请参考: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>");
}
}
执行上面项目,打开浏览器,输入网址: http://localhost:8080/genericservlet/index 可以看到类似下面的界面 -