1. 程式人生 > >Servlet3.0下@WebServlet註解配置Servlet

Servlet3.0下@WebServlet註解配置Servlet

@WebServlet註解配置Servlet

從Servlet3.0開始,配置Servlet支援註解方式,但還是保留了配置web.xml方式,所有使用Servlet有兩種方式:

  1. Servlet類上使用@WebServlet註解進行配置
  2. web.xml檔案中配置

@WebServlet常用屬性

屬性 型別 是否必須 說明
asyncSupported boolean 指定Servlet是否支援非同步操作模式
displayName String 指定Servlet顯示名稱
initParams WebInitParam[] 配置初始化引數
loadOnStartup int 標記容器是否在應用啟動時就載入這個Servlet
name String 指定Servlet名稱
urlPatterns/value String[] 這兩個屬性作用相同,指定Servlet處理的url
測試程式碼如下:

1.UserServlet

通過註解方式配置,web.xml中不需要配置該Servlet
@WebServlet(name = "myUserServlet", 
	urlPatterns = "/user/test", 
	loadOnStartup = 1,  
	initParams = {
			@WebInitParam(name="name", value="小明"), 
			@WebInitParam(name="pwd", value="123456")
	}
)
public class UserServlet extends HttpServlet {
	private static final long serialVersionUID = 7109220574468622594L;
	
	@Override
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		
		System.out.println("servlet初始化...");
	}
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		PrintWriter pw = response.getWriter();
		
		pw.append("Hello Servlet!<br>" );
		
		//servletName
		pw.append("servletName:" + getServletName() + "<br>");
		
		//initParam
		ServletConfig servletConfig = this.getServletConfig();
		Enumeration<String> paramNames = servletConfig.getInitParameterNames();
		while (paramNames.hasMoreElements()) {
			String paramName = paramNames.nextElement();
			pw.append(paramName + ":" + servletConfig.getInitParameter(paramName) + "<br>");
		}
		
		pw.close();
		
	}


	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

2.測試結果

2.1應用啟動時,servlet就會初始化,因為配置了loadOnStartup=1


2.2訪問/user/test,頁面上顯示結果;表名引數正確初始化以及自定義的servlet名稱


3.注

(1).loadOnStartup屬性:標記容器是否在啟動應用時就載入Servlet,預設不配置或數值為負數時表示客戶端第一次請求Servlet時再載入;0或正數表示啟動應用就載入,正數情況下,數值越小,載入該Servlet的優先順序越高; (2).name屬性:可以指定也可以不指定,通過getServletName()可以獲取到,若不指定,則為Servlet的完整類名,如:cn.edu.njit.servlet.UserServlet (3).urlPatterns/value屬性
: String[]型別,可以配置多個對映,如:urlPatterns={"/user/test", "/user/example"} (4).在使用註解方式時,需要注意
  • <web-app> </web-app>根元素中不能配置屬性metadata-complete="true",否則無法載入Servlet。metadata-complete屬性表示通知Web容器是否尋找註解,預設不寫或者設定false,容器會掃描註解和Web分片,為Web應用程式構建有效的元資料;設定true,表示將由部署描述符為Web程式提供所有的配置資訊
  • web.xml中不能再配置該Servlet
