成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Servlet和JSP技術特性

開發 后端
本文介紹Servlet和JSP新特性,JSP是servlet技術的一個擴展,而不是廢棄servlet。在實際應用當中,servlet和JSP頁面一起使用。

J2EE 1.4提供用Java開發Web應用程序的新的Servlet 2.4和JavaServer Pages (JSP) 2.0技術。本文展示了這兩種技術的新特性,并在適當的地方提供每個特性的示例代碼。本文假設讀者熟悉以前的 Servlet 2.3和JSP 1.2版本。給出的例子已用Tomcat 5(包含在Java Web Services Developer Pack 1.2中)進行了測試。

Servlet和JSP毫無疑問是兩種應用最廣的J2EE技術。Servlet技術是用Java進行Web應用編程的基礎,也是JSP的基礎。但是,servlet編程可能會非常麻煩。特別是當你不得不發送一個沒多少代碼的長HTML頁面時更是如此。每個HTML標記必須嵌入到字符串中,用PrintWriter對象的顯示方式發送。是一種工作單調乏味而煩人的工作。使用servlet的另一個缺點是每一處改變都需要servlet程序員介入。

Sun公司了解到這一問題之后便開發了JSP作為解決方案。在JSP中,程序員和頁面設計員的分工變得容易多了,并且當Servlet和JSP頁面更改時會自動進行編譯。不過請注意,JSP是servlet技術的一個擴展,而不是廢棄servlet。在實際應用當中,servlet和JSP頁面一起使用。

Servlet 2.4提供了幾個新類,且不支持javax.servlet.SingleThreadModel接口。這一版本只支持HTTP 1.1,所以Servlet 2.4應用程序不適用于HTTP 1.0客戶程序。2.4版增加了請求監聽器和請求屬性監聽器,并能在一個應用程序中將servlet用作歡迎頁面。另外,Servlet 2.4還提供了更好的ServletRequest和RequestDispatcher對象,并更好地支持國際化。此外,現在是根據模式而不是文檔類型定義(document-type definition,DTD)文件來驗證部署描述符是否有效。這就意味著支持部署描述符的可擴展性。

下面具體說明Servlet 2.4的新特性。請求監聽器和請求屬性監聽器。Servlet 2.3增加了servlet上下文相關監聽器和會話相關監聽器。Servlet 2.4增加了新的javax.servlet.ServletRequestListener和javax.servlet.ServletRequestAttributeListener兩種接口,它們會通知你與Request對象有關的事件。如果你對每個Request對象的初始化和撤消感興趣,你可以實施ServletRequestListener接口。這個接口有兩個方法:requestInitialized()和requestDestroyed()。當需要一個Request對象時,servlet容器便調用requestInitialized方法。當不再需要Request對象時,servlet容器便調用requestDestroyed方法。

這兩個方法都從servlet容器接收一個javax.servlet.ServletRequestEvent對象。可以從ServletRequestEvent實例獲得servlet上下文和servlet請求。

第二個監聽器接口ServletRequestAttributeListener處理Request對象屬性的添加、更改和刪除。該接口有以下方法:
attributeAdded。向Request對象添加新屬性時由servlet容器調用。
attributeRemoved。從Request對象中刪除屬性時由servlet容器調用。
attributeReplaced。Request對象中現有屬性值被替換時由servlet容器調用。

這三個方法從servlet容器獲得javax.servlet.ServletRequestAttributeEvent類的一個實例。ServletRequestAttributeEvent類擴展了ServletRequestEvent類,并添加了兩個新方法:getName和getValue。getName方法返回觸發事件的屬性的名稱,getValue返回屬性的值。

代碼清單1 給出這兩個新的監聽器的示例類。當servlet容器調用方法時二者都顯示方法名。監聽器經過編譯后,它們的類文件必須被部署到WEB-INF/classes目錄下。ServletRequest中的新方法。在Servlet 2.4中,javax.servlet.ServletRequest接口增加了4個新方法:

getRemotePort。返回發送請求的客戶機或最后一個代理服務器的Internet Protocol(IP)源端口。
getLocalName。返回從中接收請求的IP接口的主機名。
getLocalAddr。返回從中接收請求的接口的IP地址。
getLocalPort。返回從中接收請求的接口的IP端口號。

請注意,在Servlet 2.3中,getServerName和getServerPort方法返回的值就是現在getLocalName和getLocalPort返回的值。在2.4版中,getServerName和getServerPort已重新定義。欲了解更多的信息,請查看API文檔。

