Servlet3.0中Servlet的使用(註解&&配置文件)

版權聲明:歡迎大家轉載,轉載請註明出處blog.csdn.net/tantexian。 https://blog.csdn.net/tantexian/article/details/50414368

Servlet3.0中Servlet的使用

目錄

1.註解配置

2.異步調用

3.文件上傳

 

       相對於之前的版本,Servlet3.0中的Servlet有以下改進:

l  支持註解配置。

l  支持異步調用。

l  直接有對文件上傳的支持。

 

       在這篇文章中我將主要講這三方面的應用示例。

 

1.註解配置

       在以往我們的Servlet都需要在web.xml文件中進行配置(Servlet3.0同樣支持),但是在Servlet3.0中引入了註解,我們只需要在對應的Servlet類上使用@WebServlet註解進行標記,我們的應用啓動之後就可以訪問到該Servlet。對於一個@WebServlet而言,有一個屬性是必須要的,那就是它的訪問路徑。@WebServlet中有兩個屬性可以用來表示Servlet的訪問路徑,分別是value和urlPatterns。value和urlPatterns都是數組形式,表示我們可以把一個Servlet映射到多個訪問路徑,但是value和urlPatterns不能同時使用。如果同時使用了value和urlPatterns,我們的Servlet是無法訪問到的。下面是一個使用@WebServlet的簡單Servlet示例。

Java代碼  收藏代碼
   
import java.io.IOException;  
   
import javax.servlet.ServletException;  
import javax.servlet.annotation.WebServlet;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
   
/** 
 * 
 * Servlet3.0支持使用註解配置Servlet。我們只需在Servlet對應的類上使用@WebServlet進行標註, 
 * 我們就可以訪問到該Servlet了,而不需要再在web.xml文件中進行配置。@WebServlet的urlPatterns 
 * 和value屬性都可以用來表示Servlet的部署路徑,它們都是對應的一個數組。 
 */  
@WebServlet(name="exampleServlet", urlPatterns="/servlet/example")  
public class ExampleServlet extends HttpServlet {  
   
   private static final long serialVersionUID = 1L;  
   
   @Override  
   protected void doGet(HttpServletRequest request,  
         HttpServletResponse response) throws ServletException, IOException {  
      this.doPost(request, response);  
   }  
   
   @Override  
   protected void doPost(HttpServletRequest request,  
         HttpServletResponse response) throws ServletException, IOException {  
      response.getWriter().write("Hello User.");  
   }  
   
}  
  

初始化參數

       使用@WebServlet時也可以配置初始化參數,它是通過@WebServlet的initParams參數來指定的。initParams是一個@WebInitParam數組,每一個@WebInitParam代表一個初始化參數。

Java代碼  收藏代碼
   
import java.io.IOException;  
import java.util.Enumeration;  
   
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;  
   
/** 
 * 帶初始化參數的Servlet 
 * WebServlet的屬性initParams可以用來指定當前Servlet的初始化參數,它是一個數組, 
 * 裏面每一個@WebInitParam表示一個參數。 
 */  
@WebServlet(value="/servlet/init-param", initParams={@WebInitParam(name="param1", value="value1")})  
public class WebInitParamServlet extends HttpServlet {  
   
   /** 
    * 
    */  
   private static final long serialVersionUID = 1L;  
   
   @Override  
   protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
         throws ServletException, IOException {  
      this.doPost(req, resp);  
   }  
   
   @Override  
   protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
         throws ServletException, IOException {  
      Enumeration<String> paramNames = this.getServletConfig().getInitParameterNames();  
      String paramName;  
      while (paramNames.hasMoreElements()) {  
         paramName = paramNames.nextElement();  
         resp.getWriter().append(paramName + " = " + this.getServletConfig().getInitParameter(paramName));  
      }  
      resp.getWriter().close();  
   }  
    
}  

Servlet3.0提供了註解(annotation),使得不再需要在web.xml文件中進行Servlet的部署描述。

在Servlet3.0中,可以使用@WebServlet註解將一個繼承於javax.servlet.http.HttpServlet的類標註爲可以處理用戶請求的Servlet。

 

@WebServlet註解的相關屬性
NO. 屬性名 描述
1 asyncSupported 聲明Servlet是否支持異步操作模式
2 description Servlet的描述信息
3 displayName Servlet的顯示名稱
3 initParams Servlet的初始化參數
5 name Servlet的名稱
6 urlPatterns Servlet的訪問URL
7 value Servlet的訪問URL

  Servlet的訪問URL是Servlet的必選屬性,可以選擇使用urlPatterns或者value定義。
  像上面的Servlet3Demo可以描述成@WebServlet(name="Servlet3Demo",value="/Servlet3Demo")。
  也定義多個URL訪問:
  如@WebServlet(name="Servlet3Demo",urlPatterns={"/Servlet3Demo","/Servlet3Demo2"})
  或者@WebServlet(name="AnnotationServlet",value={"/Servlet3Demo","/Servlet3Demo2"})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章