(5).urlPatterns的常用規則
  • /*或者/:攔截所有
  • *.do:攔截指定字尾
  • /user/test:攔截路徑
  • /user/*.do、/*.do、test*.do都是非法的,啟動時候會報錯
(6).urlPatterns的配置規則:精確匹配、副檔名匹配、路徑匹配以及會包含一些優先順序,這些在以後會整理。

相關推薦

Servlet3.0@WebServlet註解配置Servlet

@WebServlet註解配置Servlet 從Servlet3.0開始,配置Servlet支援註解方式,但還是保留了配置web.xml方式,所有使用Servlet有兩種方式: Servlet類上使用@WebServlet註解進行配置web.xml檔案中配置 @WebSe

Servlet3.0基於註解的SpringMVC3.1配置

Spring3.1.x系列的一個新特性就是支援了Servlet3.0規範,基於註解的方式配置SpringMVC框架。官方文件描述如下: 3.1.10 Support for Servlet 3 code

servlet3.0的過濾器註解配置

 之前我們控制多個filter的執行順序是通過web.xml中控制filter-mapping的位置來控制的,放在上面的會比放在下面的先執行. <!-- 使用者登入檢測過濾器 --> <filter> <filter-

javaWeb自定義可排序過濾器註解,解決Servlet3.0@WebFilter註解無法排序問題

com.lwl.anno 註釋型別 @WebFilterSort 需要用的jar包 http://download.csdn.net/detail/u013202238/9431110 用該註解註冊的Filter預設在部署描述

Servlet3.1使用@WebServlet註解配置問題記錄

@WebServlet 該註解用於在Web應用中定義Servlet元件。該註解在一個類上指定幷包含宣告Servlet的元資料。必須指定註解的urlPatterns或value屬性。所有其他屬性是可選的預設設定(請參考javadoc獲取更多細節)。當注解上唯一屬性是url模式

idea中原生Servlet3.0開發之---使用配置類和註解的方式整合SpringMVC

以註解方式來啟動SpringMVC前需瞭解的基礎知識: 1、web容器在啟動的時候,會掃描每個jar包下的META-INF/services/javax.servlet.ServletContainerInitializer 2、載入這個檔案指定的類SpringServ

關於servlet3中,使用註解配置之後,訪問無效的解決方法

web專案中的web.xml檔案的根元素如果是從其他地方拷貝的,如下所示 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

AMQ在Servlet3.0出現的問題

if (message == null && client.getListener().getUndeliveredMessages().size() == 0) { Continuation continuation = ContinuationSuppor

web.xml與註解配置servlet使用介紹

Servlet3.0是Java EE6規範的一部分所以說使用註解需要在JAVA EE6以上 (Tomact7.0全面支援註解) 配置Servlet類 web.xml配置方法 <servl

Servlet3.0Servlet的使用(註解&&配置檔案)

Servlet3.0中Servlet的使用 目錄 1.註解配置 2.非同步呼叫 3.檔案上傳        相對於之前的版本,Servlet3.0中的Servlet有以下改進: l  支援註解配置。 l  支援非同步呼叫。 l  直接有對檔案上傳的支援。        

Servlet3.0(一)--使用註解標註Servlet @WebServlet

http://www.cnblogs.com/xdp-gacl/p/4222902.html 一、Servlet3.0介紹   Servlet3.0是Java EE6規範的一部分,Servlet3.0提供了註解(annotation),使得不再需要在web.xml檔案

6.28筆記-servlet3.0註解配置、文件上傳、過濾器、監聽器

對象 color ctype url ext string 實現 ins web服務器 一、servlet3.0註解配置 使用javaEE6.0 支持servlet3.0 value的值就是訪問路徑 urlPatterns的值也是訪問路

Servlet編程專題10之Servlet3.0註解

servlet 特性 webservlet - Servlet3.0規範是JavaEE6.0規範中的子規範。其要求運行環境最低是JDK6.0,Tomcat7.0。而之前學習的是Servlet2.5版本的規範,其是JavaEE5.0規範的子規範。其要求運行環境最低是JDK5.0,Tomcat5.0

Servlet3.0學習總結(一)——使用註解標註Servlet

一、Servlet3.0介紹   Servlet3.0是Java EE6規範的一部分,Servlet3.0提供了註解(annotation),使得不再需要在web.xml檔案中進行Servlet的部署描述,簡化開發流程。 二、開發Servlet3.0程式的所需要的環境   開

SpringBoot(10) Servlet3.0註解:自定義原生Servlet、自定義原生Listener

一、自定義原生Servlet 1、啟動類裡面增加註解 @ServletComponentScan 2、Servlet上添加註解  @WebServlet(name = "userServlet",urlPatterns = "/v1/api/test/customs") 1 @WebServlet(nam

Servlet3.0註解原生Servlet

自定義原生Servlet             @WebServlet(name = "userServlet",urlPatterns = "/test/customs")    &

Java Web 學習與總結(二)Servlet核心介面+Servlet3.0配置

  Servlet3.0版本對Servlet配置進行了重大變革,Servlet類不需要再麻煩的去編輯web.xml檔案了,只需要在類上面進行註釋就可以了,獲得了 Java 社群的一片讚譽之聲,以下是新增的註解支援。 @WebServlet @WebServlet 用於將一個類宣告為 Servlet,該註解

servlet3.0 @WebServlet註解無效的情況

web clas pre 16px jcp span complete 時也 -a web.xml文件中的metadata-comcomplete屬性的作用:   該屬性指定當前的部署描述文件是否是完全的。如果設置為true,則容器在部署時只依賴部署描述文件,忽略所有的註解

系統學習JavaWeb之特別篇使用註解WebServlet配置Servlet報404錯誤的原因

    有些人可能會遇到這種種情況,在採用註解WebServlet配置Servlet的時候,明明在配置了urlPatterns屬性,部署應用程式的時候也沒有出錯。但是就是在瀏覽器發請求的時候訪問不到資

Servlet3.0的新特性 ——註解配置

Servlet3.0 對應的javaEE6對應的是tomcat7.* 在傳統的使用xml做Servlet的配置: 如果Servlet的有N個就必須要Servlet。就必須要配置多大的程式碼。 web.xml檔案 出現臃腫 不利於開發 開發效率低。 在tomcat7中出現可以使用註解