<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java, Only Java!

    統(tǒng)計

    留言簿(20)

    積分與排名

    好友空間

    文檔技巧

    閱讀排行榜

    評論排行榜

    JSF(JavaServer Faces)學(xué)習(xí)手冊-入門篇(1.1)

     

    1.1             Servlet

    Servlet是一種用Java寫的Web組件,它的目的是產(chǎn)生動態(tài)內(nèi)容。它位于應(yīng)用服務(wù)器端,由Web容器管理它的執(zhí)行和生命周期。在此所討論的應(yīng)用服務(wù)器通常指的是Kingdee Apusic應(yīng)用服務(wù)器。

    1.1.1       Lifecycle Phase(生命周期)

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

    實例化:默認(rèn)構(gòu)造函數(shù)-->初始化:init()-->服務(wù)調(diào)用:service()-->銷毀:destroy()

    圖表 1?1

    init()

           public void init(ServletConfig config) throws ServletException

    每一次Servlet時,會調(diào)用init方法,它僅被調(diào)用一次,以通知servlet其已經(jīng)被裝入服務(wù)中,可以重寫此方法,為其提供只需執(zhí)行一次的初始化代碼,比如初始化某些值、裝入數(shù)據(jù)庫驅(qū)動程序等。

    service()

           public abstract void service(ServletRequest servletrequest,

                         ServletResponse servletresponse) throws ServletException,

                         IOException;

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

    destory

           public void destroy()

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

    1.1.2       Directory(目錄結(jié)構(gòu))

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

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

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

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

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

    1.1.3       Deploy Description(部署描述符)

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

    <?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后,需要重新啟動應(yīng)用才能生效。

    定義Context

    web.xml中還可以定義初始化用的上下文參數(shù),這些參數(shù)可以應(yīng)用于所有的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上下文參數(shù)

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

    l         getInitParametersName()。不需要傳入?yún)?shù),返回包含所有context參數(shù)名的java.util.Enumeration

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

     

    1.1.5       Listener偵聽器

    1.1.6       打包及部署應(yīng)用

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


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲激情在线视频| 亚洲AV无码不卡在线播放| 中文字幕亚洲男人的天堂网络| 国产黄色免费网站| 亚洲人成7777| 国产高清在线精品免费软件| 亚洲gay片在线gv网站| 国产免费爽爽视频免费可以看| 麻豆91免费视频| 国产成人亚洲精品狼色在线| 成人久久免费网站| 亚洲高清无在码在线无弹窗| 福利免费观看午夜体检区| 亚洲Av永久无码精品黑人| 夜色阁亚洲一区二区三区| 久久99久久成人免费播放| 亚洲av色影在线| 永久免费AV无码国产网站| 免费大片av手机看片高清| 国产精品亚洲A∨天堂不卡| 久草视频免费在线观看| 亚洲国产成人久久综合| 亚洲一区二区三区无码中文字幕| 久久午夜夜伦鲁鲁片无码免费| 亚洲伊人精品综合在合线| 日本一道在线日本一道高清不卡免费| 免费无码午夜福利片69| 亚洲AV无码一区东京热久久 | 国产最新凸凹视频免费| 人碰人碰人成人免费视频| 亚洲国产成人私人影院| 最近2019中文字幕免费看最新| 窝窝影视午夜看片免费| 久久久久亚洲av无码专区喷水| 成年男女男精品免费视频网站| 国产特黄一级一片免费| 激情亚洲一区国产精品| 亚洲午夜日韩高清一区| 1024免费福利永久观看网站| 午夜在线亚洲男人午在线| 亚洲精品免费在线|