日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Servlet注釋與部署描述符

值得注意的是,部署描述符優(yōu)先于注釋。換句話說,部署描述符覆蓋通過注釋機制所規(guī)定的配置信息。Web 部署描述符的 3.0 版本在 web-app 元素上包含一種名為 metadata-complete 的新屬性。該屬性定義了 web 描述符是否完整,或者 web 應(yīng)用程序的類文件是否針對指定部署信息的注釋而進(jìn)行檢查。如果該屬性被設(shè)置為 true,則部署工具必須忽略類文件中所存在的任何 servlet注釋,并只使用描述符中所提及的配置細(xì)節(jié)。否則,如果沒有指定該值或者該值被設(shè)置為 false,容器必須針對注釋而掃描應(yīng)用程序的所有類文件。這個屬性提供了在應(yīng)用程序啟動階段啟用或者禁用注釋掃描以及對注釋的處理。

創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)絡(luò)營銷、企業(yè)網(wǎng)站建設(shè),買鏈接,廣告投放為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計到用戶體驗提高,創(chuàng)新互聯(lián)力求做到盡善盡美。

在 Servlet 3.0 中所引入的所有注釋都可以在 javax.servlet.http.annotation 和 javax.servlet.http.annotation.jaxrs 軟件包中找到。以下章節(jié)闡述 Servlet注釋的完整集合:

@Servlet:javax.servlet.http.annotation.Servlet 是一個類級別的注釋,確認(rèn)經(jīng)過注釋的類為一個 servlet 并保存關(guān)于所聲明的 servlet 的元數(shù)據(jù)。urlMappings 屬性是指定 URL 模式(調(diào)用該 servlet)的 @Servlet 的強制屬性。當(dāng)接收到了一個請求時,容器將請求中的 URL 與 servlet 的 urlMappings 進(jìn)行匹配,且如果 URL 模式匹配,則調(diào)用相應(yīng)的 servlet 以響應(yīng)該項請求。該注釋的所有其他屬性都是可選的,并帶有合理的默認(rèn)值。Servlet 類中必須有一種使用像 GET、PUT、POST、HEAD 或者 DELETE 這樣的 HttpMethod 注釋進(jìn)行注釋的方法。這些方法應(yīng)將 HttpServletRequest 和 HttpServletResponse 作為方法參數(shù)。與以前的版本相反,servlets 3.0 的版本可以作為簡單傳統(tǒng) Java 對象(Plain Old Java Objects,POJOs)而實現(xiàn);也就是 servlets 不必再擴展像 HTTPServlet 或者 GenericServlet 這樣的基礎(chǔ) servlet 實現(xiàn)類。

