一、簡介
init-param是指在web.xml配置文件中,設置Web應用的全局參數。在整個Web應用程序中,無論是哪個Servlet調用這個全局參數,都會返回相同的參數值。因為參數的值是固定的,所以我們把它叫做初始化參數。在Web應用啟動後,我們就可以通過servlet context 或servletConfig對象來訪問它們。
二、init-param的作用
Web應用程序通常有一些通用的變數或參數,這些參數需要在整個應用程序中都能夠被調用,比如連接資料庫的用戶名和密碼,或是一些URL地址等等。如果這些參數在各自的Servlet中進行設置,那麼會顯得非常麻煩,而且也非常不利於統一管理。
所以,我們可以通過設置init-param來幫助我們全局地統一管理一些通用參數。在整個Web應用程序中,我們可以通過servlet context 或servletConfig對象來訪問這些參數,而且這些參數是只讀的,而不是可寫的。這樣做可以節約大量的代碼和時間。
比如,我們可以在web.xml文件中設置一些全局參數,如連接資料庫的用戶名和密碼,如下代碼所示:
<context-param> <param-name>username</param-name> <param-value>john</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>passwd</param-value> </context-param>
這樣,我們就可以在任何一個Servlet或JSP頁面中通過servlet context 或servletConfig對象來訪問這些參數了。
三、設置init-param參數
在Web應用程序中設置全局參數非常容易,只需要在web.xml文件中添加一下context-param節點即可,如下代碼所示:
<context-param> <param-name>參數名</param-name> <param-value>參數值</param-value> </context-param>
其中,param-name用來定義參數的名稱,而param-value用來定義參數的值。
在Java Web應用程序中,可以通過ServletContext對象的getInitParameter方法或ServletConfig對象的getInitParameter方法來獲取與init-param元素關聯的值。
四、使用init-param參數
在Java Web應用程序中,可以通過ServletContext對象或ServletConfig對象來獲取與init-param元素關聯的值。
獲取ServletContext對象的方法如下所示:
ServletContext context = getServletContext(); String paramValue = context.getInitParameter("參數名");
獲取ServletConfig對象的方法如下所示:
ServletConfig config = getServletConfig(); String paramValue = config.getInitParameter("參數名");
五、注意事項
如果有多個init-param元素的param-name屬性具有相同的值,則取第一個節點的值。
在使用init-param時,需要注意以下幾點:
1.在web.xml文件中設置的參數值是只讀的。
2.參數的值是可以是任意類型的,包括字元串、數字、字元等。
3.在Java Web應用程序中,可以通過ServletContext對象或ServletConfig對象來獲取與init-param元素關聯的值。
4.如果有多個init-param元素的param-name屬性具有相同的值,則取第一個節點的值。
六、示例代碼
web.xml配置文件:
<web-app> <!-- 字元編碼設置 --> <filter> <filter-name>charsetFilter</filter-name> <filter-class>com.xxx.filter.CharsetFilter</filter-class> <init-param> <param-name>charset</param-name> <param-value>UTF-8</param-value> </init-param> </filter> </web-app>
Java Servlet中獲取剛才的init-param參數:
public class CharsetFilter implements Filter { private String charset; public void init(FilterConfig filterConfig) throws ServletException { charset = filterConfig.getInitParameter("charset"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(charset); response.setCharacterEncoding(charset); chain.doFilter(request, response); } public void destroy() { } }
原創文章,作者:BYQN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/143198.html