web.xml文件中配置context-param 和init-param的区别

web工程大多都需要配置web.xml文件,web.xml文件主要用来配置Listener、Filter、Servlet等。web.xml文件包括xml文件头,DOCTYPE声明,web-app元素。

web.xml的加载过程(引用)

在web-app元素内,元素的配置顺序与工程的加载顺序无关,web.xml的加载过程为:
1、启动一个web项目,web容器(如tomcat)读取web.xml文件,读取其中的配置信息。
2、容器创建一个servlet上下文(servletContext),这个web项目所有部分共享这个上下文。
3、容器将转换为键值对,交给servletContext。
4、容器创建中的监听器实例
5、触发contextInitialized方法,listener被调用(当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。在 ServletContextListener 接口中定义了处理ServletContextEvent 事件的两个方法contextInitialized;contextDestroyed,web.xml有contextLoaderListener监听器,spring等框架实现了本监听器的接口方法)
6、调用完contextInitialized方法后,容器再对filter初始化
7、容器对web.xml中的指定load-on-startup的值为正数Servlet初始化(优先级1,2,3…->递减),负数或不指定则在该Servlet调用时初始化

结论:web.xml 的加载顺序:
ServletContext -> context-param(无顺序)-> listener(无顺序)-> filter(书写顺序) -> servlet(load-on-startup优先级)

web.xml文件中配置和的区别

<context-param><init-param>都是上下文参数,但它们的范围和使用方式不同。

<context-param>是application范围内的初始化参数,用于向servlet-context提供键值对,即应用程序的上下文信息,listener、filter等初始化时会用到这些信息

<init-param>是servlet范围内的参数,只能在servlet类的init()方法中取得

具体使用方法如下:

context-param>  
           <param-name>context/param</param-name>  
           <param-value>avalible during application</param-value>  
</context-param>  
<code class="language-html"><servlet>    
    <servlet-name>MainServlet</servlet-name>    
    <servlet-class>com.wes.controller.MainServlet</servlet-class>    
    <init-param>    
       <param-name>param1</param-name>    
       <param-value>avalible in servlet init()</param-value>    
    </init-param>    
    <load-on-startup>0</load-on-startup>    
</servlet></code>  
public class MainServlet extends HttpServlet {    
    public MainServlet() {    
        super();    
      }    
    public void init() throws ServletException {    
          System.out.println(this.getInitParameter("param1"));    
          System.out.println(getServletContext().getInitParameter("context/param"));    
       }    
} 
### 回答1: 的作用是什么? web.xmlinit-param元素用来指定Servlet初始化参数,这些参数在Web应用程序启动时被加载,并能在整个应用程序的生命周期内被访问。Servlet初始化参数可以用于配置Servlet,例如数据库连接参数等。 ### 回答2: web.xmlinit-param标签用于在部署和配置Java Web应用程序时指定一些初始化参数。这些参数可以在应用程序的整个生命周期被访问和使用,并且可以通过ServletContext对象来获取。 通过在web.xml文件定义init-param标签,可以指定各种类型的初始化参数,例如字符串、数字、布尔值等。使用init-param标签的格式如下: ```xml <init-param> <param-name>参数名</param-name> <param-value>参数值</param-value> </init-param> ``` 这里的<param-name>表示参数的名称,<param-value>表示参数的值。每个init-param标签都必须包含这两个子标签。 在Java代码,可以通过ServletContext对象来访问这些参数。可以通过调用ServletContext对象的getInitParameter()方法,传入参数名来获取对应的参数值。例如: ```java public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = getServletContext(); String paramValue = context.getInitParameter("参数名"); } ``` 通过使用init-param标签,我们可以在部署和配置Web应用程序时灵活地设置一些初始化参数,以满足应用程序的需求。这些参数可以用于配置数据库连接、设置全局变量、指定文件路径等等。它们可以在整个应用程序被共享和访问,方便地管理和调整应用程序的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值