將一個JSP頁面中的代碼示例如下

  1. out.println("<br>Remote Port : " +  
  2. request.getRemotePort());  
  3. out.println("<br>Local Name : " +  
  4. request.getLocalName());  
  5. out.println("<br>Local Addr : " +  
  6. request.getLocalAddr());  
  7. out.println("<br>Local Port : " +  
  8.  
  9. request.getLocalPort()); 

如果一個Request對象未被傳遞,則這些屬性的值為null。另一方面,在所傳遞來對象的資源中這些屬性將具有非null值。當某一個資源必須只能通過另一個資源調用而不能直接調用時,這些屬性值很有用。

舉個例子,在一個叫做myApp的Context(上下文)中有一個名為ModernServlet的servlet, ModernServlet被傳遞給TargetServlet。 在TargetServlet中,顯示代碼清單2中的代碼。

myApp的部署描述符包含以下和元素:

  1. <servlet> 
  2. <servlet-name>Modernservlet-name> 
  3. <servlet-class>ModernServlet  
  4. servlet-class> 
  5. servlet> 
  6. <servlet-mapping> 
  7. <servlet-name>Modernservlet-name> 
  8. <url-pattern>/Modernurl-pattern> 
  9. servlet-mapping> 
  10. <servlet> 
  11. <servlet-name>Targetservlet-name> 
  12. <servlet-class>TargetServlet  
  13. servlet-class> 
  14.  
  15. servlet> 
  16. <servlet-mapping> 
  17. <servlet-name>Targetservlet-name> 
  18. <url-pattern>/Targeturl-pattern> 
  19. servlet-mapping> 

【編輯推薦】

  1. 創建Servlet過濾器的向導
  2. 安裝Servlet和JSP開發工具
  3. 擴展Future Response Servlet
  4. Servlet容器的匹配過程
  5. 淺談user cache Servlet
責任編輯:佚名 來源: 中國IT實驗室
相關推薦

2009-07-03 10:46:48

JSP ServletJavaBean

2009-07-06 15:34:56

JSP和Servlet

2009-06-30 15:37:27

Servlet和JSP

2009-07-07 14:04:55

JSP入門

2009-07-08 09:35:53

Java ServleServlet 3.0

2009-06-25 14:26:07

JSPJavaBeanServlet

2009-08-20 17:35:47

Servlet和JSP

2009-07-03 11:21:43

Servlet和JSPJSP路徑

2009-07-08 09:22:03

Servlet和JSP

2009-07-03 14:41:03

2009-07-08 15:25:56

Servlet和JSP

2009-07-07 13:29:33

Servlet和JSP

2009-07-02 09:56:24

導入事件驅動技術JSP Servlet

2009-06-29 16:19:57

JSP Servlet

2009-07-03 14:02:51

2009-08-10 09:19:28

Servlet JSP

2009-07-07 10:08:49

Future Resp

2009-07-07 17:10:57

JSP和Servlet

2009-07-02 09:13:25

什么是JSPServlet

2009-06-29 15:39:53

Servlet和JSPServlet引擎
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美视频在线一区 | 国产精品久久久久一区二区三区 | 国产伦一区二区三区 | 最新国产精品精品视频 | 成人欧美一区二区三区色青冈 | 一级免费黄色 | 久久6| 色www精品视频在线观看 | 在线播放国产一区二区三区 | 国产三级一区二区三区 | 久久午夜精品 | 日日做夜夜爽毛片麻豆 | 亚洲毛片 | 国产精品亚洲一区二区三区在线观看 | 一区二区久久 | 亚洲狠狠| 99精品久久 | 99在线资源 | 国产成人91视频 | 91亚洲精品国偷拍自产在线观看 | 北条麻妃一区二区三区在线视频 | 国产美女在线观看 | 亚洲视频免费观看 | 二区精品 | 亚洲第一av | 国产91网站在线观看 | 国产乱码精品一区二区三区中文 | 国产毛片毛片 | 国产免费一区二区三区 | 在线观看涩涩视频 | 国产精品久久99 | www.黄色在线观看 | 国产三级大片 | 精精国产xxxx视频在线野外 | 精品国产乱码久久久久久闺蜜 | 亚洲永久 | 国产日韩欧美在线 | 在线免费av电影 | 亚洲视频在线看 | 国产精品一区二 | aacc678成免费人电影网站 |