JSP 從設定檔擷取參數詳解_JSP編程

來源:互聯網
上載者:User
這一節將介紹 ServletContext 和 ServletConfig 這兩個介面。 通過這兩個介面,我們可以在web.xml中設定一些參數,如資料庫地址、使用者名稱密碼等,供 Servlet 使用, 這樣每次參數值變動時,不用重新編譯Servlet了。

javax.servlet.ServletContext介面(上下文參數)是針對整個項目的全域設定, 而javax.servlet.ServletConfig介面(初始化參數)是針對當前Servlet的設定。 兩者的設定內容都寫在web.xml中。在Eclipse中建立Servlet時, 可以看到設定初始化參數的位置,如下圖:

而上下文參數就沒這麼方便,只能通過手工編輯web.xml來添加了。 好在Eclipse提供了方便的XML編輯器, 開啟web.xml之後即可看到各個Servlet的配置情況, 按右鍵最頂層的“web-app”元素,選擇Add Child->context-param, 然後分別修改 param-name 和 param-value 即可。

那麼在程式中如何取得這兩類參數?請看這幾個方法:

javax.servlet.GenericServlet.getServletConfig()

返回當前Servlet的ServletConfig對象。

javax.servlet.ServletConfig.getServletContext()

返回當前應用程式的ServletContext對象。

通過這兩個方法,我們就可以獲得當前Servlet的初始化參數對象和上下文參數對象。

ServletContext的主要方法:

String getInitParameter(String name)

擷取指定上下文參數的值。

ServletConfig的主要方法:

String getInitParameter(String name)

擷取指定初始化參數的值。

java.util.Enumeration getInitParameterNames()

擷取所有的初始化參數的名稱。

樣本程式分別通過ServletContext和ServletContent讀出值並顯示出來。 因為參數值在Servlet的生命週期中是不變的,僅需讀取一次即可, 所以將取得參數的代碼寫在了 init() 方法而不是 doGet()方法中。 其他沒什麼特別需要說明的地方,參數追加的方法參考前文即可。

樣本下載:initparam_jb51net.zip

+++++++++++++++++++++++++++++++++++++==

複製代碼 代碼如下:

package com.idv2.learnjsp; 

 import java.io.IOException; 
 import java.io.PrintWriter; 

 import javax.servlet.ServletConfig; 
 import javax.servlet.ServletContext; 
 import javax.servlet.ServletException; 
 import javax.servlet.http.HttpServletRequest; 
 import javax.servlet.http.HttpServletResponse; 

 /** 
  * Servlet implementation class for Servlet: InitParam 
  * 
  */
  public class InitParam extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { 

     /** 
      * 自動產生的序號 
      */
     private static final long serialVersionUID = 7732869603825506920L; 

     /** 
      * 程式名稱 
      */
     private String appName; 

     /** 
      * 頁面標題 
      */
     private String title; 

     public void init() { 

         // 擷取參數 
         ServletConfig config = getServletConfig(); 
         ServletContext context = config.getServletContext(); 
         title = config.getInitParameter("title"); 
         appName = context.getInitParameter("appname"); 
     } 

     /* (non-Java-doc) 
      * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
      */
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

         response.setContentType("text/html; charset=UTF-8"); 

         PrintWriter out = response.getWriter(); 

         out.println("<html>"); 
         out.println("<head>"); 
         out.println("<title>" + title + "</title>"); 
         out.println("</head>"); 
         out.println("<body>"); 
         out.println("Application name: " + appName); 
         out.println("</body>"); 
         out.println("</html>"); 
     } 
 }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.