servlet兩種配置方法詳解


 1、web.xml中Servlet的注解

 1 <servlet>
 2          <!-- servlet的內部名稱,自定義 -->
 3         <servlet-name>DemoAction</servlet-name>
 4         <!-- servlet的類全名:包名+類名 -->
 5         <servlet-class>com.uplooking.controller.DemoAction</servlet-class>
 6         <load-on-startup>1</load-on-startup>
 7 </servlet>  
 8 <!-- servlet的映射配置 -->
 9 <servlet-mapping>
10         <!-- servlet的內部名稱,一定要和上面的內部名稱保持一致 -->
11         <servlet-name>DemoAction</servlet-name>
12         <!-- servlet的映射路徑(訪問serclet的名稱 -->
13         <url-pattern>/DemoAction</url-pattern>
14 </servlet-mapping>

       1、首先,從瀏覽器中發送請求,是從當前工程中的路徑與servlet-mapping標簽中的url-pattern的標簽值進行匹配。

  2、根據這個映射值,找到servlet-mapping標簽中的servlet-name的值與servlet標簽中的servlet-name進行匹

       3、匹配到以后,找到servlet標簽中的servlet-class標簽中對應servlet類的src文件夾下的全路徑。

       4、從而調用並執行相應的servlet類。

注意:servlet-mapping標簽中的servlet-name的值與servlet標簽中的servlet-name必須相同。

<init-param>初始化參數

1 <init-param>
2             <param-name>abc</param-name>
3             <param-value>123</param-value>
4 </init-param>

一個Servlet可以配置一個或多個初始化參數。

         在應用程序中,可以使用Servlet的getInitParameter(String param)來讀取初始化param對應的參數;若要讀取所有的初始化參數名稱,則可以使用getInitParameterNames()方法獲得所有的參數名稱,類型為枚舉(Enumeration)。

  //獲取所有初始化參數
 Enumeration<String> strs=this.getInitParameterNames();
 while(strs.hasMoreElements()) {
         str=strs.nextElement();
        System.out.println(str+"     "+this.getInitParameter(str));
         //-->abc 123
        //-->aaa 111
    }

       

   這些初始化參數也可以由ServletConfig對象獲取,Servlet提供getServletConfig()方法提供ServletConfig對象。由ServletConfig獲取初始化參數和由Servlet獲取初始化參數的方法是一樣的。

//兩種調用getInitParameter的情況,視情況而定
//this是指ServletConfig的對象config
String str=this.getInitParameter("abc");  //第一種

String str=config.getInitParameter("abc");//第二種

 

         初始化參數的一個有趣應用是進行單個文件的訪問加密,原理是將用戶名和密碼寫入初始化參數中,這樣的好處是簡單、方便,缺點是不靈活,安全性也不高,適用於臨時性的措施。

 

<context-param>上下文參數

1 <context-param>
2          <param-name>root</param-name>
3          <param-value>123</param-value>
4  </context-param>

         獲取context-param需要使用ServletContext對象。ServletContext對象可以通過在Servlet中的getServletConfig().getServletContext()方法獲得。得到ServletContext對象后,使用getInitParameter(String param)方法獲取名為param的參數值,通過getInitParameterNames()獲取所有的context-param名稱。

ServletContext context=this.getServletContext();
String root=context.getInitParameter("root");
System.out.println("root="+root);

 2、注解訪問servlet

1.只需在對應的servlet類中添加servlet注解即可,從瀏覽器發送請求時,是用當前“工程”下的路徑,會去對應servlet類的上面尋找是否存在對應url名稱的@webServlet注解,存在的話,調用並執行對應的servlet類。

 

1 @WebServlet("/DemoAction")
2 public class DemoAction  extends HttpServlet{
3 }

 

總結:

共同點:注解訪問servlet和web配置文件訪問servlet都能完成對servlet的訪問。

 

注解訪問servlet:

優點:代碼少,可讀性強,易於理解。

缺點:如果大量使用servlet注解,servlet類文件數量過多,不便於查找和修改。

 

web配置文件訪問servlet:

優點:集中管理各servlet類路徑的映射路徑,便於修改和管理。

缺點:代碼多,可讀性不強,不易於理解。
 

注意:有時候在服務上運行的web程序數據不能及時更新,記得重啟服務器或者清除瀏覽器緩存。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM