servlet初始化參數配置方式

servlet初始化參數配置方式


1. init-param

在部署描述符中的節點下添加節點

  <servlet>
    <init-param>
        <param-name>name</param-name>
        <param-value>servlet-value</param-value>
    </init-param>
    ...
  </servlet>

之後在對應的Servlet中即可通過獲取ServletConfig對象獲取初始化參數

    // 獲取該Servlet的初始化參數
    ServletConfig sc = this.getServletConfig();
    String servletValue = sc.getInitParameter("name");

這種方式的特點:
- 只有配置了該節點的Servlet纔可以獲取該配置
- 每個Servlet支持一個或多個節點
- 運行機制:Servlet初始化過程中,參數將被封裝到ServletConfig中

2. context-param

在部署描述符中的節點下添加節點

<webapp>
  <!-- 全局配置 -->
  <context-param>
    <param-name>name</param-name>
    <param-value>context-value</param-value>
  </context-param>
  <!-- /全局配置 -->
  ...
</webapp>

之後在每一個Servlet中都可以獲取該初始化參數

    // 獲取整個web應用共享的額初始化參數
    ServletContext context = this.getServletContext();
    String contextValue = context.getInitParameter("name");

該方式的特點:
- web應用下的每個Servlet都可以獲取該配置

3. 動態配置全局變量

在Servlet中通過ServletContextset/getAttribute方法可以動態設置/獲取全局變量

    // 動態保存獲取全局變量
    ServletContext context = this.getServletContext();
    context.setAttribute("active", "activeValue");
    String activeValue = (String) context.getAttribute("active");

完整代碼

<!-- web.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <!-- 全局配置 -->
  <context-param>
    <param-name>name</param-name>
    <param-value>context-value</param-value>
  </context-param>
  <!-- /全局配置 -->

  <!-- 測試初始配置信息Servlet -->
  <servlet>
    <init-param>
        <param-name>name</param-name>
        <param-value>servlet-value</param-value>
    </init-param>
    <servlet-name>InitParam</servlet-name>
    <servlet-class>com.dotgua.demo1.InitParam</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>InitParam</servlet-name>
    <url-pattern>/param_test</url-pattern>
  </servlet-mapping>
  <!-- /測試初始配置信息Servlet -->
</web-app>
/**
 * InitParam類
 */
package com.dotgua.demo1;

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

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

public class InitParam extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 獲取該Servlet的初始化參數
        ServletConfig sc = this.getServletConfig();
        String servletValue = sc.getInitParameter("name");

        // 獲取整個web應用共享的額初始化參數
        ServletContext context = this.getServletContext();
        String contextValue = context.getInitParameter("name");

        // 動態保存獲取全局變量
        context.setAttribute("active", "activeValue");
        String activeValue = (String) context.getAttribute("active");

        PrintWriter pw = resp.getWriter();
        pw.println("ServletValue = " + servletValue);
        pw.println("ContextValue = " + contextValue);
        pw.println("activeValue = " + activeValue);
        pw.close();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章