Servlet 生命周期
- 通过调用 init () 方法进行初始化
- 调用 service() 方法来处理客户端的请求
- 通过调用 destroy() 方法终止
- 最后由 JVM 的垃圾回收器进行垃圾回收
public class ServletTest extends HttpServlet {
//继承HttpServlet
public void destroy() {
//销毁方法
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理get请求
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理post请求
}
public void init() throws ServletException {
//
}
}
Servlet配置
//Servlet的名称和具体位置
<servlet>
<servlet-name>RegServlet</servlet-name>
<servlet-class>servlet.RegServlet</servlet-class>
</servlet>
//Servlet的名称和映射的地址,url-pattern可配置多个
<servlet-mapping>
<servlet-name>RegServlet</servlet-name>
<url-pattern>/servlet/RegServlet</url-pattern>
</servlet-mapping>
ServletConfig和ServletContext
ServletConfig接口
在servlet运行期间,经常需要一些辅助信息。我们可以在web.xml中使用一个或者多个<init-param>元素进行配置。当Tomcat初始化一个Servlet时,会将其配置信息封装到一个servletConfig对象中。
//Servlet的名称和具体位置
<servlet>
<servlet-name>RegServlet</servlet-name>
<servlet-class>servlet.RegServlet</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet>
//Servlet的名称和映射的地址,url-pattern可配置多个
<servlet-mapping>
<servlet-name>RegServlet</servlet-name>
<url-pattern>/servlet/RegServlet</url-pattern>
</servlet-mapping>
ServletConfig常用方法
- String getInitParameter(String name) 根据name返回对应的初始化参数值
- Enumeration getInitParameterNames() 返回一个Enumeration对象,包含所以初始化参数名
- ServletContext getServletContext() 返回一个当前web的ServletContext对象
- String getServletName() 返回当前Servlet的名字
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig config=this.getServletConfig();
}
ServletContext接口
在Servlet容器启动时,会在每个Web应用创建一个唯一的ServletContext对象代表当前应用,该对象不仅封装了当前web应用所有信息,还实现了多个Servlet之间的数据的共享。
获取web程序的初始化参数
<web-app>
<context-param>
<param-name>test</param-name>
<param-value>one</param-value>
</context-param>
</web-app>
可以使用改接口定义的getInitParameterNames() ,getInitParameter(String name)方法来获取参数值
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context=this.getServletContext();
Enumeration<String> Names=context.getInitParameterNames();
while(Names.hasMoreElements()){
String name=Names.nextElement();
String value=context.getInitParameter(name);
}
}
实现多个Servlet对象共享数据
- Enumeration getAttributeNames() 返回所有属性名
- Object getAttribute(String name) 根据名字返回对应的属性值
- void removeAttribute(String name) 根据属性名删除匹配的属性
- void setAttribute(String name,Object obj) 设置属性
读取web应用下的资源文件
- set getResourcePaths(String path) 返回set集合,包含资源项目内子目录和文件目录的路径名称,path必须以(/)开始
- String getRealPath(String path) 返回绝对路径
- URL getResource(String path) 返回映射到某个资源文件的URL对象
- InputStream getResourceAsStream(String path) 返回映射到某个资源文件的InputStream输入流对象。