Java, Only Java!

          統計

          留言簿(20)

          積分與排名

          好友空間

          文檔技巧

          閱讀排行榜

          評論排行榜

          JSF(JavaServer Faces)學習手冊-入門篇(1.1)

           

          1.1             Servlet

          Servlet是一種用Java寫的Web組件,它的目的是產生動態內容。它位于應用服務器端,由Web容器管理它的執行和生命周期。在此所討論的應用服務器通常指的是Kingdee Apusic應用服務器。

          1.1.1       Lifecycle Phase(生命周期)

          Servlet使用HTTP Request-Response協議間接地通過容器與Web用戶進行交互。在Servlet的體系結構中,Web服務器向應用服務器傳遞請求。應用服務器使用JVMJava Virtual MachineJava虛擬機)執行Servlet,在并發處理多個請求時啟動多個獨立的輕量級線程就可以滿足,對于Servlet的加載與初始化只有一次,大大降低了系統開銷。當請求結束時,應用服務器在內存中保留Servlet,等待新的請求。說明了一個Servlet生命周期

          實例化:默認構造函數-->初始化:init()-->服務調用:service()-->銷毀:destroy()

          圖表 1?1

          init()

                 public void init(ServletConfig config) throws ServletException

          每一次Servlet時,會調用init方法,它僅被調用一次,以通知servlet其已經被裝入服務中,可以重寫此方法,為其提供只需執行一次的初始化代碼,比如初始化某些值、裝入數據庫驅動程序等。

          service()

                 public abstract void service(ServletRequest servletrequest,

                               ServletResponse servletresponse) throws ServletException,

                               IOException;

          每次調用servlet時,servlet容器就會調用相應servletservice方法。對于每個HTTP請求,servlet容器都會創建一個請求對象和一個響應對象,請求對象實現了javax.servlet.ServletRequestjavax.servlet.http.HttpServletRequest接口,而響應對象實現了javax.servlet.ServletResponsejavax.servlet.http.HttpServletResponser接口,并將它們傳給service方法。請求對象封裝了從HTTP請求里解析出來的,并且對servlet有用的信息,比如請求的URL、請求的HEADcookie及請求的參數等。當請求完畢以后,servlet使用響應對象將響應發送回Web客戶端。

          destory

                 public void destroy()

          在刪除一個servlet實例前,servlet容器會調用其destroy方法,這種情況一般發生在servlet容器需要被關閉或釋放內存時。可以使用此方法來清除占用的資源(如內存、文件句柄及線程等)或確保某些持久化數據被保存。

          1.1.2       Directory(目錄結構)

          為了運行servlet應用,需要一個servlet容器。Apusic是可用的容器之一,本書的代碼都將在Apusic 5.0測試通過,但是也可以在其他支持Servlet 2.5規范的servlet容器來運行。

          Servlet需要按照J2EE規范定義的目錄結構打包后才可以部署到應用服務器上運行。打包有兩種格式:EARWAREAR是標準的J2EE應用格式,WAR是一個Web打包文件。無論哪種打包方式,都會包括META-INF目錄,是應用程序配置文件所在目錄,具體說明可以參考《Apusic 5.0安裝參考手冊》;還會有WEB-INF目錄,是Web應用配置文件所在目錄。

          WEB-INF目錄下包括兩個子目錄classeslibclasses目錄包括Web應用中用到的所有Java類(Servlet類也屬于Java類一種),目錄結構反映了Java包的名稱;lib目錄包括了Web應用中所引用的所有庫文件。

          所有與網頁展現相關的文件(JSP文件是動態的網頁展現)都直接存放在WAR根目錄下。為了更好地組織這些文件,可以在WAR中直接建立子目錄。例如:所有的JSP文件都放在jsp子目錄中,所有的圖片文件都放在images子目錄中。除了WEB-INF目錄以外,Web客戶端可以直接訪問WAR中的所有文件。

          一般情況下,一個Web應用會有一個部署描述符,文件名稱是web.xmlXML文件,其中包含了應用的完整描述,此文件也放在WEB-INF目錄下。

          1.1.3       Deploy Description(部署描述符)

          web.xml(部署描述符)是XML文件,可以使用文本編輯器來編輯它。符合servlet 2.5規范的應用部署描述符格式如下:

          <?xml version="1.0" encoding="UTF-8"?>

          <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

          </web-app>

          這個XML頭指明了該部署描述符的XML模式(XML Schema Description)可以從http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd下載。如果打開這個文件,可以了解到里面有許多元素,但是這些元素都是可選的,不強制使用任何一個。

          提示 1?1所有的元素都插入到<web-app></web-app>之間。

          定義Servlet

          Web瀏覽器訪問servlet之前,需要先在web.xml里將其映射到一個路徑。例如: 程序清單 1?1將一個叫做MyServletservlet文件映射到/MyURL路徑上。

                 <servlet>

                        <servlet-name>MyServlet</servlet-name>

                        <servlet-class>ch01.MyServlet</servlet-class>

                 </servlet>

                 <servlet-mapping>

                        <servlet-name>MyServlet</servlet-name>

                        <url-pattern>/MyURL</url-pattern>

                 </servlet-mapping>

          程序清單 1?1  web.xml中的servlet映射

          這樣用戶就可以通過http://localhost:6888/appName/MyURL來訪問該servlet

          提示 1?2修改了web.xml后,需要重新啟動應用才能生效。

          定義Context

          web.xml中還可以定義初始化用的上下文參數,這些參數可以應用于所有的servletJSP頁面中,從而避免將這些信息硬編碼在servlet的代碼里。例如:程序清單 1?2userName/zhuyuanxiangpassword/apusic進行了注入。

                 <context-param>

                        <param-name>userName</param-name>

                        <param-value>zhuyuanxiang</param-value>

                 </context-param>

                 <context-param>

                        <param-name>password</param-name>

                        <param-value>apusic</param-value>

                 </context-param>

          程序清單 1?2  web.xmlcontext的定義

          1.1.4       Context Parameter上下文參數

          為了獲取web.xml中定義的上下文參數,首先需要獲得實現ServletContext接口對象,然后再調用接口的兩個方法:

          l         getInitParametersName()。不需要傳入參數,返回包含所有context參數名的java.util.Enumeration

          l         getInitParameter()。需要傳入一個String類型參數,參數是上下文名字,返回包含上下文定義的值。

           

          1.1.5       Listener偵聽器

          1.1.6       打包及部署應用

          posted on 2007-09-11 14:04 zYx.Tom 閱讀(859) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 浦城县| 永登县| 讷河市| 商南县| 玉溪市| 沛县| 含山县| 肇东市| 宣威市| 公主岭市| 旬邑县| 抚顺市| 崇左市| 漳州市| 麻江县| 五原县| 靖安县| 当涂县| 西充县| 马山县| 博白县| 深圳市| 枣庄市| 台安县| 莫力| 临潭县| 楚雄市| 巴塘县| 遂溪县| 高青县| 清水县| 株洲县| 张家川| 尉氏县| 西青区| 商城县| 三河市| 五河县| 衡阳县| 宣恩县| 琼结县|