国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Servlet容器工作原理

2019-11-18 15:47:31
字體:
供稿:網(wǎng)友

  本文介紹servlet 容器的基本原理。現(xiàn)有兩個(gè)Servlet容器,第一個(gè)很簡(jiǎn)單,第二個(gè)則是根據(jù)第一個(gè)寫出。為了使第一個(gè)容器盡量簡(jiǎn)單,所以沒有做得很完整。復(fù)雜一些的 servlet 容器 (包括 TOMCAT 4 和 5) 可以參考其他資料。

  兩個(gè)servlet容器都處理簡(jiǎn)單的servlet及staticResource。您可以使用 webroot/ 目錄下的 PRimitiveServlet 來測(cè)試它。復(fù)雜一些的 servlet會(huì)超出這些容器的容量,創(chuàng)建復(fù)雜servlet容器不是本文的內(nèi)容,所以在這里就不具體介紹了。

  兩個(gè)應(yīng)用程序的類都封裝在ex02.pyrmont 包下。在理解應(yīng)用程序如何運(yùn)作之前,您必須熟悉 javax.servlet.Servlet 接口。首先就來介紹這個(gè)接口。隨后,就介紹 servlet 容器服務(wù)servlet 的具體內(nèi)容。

  javax.servlet.Servlet 接口

  servlet編程,需要引用以下兩個(gè)類和接口:javax.servlet 和 javax.servlet.http,在這些類和接口中,javax.servlet.Servlet接口尤為重要。所有的 servlet 必須實(shí)現(xiàn)這個(gè)接口或繼續(xù)已實(shí)現(xiàn)這個(gè)接口的類。

  Servlet 接口有五個(gè)方法,如下:

 public void init(ServletConfig config) throws ServletException
 public void service(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException
 public void destroy()
 public ServletConfig getServletConfig()
 public java.lang.String getServletInfo()
  init、service和 destroy 方法是 Servlet 生命周期的方法。當(dāng) Servlet 類實(shí)例化后,容器加載 init,以通知 servlet 它已進(jìn)入服務(wù)行列。init 方法必須被加載,Servelt 才能接收和請(qǐng)求。假如要載入數(shù)據(jù)庫驅(qū)動(dòng)程序、初始化一些值等等,程序員可以重寫這個(gè)方法。在其他情況下,這個(gè)方法一般為空。

  service 方法由 Servlet 容器調(diào)用,以答應(yīng) Servlet 響應(yīng)一個(gè)請(qǐng)求。Servlet 容器傳遞 javax.servlet.ServletRequest 對(duì)象和 javax.servlet.ServletResponse 對(duì)象。ServletRequest 對(duì)象包含客戶端 HTTP 請(qǐng)求信息,ServletResponse 則封裝servlet 響應(yīng)。通過這兩個(gè)對(duì)象,您可以寫一些需要 servlet怎樣服務(wù)和客戶怎樣請(qǐng)求的代碼。

  從service中刪除Servlet實(shí)例之前,容器調(diào)用destroy方法。在servlet容器關(guān)閉或servlet 容器需要更多的內(nèi)存時(shí),就調(diào)用它。這個(gè)方法只有在servlet 的service 方法內(nèi)的所有線程都退出的時(shí)候,或在超時(shí)的時(shí)候才會(huì)被調(diào)用。在 servlet 容器調(diào)用 destroy方法之后,它將不再調(diào)用 servlet的 service方法。

  destroy 方法給了servlet機(jī)會(huì),來清除所有空閑資源(比如:內(nèi)存,文件處理和線程),以確保在內(nèi)存的持續(xù)狀態(tài)和 servlet的當(dāng)前狀態(tài)是同步的。Listing 2.1 包含了PrimitiveServlet 的代碼,此servlet非常簡(jiǎn)單,可以用它來測(cè)試本文的servlet容器應(yīng)用程序。

  PrimitiveServlet 類實(shí)現(xiàn)了javax.servlet.Servlet 并提供了五個(gè)servlet方法的接口。它做的事情也很簡(jiǎn)單:每次調(diào)用 init、service 或 destroy方法的時(shí)候,servlet就向控制口寫入方法名。service 方法也從ServletResponsec對(duì)象中獲得java.io.PrintWriter 對(duì)象,并發(fā)送字符串到瀏覽器。

  Listing 2.1.PrimitiveServlet.java

import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;

public class PrimitiveServlet implements Servlet {
public void init(ServletConfig config) throws ServletException {
System.out.println("init");
}

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
System.out.println("from service");
PrintWriter out = response.getWriter();
out.println("Hello.Roses are red.");
out.print("Violets are blue.");
}

public void destroy() {
System.out.println("destroy");
}

public String getServletInfo() {
return null;
}

public ServletConfig getServletConfig() {
return null;
}
}進(jìn)入討論組討論。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江源县| 报价| 改则县| 通江县| 涡阳县| 罗源县| 墨脱县| 榆林市| 汝城县| 罗平县| 大埔县| 昭平县| 阳山县| 惠水县| 江西省| 汤原县| 惠安县| SHOW| 酒泉市| 平顶山市| 长丰县| 沂南县| 武隆县| 定结县| 盘锦市| 江陵县| 隆昌县| 宜宾县| 四川省| 玛纳斯县| 新巴尔虎右旗| 永丰县| 徐闻县| 墨江| 唐河县| 东乌珠穆沁旗| 茂名市| 姜堰市| 宁武县| 斗六市| 阿坝县|