Servlet中常用的接口、类、方法
Sun 公司提供了一系列的接口和类用于 Servlet 技术的开发,其中最重要的接口是javax.servlet.Servlet。
1.Servlet接口
接口声明: public abstract interface Servlet
方法声明 |
功能描述 |
void init(ServletConfig config) |
容器在创建好 Servlet 对象后,就会调用此方法。该方法接收一个 ServletConfig 类型的参数,Servlet 容器通过该参数向 Servlet 传递初始化配置信息 |
ServletConfig getServletConfig () |
用于获取 Servlet 对象的配置信息,返回 Servlet 的 ServletConfig 对象 |
String getServletInfo() |
返回一个字符串,其中包含关于 Servlet 的信息,如作者、版本和版权等信息 |
void service (ServletRequest request,ServletResponse response) |
负责响应用户的请求,当容器接收到客户端访问 Servlet 对象的请求时,就会调用此方法。 |
void destroy() |
负责释放 Servlet 对象占用的资源。当服务器关闭或者 Servlet 对象被移除时,Servlet 对象会被销毁,容器会调用此方法 |
针对 Servlet 的接口,Sun 公司提供了两个默认的接口实现类:GenericServlet 和 HttpServlet。其中,GenericServlet 是一个抽象类,该类为 Servlet 接口提供了部分实现,它并没有实现 HTTP 请求处理。
public abstract class GenericServlet implements javax.servlet.Servlet, javax.servlet.ServletConfig, java.io.Serializable {
HttpServlet 是 GenericServlet 的子类,它继承了 GenericServlet 的所有方法,并且为 HTTP 请求中的 GET 和 POST 等类型提供了具体的操作方法。通常情况下,编写的 Servlet 类都继承自 HttpServlet,在开发中使用的也是 HttpServlet 对象。
public abstract class HttpServlet extends GenericServlet {
HttpServlet 类中包含两个常用方法
方法声明 |
功能描述 |
protected void doGet (HttpServletRequest req, HttpServletResponse resp) |
用于处理 GET 类型的 HTTP 请求的方法 |
protected void doPost(HttpServletRequest req, HttpServletResponse resp) |
用于处理 POST 类型的 HTTP 请求的方法 |
例如:
package com.wangxing.servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class TestServlet implements Servlet{
@Override
public void destroy() {
System.out.println("销毁Servlet对象的方法");
}
@Override
public ServletConfig getServletConfig() {
System.out.println("得到ServletConfig对象");
return null;
}
@Override
public String getServletInfo() {
System.out.println("得到包含Servlet信息的字符串");
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("Servlet初始化方法");
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("处理请求做出响应的方法");
}
}
配置web.xml
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>com.wangxing.servlet.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
2.ServletConfig接口
public abstract interface ServletConfig
在运行 Servlet 程序时,可能需要一些辅助信息,例如,文件使用的编码、使用 Servlet 程序的共享信息等,这些信息可以在 web.xml 文件中使用一个或多个 <init-param> 元素进行配置。当 Tomcat 初始化一个 Servlet 时,会将该 Servlet 的配置信息封装到 ServletConfig 对象中,此时可以通过调用 init(ServletConfig config)方法将 ServletConfig 对象传递给 Servlet。
ServletConfig就是封装Servlet运行时的辅助信息的接口。
ServletConfig 接口中定义了一系列获取配置信息的方法。
方法说明 |
功能描述 |
String getInitParameter(String name) |
根据初始化参数名返回对应的初始化参数值 |
ServletContext getServletContext() |
返回一个代表当前 Web 应用的 ServletContext 对象 |
String getServletName() |
返回 Servlet 的名字,即 web.xml 中 <servlet-name>元素的值 |
ServletConfig接口对象我们不需要自己手动获取,servlet接口的init方法已经传递有了。
例如:通过ServletConfig接口对象得到web.xml文件中配置的初始化参数值,和配置的
package com.wangxing.servlet;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ConfigServlet extends HttpServlet{
//得到initconfig对象的两种方法
// @Override
// public void init(ServletConfig config) throws ServletException {
// //String getInitParameter(String name) 根据初始化参数名返回对应的初始化参数值
// //参数就是web.xml中param-name标记的值
// String name = config.getInitParameter("name");
// String pass = config.getInitParameter("pass");
// System.out.println("name=="+name+" "+"pass=="+pass);
// }
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override