偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Servlet和JSP技術(shù)特性

開(kāi)發(fā) 后端
本文介紹Servlet和JSP新特性,JSP是servlet技術(shù)的一個(gè)擴(kuò)展,而不是廢棄servlet。在實(shí)際應(yīng)用當(dāng)中,servlet和JSP頁(yè)面一起使用。

J2EE 1.4提供用Java開(kāi)發(fā)Web應(yīng)用程序的新的Servlet 2.4和JavaServer Pages (JSP) 2.0技術(shù)。本文展示了這兩種技術(shù)的新特性,并在適當(dāng)?shù)牡胤教峁┟總€(gè)特性的示例代碼。本文假設(shè)讀者熟悉以前的 Servlet 2.3和JSP 1.2版本。給出的例子已用Tomcat 5(包含在Java Web Services Developer Pack 1.2中)進(jìn)行了測(cè)試。

Servlet和JSP毫無(wú)疑問(wèn)是兩種應(yīng)用最廣的J2EE技術(shù)。Servlet技術(shù)是用Java進(jìn)行Web應(yīng)用編程的基礎(chǔ),也是JSP的基礎(chǔ)。但是,servlet編程可能會(huì)非常麻煩。特別是當(dāng)你不得不發(fā)送一個(gè)沒(méi)多少代碼的長(zhǎng)HTML頁(yè)面時(shí)更是如此。每個(gè)HTML標(biāo)記必須嵌入到字符串中,用PrintWriter對(duì)象的顯示方式發(fā)送。是一種工作單調(diào)乏味而煩人的工作。使用servlet的另一個(gè)缺點(diǎn)是每一處改變都需要servlet程序員介入。

Sun公司了解到這一問(wèn)題之后便開(kāi)發(fā)了JSP作為解決方案。在JSP中,程序員和頁(yè)面設(shè)計(jì)員的分工變得容易多了,并且當(dāng)Servlet和JSP頁(yè)面更改時(shí)會(huì)自動(dòng)進(jìn)行編譯。不過(guò)請(qǐng)注意,JSP是servlet技術(shù)的一個(gè)擴(kuò)展,而不是廢棄servlet。在實(shí)際應(yīng)用當(dāng)中,servlet和JSP頁(yè)面一起使用。

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

下面具體說(shuō)明Servlet 2.4的新特性。請(qǐng)求監(jiān)聽(tīng)器和請(qǐng)求屬性監(jiān)聽(tīng)器。Servlet 2.3增加了servlet上下文相關(guān)監(jiān)聽(tīng)器和會(huì)話相關(guān)監(jiān)聽(tīng)器。Servlet 2.4增加了新的javax.servlet.ServletRequestListener和javax.servlet.ServletRequestAttributeListener兩種接口,它們會(huì)通知你與Request對(duì)象有關(guān)的事件。如果你對(duì)每個(gè)Request對(duì)象的初始化和撤消感興趣,你可以實(shí)施ServletRequestListener接口。這個(gè)接口有兩個(gè)方法:requestInitialized()和requestDestroyed()。當(dāng)需要一個(gè)Request對(duì)象時(shí),servlet容器便調(diào)用requestInitialized方法。當(dāng)不再需要Request對(duì)象時(shí),servlet容器便調(diào)用requestDestroyed方法。

這兩個(gè)方法都從servlet容器接收一個(gè)javax.servlet.ServletRequestEvent對(duì)象??梢詮腟ervletRequestEvent實(shí)例獲得servlet上下文和servlet請(qǐng)求。

第二個(gè)監(jiān)聽(tīng)器接口ServletRequestAttributeListener處理Request對(duì)象屬性的添加、更改和刪除。該接口有以下方法:
attributeAdded。向Request對(duì)象添加新屬性時(shí)由servlet容器調(diào)用。
attributeRemoved。從Request對(duì)象中刪除屬性時(shí)由servlet容器調(diào)用。
attributeReplaced。Request對(duì)象中現(xiàn)有屬性值被替換時(shí)由servlet容器調(diào)用。

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

代碼清單1 給出這兩個(gè)新的監(jiān)聽(tīng)器的示例類。當(dāng)servlet容器調(diào)用方法時(shí)二者都顯示方法名。監(jiān)聽(tīng)器經(jīng)過(guò)編譯后,它們的類文件必須被部署到WEB-INF/classes目錄下。ServletRequest中的新方法。在Servlet 2.4中,javax.servlet.ServletRequest接口增加了4個(gè)新方法:

getRemotePort。返回發(fā)送請(qǐng)求的客戶機(jī)或最后一個(gè)代理服務(wù)器的Internet Protocol(IP)源端口。
getLocalName。返回從中接收請(qǐng)求的IP接口的主機(jī)名。
getLocalAddr。返回從中接收請(qǐng)求的接口的IP地址。
getLocalPort。返回從中接收請(qǐng)求的接口的IP端口號(hào)。

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

將一個(gè)JSP頁(yè)面中的代碼示例如下

  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()); 

如果一個(gè)Request對(duì)象未被傳遞,則這些屬性的值為null。另一方面,在所傳遞來(lái)對(duì)象的資源中這些屬性將具有非null值。當(dāng)某一個(gè)資源必須只能通過(guò)另一個(gè)資源調(diào)用而不能直接調(diào)用時(shí),這些屬性值很有用。

舉個(gè)例子,在一個(gè)叫做myApp的Context(上下文)中有一個(gè)名為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. 創(chuàng)建Servlet過(guò)濾器的向?qū)?/FONT>
  2. 安裝Servlet和JSP開(kāi)發(fā)工具
  3. 擴(kuò)展Future Response Servlet
  4. Servlet容器的匹配過(guò)程
  5. 淺談user cache Servlet
責(zé)任編輯:佚名 來(lái)源: 中國(guó)IT實(shí)驗(yàn)室
相關(guān)推薦

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-08 09:22:03

Servlet和JSP

2009-07-03 11:21:43

Servlet和JSPJSP路徑

2009-07-03 14:41:03

2009-07-07 13:29:33

Servlet和JSP

2009-07-08 15:25:56

Servlet和JSP

2009-06-29 16:19:57

JSP Servlet

2009-07-02 09:56:24

導(dǎo)入事件驅(qū)動(dòng)技術(shù)JSP Servlet

2009-08-10 09:19:28

Servlet JSP

2009-07-03 14:02:51

2009-06-29 15:39:53

Servlet和JSPServlet引擎

2009-07-07 17:10:57

JSP和Servlet

2009-07-02 09:13:25

什么是JSPServlet

2009-07-01 14:09:24

Servlet和BeaJSP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)