為了進(jìn)行比較,在此給出了使用傳統(tǒng) Servlet 2.5 API 編寫的 Java servlet 代碼片段,如下所示。在 Servlet 2.5 中,只要在部署描述符中配置了 servlet 的詳細(xì)信息,web 容器就將初始化 servlet。

 
 
 
  1. public class MyServlet extends HttpServlet {  
  2. public void doGet (HttpServletRequest req,  
  3. HttpServletResponse res) {  
  4. ....  
  5. }  

Deployment descriptor (web.xml)

 
 
 
  1.  
  2.  
  3. MyServlet 
  4. samples.MyServlet 
  5.  
  6.  
  7.  
  8. MyServlet 
  9. /MyApp 
  10.  
  11. ...  
  12.  
  13.  

這里給出的是使用 Servlet 3.0 API 編寫的較為簡化的版本。當(dāng) MyServlet 使用 @Servlet注釋而被注釋為一個 servlet 時,則在 web 容器的啟動期間對其初始化。注意,在這種情況下部署描述符是可選的。

 
 
 
  1. @Servlet(urlMappings={"/MyApp"})  
  2. public class MyServlet {  
  3. @GET  
  4. public void handleGet(HttpServletRequest req,  
  5. HttpServletResponse res) {  
  6. ....  
  7. }  
  8. }  
  9. Deployment descriptor (web.xml)  
  10.  
  11. optional 

@ServletFilter 和 @FilterMapping:您可以使用 javax.servlet.http.annotation.ServletFilter 注釋來注釋過濾器類,從而輕松創(chuàng)建一個 servlet 過濾器。該注釋封裝正被聲明的過濾器的有關(guān)元數(shù)據(jù)。在過濾器類上具有 @FilterMapping 注釋也是強制性的。@FilterMapping 注釋定義用于過濾器的 URL 模式。@ServletFilter 的所有其他屬性都是可選的,并帶有合理的默認(rèn)值。V3.0 過濾器類現(xiàn)在類似 POJO 類,并且沒有用于這些類所需的 Filter 接口或者非參數(shù)公用構(gòu)造器。以下給出了使用 Servlet v2.5 API 的過濾器類的代碼片段:

 
 
 
  1. public class MyFilter implements Filter {  
  2. public void doFilter(ServletRequest req,  
  3. ServletResponse res,  
  4. FilterChain chain)  
  5. throws IOException, ServletException {  
  6. ......  
  7. }  
  8. }  
  9.  
  10. Deployment descriptor (web.xml)  
  11.  
  12.  
  13.  
  14. My Filter 
  15. samples.MyFilter 
  16.  
  17.  
  18.  
  19. My Filter 
  20. /foo 
  21.  
  22. ...  
  23.  

使用 Servlet 3.0 編寫的一個示例過濾器類如下所示。因為該類使用 ServletFilter 注釋,所以容器將 MyFilter 標(biāo)記為一個過濾器類。MyFilter 截取所有收到的請求,其中該請求的 URL 匹配模式 /foo。Servlet 3.0 為過濾器配置提供了可選的部署描述符。

 
 
 
  1. @ServletFilter  
  2. @FilterMapping("/foo")  
  3. public class MyFilter {  
  4. public void doFilter(HttpServletRequest req,  
  5. HttpServletResponse res) {  
  6. .....  
  7. }  
  8. }  
  9.  
  10. Deployment descriptor (web.xml)  
  11.  
  12. optional 

@InitParam:該注釋可以用來定義必須傳遞給 servlet 或者過濾器類的任意初始化參數(shù)。它是 @Servlet 和 @ServletFilter 注釋的一個屬性。以下代碼示例解釋了如何將具有 english 值、稱作 lang 的初始化參數(shù)傳遞給一個 servlet 類。

 
 
 
  1. @Servlet(urlMappings={"/MyApp"}, initParams ={@InitParam
    (name="lang", value="english")})  
  2. public class MyServlet {  
  3. @GET  
  4. public void handleGet(HttpServletRequest req,  
  5. HttpServletResponse res) {  
  6. ....  
  7. }  

@ServletContextListener:javax.servlet.http.annotation.ServletContextListener 注釋將該類聲明為一個 servlet 上下文偵聽器。當(dāng) web 容器創(chuàng)建或者銷毀 ServletContext 時,該上下文偵聽器接收注釋。上下文偵聽器是一個 POJO 類,且不必實現(xiàn) ServletContextListener 接口。使用 Servlet 2.5 API 編寫的偵聽器類如下所示。當(dāng)且僅當(dāng)您在部署描述符中配置了該偵聽器類,容器才識別它。

 
 
 
  1. public class MyListener implements ServletContextListener {  
  2. public void contextInitialized(ServletContextEvent sce) {  
  3.  
  4. }  
  5. .....  
  6. }  
  7.  
  8. Deployment Descriptor (web.xml)  
  9.  
  10.  
  11.  
  12. samples.MyListener 
  13.  
  14. ....  
  15.  

使用 Servlet 3.0 API 編寫的一個得到極大簡化的偵聽器類,如下所示。

 
 
 
  1. @ServletContextListener  
  2. public class MyListener {  
  3. public void contextInitialized (ServletContextEvent sce) {  
  4.  
  5. }  
  6. .....  
  7. }  
  8.  
  9. Deployment Descriptor (web.xml)  
  10.  
  11. optional 

網(wǎng)站欄目:Servlet注釋與部署描述符
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/djipigj.html