Servlet 注解

到目前為止,您已經(jīng)了解了Servlet如何使用部署描述符(web.xml文件)將應(yīng)用程序部署到Web服務(wù)器中。  Servlet API 3.0引入了一個名為javax.servlet.annotation的新程序包。 它提供了可用于對Servlet類進行注解的注解類型。 如果使用注解,則不需要部署描述符(web.xml)。 但是您應(yīng)該使用tomcat7或任何更高版本的tomcat。

注解可以替換Web部署描述符文件(web.xml)中的等效XML配置,例如servlet聲明和servlet映射。  Servlet容器將在部署時處理帶注解的類。

Servlet 3.0中引入的注解類型為

Sr.No.注解和描述
1

@WebServlet

聲明servlet。

2

@WebInitParam

指定初始化參數(shù)

3

@WebFilter

聲明servlet篩選器

4

@WebListener

聲明WebListener

5

@HandlesTypes

聲明ServletContainerInitializer可以處理的類類型。

6

@HttpConstraint

此注解在ServletSecurity注解中用于表示要應(yīng)用于所有HTTP協(xié)議方法的安全約束,對于這些方法,ServletSecurity注解中沒有相應(yīng)的HttpMethodConstraint元素。

7

@HttpMethodConstraint

此注解在ServletSecurity注解中用于表示特定HTTP協(xié)議消息的安全約束。

8

@MultipartConfig

可以在 Servlet 類上指定的注解,表示 Servlet 的實例期望符合多部分/表單數(shù)據(jù) MIME 類型的請求。

9

@ServletSecurity

此注解用于Servlet實現(xiàn)類,以指定Servlet容器對HTTP協(xié)議消息實施的安全約束。

這里我們已經(jīng)詳細討論了一些注解。

@WebServlet

@WebServlet用于聲明帶有容器的Servlet的配置。下表包含用于WebServlet注解的屬性列表。

Sr.No.屬性和描述
1

String name

Servlet 的名稱

2

String[] value

URL模式數(shù)組

3

String[] urlPatterns

應(yīng)用此篩選器的 URL 模式數(shù)組

4

Int loadOnStartup

整數(shù)值給出啟動排序提示

5

WebInitParam[] initParams

Servlet初始化數(shù)組參數(shù)

6

Boolean asyncSupported

Servlet支持的異步操作

7

String smallIcon

Servlet 的小圖標,如果有的話

8

String largeIcon

Servlet 的大圖標,如果有的話

9

String description

Servlet 的描述,如果存在的話

10

String displayName

顯示此Servlet的名稱(如果存在)

必須在注解的value或urlPattern屬性中聲明至少一個URL模式,但不能同時聲明這兩個屬性。

當URL模式是唯一要設(shè)置的屬性時,建議使用value屬性,否則應(yīng)使用urlPattern屬性。

在線示例

下面的示例描述了如何使用@WebServlet注解。它是一個顯示文本Hello servlet的簡單servlet。

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
@WebServlet(value = "/Simple") 
public class Simple extends HttpServlet {

   private static final long serialVersionUID = 1L; 

   protected void doGet(HttpServletRequest request, HttpServletResponse response)  
      throws ServletException, IOException { 
   
      response.setContentType("text/html");   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.print("</body></html>");         
   }   
}

用通常的方式編譯 Simple.java,并將類文件放在 <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes 中。

現(xiàn)在嘗試通過運行http://localhost:8080/Simple調(diào)用任何servlet。您將在web頁面上看到以下輸出。

Hello servlet

@WebInitParam

@WebInitParam注解用于為Servlet或過濾器指定初始化參數(shù)。它在WebFilter或webevlet注解中使用。下表包含用于WebInitParam注解的屬性列表。

Sr.No.屬性和描述
1

String name

初始化參數(shù)的名稱

2

String value

初始化參數(shù)的值

3

String description

初始化參數(shù)的描述

在線示例

