servlet初始化参数配置方式

servlet初始化参数配置方式


1. init-param

在部署描述符中的节点下添加节点

  <servlet>
    <init-param>
        <param-name>nameparam-name>
        <param-value>servlet-valueparam-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>nameparam-name>
    <param-value>context-valueparam-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-app>
  <display-name>Archetype Created Web Applicationdisplay-name>

  
  <context-param>
    <param-name>nameparam-name>
    <param-value>context-valueparam-value>
  context-param>
  

  
  <servlet>
    <init-param>
        <param-name>nameparam-name>
        <param-value>servlet-valueparam-value>
    init-param>
    <servlet-name>InitParamservlet-name>
    <servlet-class>com.dotgua.demo1.InitParamservlet-class>
  servlet>
  <servlet-mapping>
    <servlet-name>InitParamservlet-name>
    <url-pattern>/param_testurl-pattern>
  servlet-mapping>
  
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();
    }
}

你可能感兴趣的:(javaweb笔记)