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

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

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

    即使世界明天毀滅,我也要在今天種下我的葡萄樹。
    posts - 112, comments - 14, trackbacks - 0, articles - 11

    Base-Jsp-14-servlet介紹

    Posted on 2006-05-24 16:48 閱讀(253) 評論(0)  編輯  收藏 所屬分類: WEB Design

    ? servlet JSP 結合使用,可以把應用程序的邏輯和外觀呈現部分清楚的分開。

    ? servlet API 由兩個程序包組成

    ?????? a javax.servlet

    ?????? a javax.servlet.http

    ? servlet 的實質是實現了借口 javax.servlet.Servlet 的類

    ? web 容器管理 servlet 生命周期的所有方面,它根據需要創建 servlet 類的實例,將請求傳

    ?????? 遞給實例進行處理,最終刪除實例。

    ? 容器會在 servlet 生命周期的適當時間調用下列方法

    ?????? a public void init() throws ServletException

    ?????? ?????? 在發送第一個請求之前調用一次。

    ?????? a public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException,IOException

    反復調用以使 servlet 處理 GET 請求。

    ?????? a public void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException,IOException

    反復調用以使 servlet 處理 POST 請求。

    ?????? a public void destroy()

    ????????????? servlet 停止服務前調用一次。

    a 容器只為每個 servlet 創建一個實例,這意味著 servlet 必須是線程安全的,即,能夠同時

    ?????? 處理多個請求,每個處理都通過 servlet 代碼作為單獨的線程來處理。

    ? 編譯和安裝 servlet

    ?????? a 要編譯 servlet ,首先必須確保 servlet.jar 文件在 CLASSPATH

    ?????? a 編譯完后,將類文件放在 WEB-INF/classes 目錄中(容器自動在 WEB-INF/classes

    ????????????? 錄中查找類);也可以用程序包形式出現,此時目錄結構為

    ????????????? WEB-INF/classes/com/mycompany ;還可以將類打包到一個 JAR 文件中,拷貝到

    ????????????? WEB-INF/lib 目錄中。

    ?????? a 測試

    ????????????? http://localhost:8080/servlet/com.mycompany.HelloWorld

    ? servlet 作為所有應用程序請求的公共入口點時,可以獲得對應用程序頁面流的整體控

    ?????? 制。

    ? 當使用 servlet 作為控制器時,必須處理下列基本要求

    ?????? a 所有請求處理都必須傳遞到單獨的控制器 servlet 中。

    ?????? a servlet 必須能夠區分請求,以便進行不同類型的處理。

    ?????? a 可以使用現成的 struts servlet

    a struts servlet 根據請求 URI 中的一部分來斷定請求的類型,查找對應的行為類(使用

    ?????? 配制信息),并調用 execute() 方法。

    a execute() 方法不顯示應答,只關心商務邏輯。該方法返回一個 struts ActionForward

    ?????? 例,其中包含應答應該調用以顯示應答的 JSP 頁面的相關信息。該頁面由邏輯名稱

    ?????? 進行標示,并影射到配置文件中的實際頁面邏輯上。因此可以通過重新配置,而不

    ?????? 是改變代碼,從而至少在某種程度上控制頁面流。

    ? 使用 servlet 的最佳解決方案是定義 servlet 的映射規則

    ?????? 而不是使用: /myapp/servlet 開頭的調用

    ?????? 或是使用 <form action=”/ora/servlet/controller/someAction”>

    ?????? 以上方式的調用 servlet 將會導致安全問題和程序部署的問題。

    ? struts

    ?????? a 配置描述符中映射規則確保了所有請求都可以到達 struts servlet

    ?????? a struts-config.xml 中的行為映射提供了區分不同請求時所需的信息。

    ?????? a 最后則有實現一些老式的編碼并實現行為類。

    ?????? a struts Action 中的 execute() 方法執行請求處理, execute() 方法返回后, struts servlet 調

    ????????????? 用指定的資源,一般情況下是 JSP 頁面,內容是針對該請求的應答。

    ?????? a ActionMapping 類封裝了所有可以在 Struts 配置文件中定義的映射信息。里面完成邏

    ????????????? 輯頁面名稱和實際頁面名稱之間的映射。可以同 <forward> 元素設置這些映射

    ????????????? 可以用如下方法取得 ActionForward 的實例:

    ????????????? ActionForward nextPage=(ActionMapping)mapping.findForward(“main”);

    ????????????? nextPage = new ActionForward(next,true);

    ????????????? ActionForward 構造函數中的第 2 個參數:

    ????????????? True: 使用重定向

    ????????????? False: 使用轉發

    ?????? a <global-forwards> 定義可以用于所有行為的映射,而 <action> 中的 <forward> 則定義了

    ????????????? 僅可用于該行為的映射。

    ?????? a struts servlet 收到一個請求時,首先使用 processPath() 方法來提取映射到行為類的

    ????????????? 部分,然后查處匹配行為類的實例,并調用 execute() 方法。

    ?????? a execute() 方法返回的 ActionForward 實例由 prcessActionForward() 方法處理。該方法實

    ????????????? 現了如何轉發控制。

    ?????? a ActionForward 包含了 struts 將控制傳遞給下一個組件時需要的所有信息。

    ?????? a servlet 重定向 API response.sendRedirect(response.encodeRedirectURL(path));

    ?????? a servlet 轉發 API: RequestDispatcher rd = getSevletContext().getRequestDispatcher(path);

    ?????????????????????????????????? rd.forward(request,response);

    ????????????? 此行為與 <jsp:forward> 行為相同,永久的獎控制傳遞個目標。

    ????????????? a 它還包括另一個 include() 方法:該方法相同與 <jsp:include> 行為:臨時將控制傳

    ???????????????????? 遞給目標,生產一部分應答,但是不設置應答首部。

    ?????? a encodeRedirectURL(path) API :如果瀏覽器不支持 cookie ,該方法將在 URL 中插入會

    ????????????? ID 。

    ? 所有請求處理都必須傳遞到單獨的控制器 servlet

    web 應用程序的配置描述符中可以定義 3 種映射規則:

    ?????? a 完全匹配:是 URI 匹配與該 URI 完全相同的模式路徑,

    ????????????? 例:請求 /contextPath/exactMatch 與模式 /exactMatch 向匹配

    ?????? a 路徑前綴匹配規則:使 URI 匹配與該 URI 一樣具有最多路徑元素的模式路徑

    ????????????? 例: /contextPath/pathPrefix //contextPath/pathPrefix/pathInfo 都與模式

    ???????????????????? /pathPrefix/* 匹配

    ?????? a 擴展名匹配規則:使 URI 匹配與該 URI 具有相同擴展名的擴展模式

    ????????????? 例: /contextPath/name.extension /contextPath/aPath/name.extension 都與 *.extension

    ???????????????????? 匹配

    ?????? a web 容器以“完全匹配”、“路徑前綴規則”、“擴展名規則”的順序查找匹配項。

    ?????? a “完全匹配”規則很少使用, struts servlet 只使用“路徑前綴匹配規則”和“擴展名

    ????????????? 匹配規則”

    ?????? 例:

    ????????????? <wep-app>

    ??? ??? ... ...

    ??? ??? <servlet>

    ??????? ??? <servlet-name> action </servlet-name>

    ??????? ??? <servlet-calss>

    ??????????? ??? org.apache.struts.action.ActionServlet

    ??????? ??? </servlet-calss> ??

    ??? ??? </servlet>

    ??? ??? <servlet-mapping>

    ??? ??????? <servlet-name> action </servlet-name>

    ??? ??????? <url-patterb> *.do </url-pattern>

    ??? ??? </servlet-mapping>

    ??? ??? ... ...

    </wep-app>

    此時匹配<form action= someAction.do >

    a 也可以使用 路徑前綴匹配規則

    ??? ??? <servlet-mapping>

    ??? ??????? <servlet-name> action </servlet-name>

    ??? ??????? <url-patterb> /ch18/do/* </url-pattern>

    ??? ??? </servlet-mapping>

    此時匹配

    /ch18/do

    a 在這里容器會為所有以 .do 結尾的請求調用 struts servlet

    ? servlet 必須能夠區分請求,以便進行不同類型的處理

    ?????? a Struts sevlet 使用配置文件( sruts-config.xml ),將具體請求映射到具體的行為類上來

    ????????????? 完成該任務。

    ?????? a /ora/ch18/protected/do/storeMsg

    ????????????? 使用路徑前綴匹配規則,經過 struts processPath API 處理后為

    ????????????? /storeMsg

    ????????????? 這樣處理會有安全問題,所以應該堅持使用擴展名匹配規則

    ?????? a /ora/ch18/protected/storeMsg.do

    ????????????? 使用擴展名匹配規則,經過 struts processPath API 處理后為

    ????????????? /ch18/protected/storeMsg

    ?????? a cookies setMaxAge maxAge , 如果 maxAge-=0 則告訴瀏覽器刪除 cookie

    ?????? a servlet 規范將保存 throwable 對象的請求屬性命名為

    ????????????? Javax.servlet.error.exception

    ?????? a JSP 規范將保存 throwable 對象的請求屬性命名為

    ????????????? Javax.servlet.jsp.jspException

    主站蜘蛛池模板: 亚洲日产韩国一二三四区| 暖暖日本免费中文字幕| 亚洲性在线看高清h片| 亚洲日本VA中文字幕久久道具| 国产美女视频免费观看的网站| 久久久久久久久亚洲| 黄瓜视频高清在线看免费下载| 白白色免费在线视频| 亚洲精品国产成人专区| 成全视频免费高清| 91免费国产视频| 亚洲爽爽一区二区三区| 最近免费中文在线视频| 777亚洲精品乱码久久久久久| 日韩在线视频免费看| 免费精品99久久国产综合精品| 亚洲国产精品无码观看久久| 日韩在线视频免费看| 免费国产黄网站在线观看可以下载 | 91亚洲国产成人久久精品| 午夜免费福利片观看| 亚洲综合国产精品| 亚洲一区在线免费观看| 精品日韩亚洲AV无码一区二区三区 | 亚洲熟妇无码八AV在线播放| 野花高清在线电影观看免费视频 | 黄色免费网址大全| 亚洲国产综合无码一区二区二三区| 国产亚洲精品仙踪林在线播放| 亚洲一区二区三区四区在线观看| 国产免费午夜a无码v视频| 四虎1515hh永久久免费| a级毛片免费播放| 美女无遮挡免费视频网站| 亚洲人成网男女大片在线播放| 国产成人免费爽爽爽视频| 久久久99精品免费观看| 精品人妻系列无码人妻免费视频 | 一级毛片免费视频网站| 亚洲狠狠综合久久| 亚洲综合熟女久久久30p|