@WebInitParam注解用于為Servlet或過濾器指定初始化參數(shù)。它在WebFilter或webevlet注解中使用。下表包含用于WebInitParam注解的屬性列表。

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse;

@WebServlet(value = "/Simple", initParams = { 
   @WebInitParam(name = "foo", value = "Hello "), 
   @WebInitParam(name = "bar", value = " World!") 
}) 
public class Simple extends HttpServlet {

   private static final long serialVersionUID = 1L; 

   protected void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {   
      
      response.setContentType("text/html");   
      PrintWriter out = response.getWriter();   
      out.print("<html><body>");   
      out.print("<h3>Hello Servlet</h3>");   
      out.println(getInitParameter("foo")); 
      out.println(getInitParameter("bar")); 
      out.print("</body></html>");         
   }   
}

用通常的方式編譯 Simple.java,并將類文件放在 <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes 中。

現(xiàn)在嘗試通過運行http://localhost:8080/Simple調(diào)用任何servlet。您將在web頁面上看到以下輸出。

Hello Servlet

Hello World!

@Webfilter

這是用于聲明servlet過濾器的注解。它在部署時由容器處理,并將相應(yīng)的過濾器應(yīng)用于指定的URL模式、servlet和dispatcher類型。

@WebFilter注解定義了web應(yīng)用程序中的過濾器。此注解是在類上指定的,并包含有關(guān)所聲明篩選器的元數(shù)據(jù)。帶注解的篩選器必須至少指定一個URL模式。下表列出了用于WebFilter注解的屬性。

Sr.No.屬性和描述
1

String filterName

篩選器的名稱

2

String[] urlPatterns

提供應(yīng)用篩選器的值或 urlPatterns 數(shù)組

3

DispatcherType[] dispatcherTypes

指定篩選器應(yīng)用的調(diào)度器(請求/響應(yīng))的類型

4

String[] servletNames

提供 servlet 名稱的數(shù)組

5

String displayName

篩選器的名稱

6

String description

過濾器說明

7

WebInitParam[] initParams

此篩選器的初始化數(shù)組參數(shù)

8

Boolean asyncSupported

篩選器支持的異步操作

9

String smallIcon

篩選器的小圖標(如果存在)

10

String largeIcon

篩選器的大圖標(如果存在)

在線示例

下面的示例介紹如何使用@WebFilter注解。它是一個簡單的LogFilter,在控制臺上顯示Init param test param的值和當前時間戳。這意味著,過濾器的工作方式類似于請求和響應(yīng)之間的接口層。這里我們使用“/*”表示urlPattern。這意味著,此過濾器適用于所有servlet。

import java.io.IOException; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.*; 
import java.util.*;  

//實現(xiàn)篩選器類

@WebFilter(urlPatterns = {"/*"}, initParams = { 
   @WebInitParam(name = "test-param", value = "Initialization Paramter")}) 
public class LogFilter implements Filter {
   
   public void init(FilterConfig config) throws ServletException { 
      // 獲取初始化參數(shù)
      String testParam = config.getInitParameter("test-param");
            
      //打印init參數(shù)
      System.out.println("Test Param: " + testParam);  
   } 

   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException { 
	  
      //記錄當前時間戳。
      System.out.println("Time " + new Date().toString());  
         
      //將請求傳遞回篩選器鏈
      chain.doFilter(request,response); 
   }

   public void destroy( ) {
      /* 在刪除篩選器實例之前調(diào)用
      從web容器提供的服務(wù)*/ 
   } 
}

用通常的方式編譯 Simple.java,并將類文件放在 <tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes 中。

現(xiàn)在嘗試通過運行http://localhost:8080/Simple調(diào)用任何servlet。您將在web頁面上看到以下輸出。

Hello Servlet
  
Hello World!

現(xiàn)在,打開servlet控制臺。在那里,你會發(fā)現(xiàn)的值初始化參數(shù)testparam和當前時間戳與servlet的通知消息一起。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清