Servlet 生命周期
- 通過調(diào)用 init () 方法進行初始化
- 調(diào)用 service() 方法來處理客戶端的請求
- 通過調(diào)用 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運行期間观腊,經(jīng)常需要一些輔助信息桐款。我們可以在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) 根據(jù)name返回對應(yīng)的初始化參數(shù)值
- Enumeration getInitParameterNames() 返回一個Enumeration對象漾岳,包含所以初始化參數(shù)名
- ServletContext getServletContext() 返回一個當前web的ServletContext對象
- String getServletName() 返回當前Servlet的名字
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletConfig config=this.getServletConfig();
}
ServletContext接口
在Servlet容器啟動時,會在每個Web應(yīng)用創(chuàng)建一個唯一的ServletContext對象代表當前應(yīng)用莹桅,該對象不僅封裝了當前web應(yīng)用所有信息昌执,還實現(xiàn)了多個Servlet之間的數(shù)據(jù)的共享。
獲取web程序的初始化參數(shù)
<web-app>
<context-param>
<param-name>test</param-name>
<param-value>one</param-value>
</context-param>
</web-app>
可以使用改接口定義的getInitParameterNames() 诈泼,getInitParameter(String name)方法來獲取參數(shù)值
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);
}
}
實現(xiàn)多個Servlet對象共享數(shù)據(jù)
- Enumeration getAttributeNames() 返回所有屬性名
- Object getAttribute(String name) 根據(jù)名字返回對應(yīng)的屬性值
- void removeAttribute(String name) 根據(jù)屬性名刪除匹配的屬性
- void setAttribute(String name,Object obj) 設(shè)置屬性
讀取web應(yīng)用下的資源文件
- set getResourcePaths(String path) 返回set集合懂拾,包含資源項目內(nèi)子目錄和文件目錄的路徑名稱,path必須以(/)開始
- String getRealPath(String path) 返回絕對路徑
- URL getResource(String path) 返回映射到某個資源文件的URL對象
- InputStream getResourceAsStream(String path) 返回映射到某個資源文件的InputStream輸入流對象铐达。