<context-param>的作用:
web.xml的配置中<context-param>配置作用
1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param>
2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.
3.容器将<context-param></context-param>转化为键值对,并交给ServletContext.
4.容器创建<listener></listener>中的类实例,即创建监听.
5.在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得ServletContext = ServletContextEvent.getServletContext();
context-param的值 = ServletContext.getInitParameter("context-param的键");
6.得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早.
换句话说,这个时候,你对<context-param>中的键值做的操作,将在你的WEB项目完全启动之前被执行.
7.举例.你可能想在项目启动之前就打开数据库.
那么这里就可以在<context-param>中设置数据库的连接方式,在监听类中初始化数据库的连接.
8.这个监听是自己写的一个类,除了初始化方法,它还有销毁方法.用于关闭应用前释放资源.比如说数据库连接的关闭.
如:
<!-- 加载spring的配置文件 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml,/WEB-
INF/jason-servlet.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
又如: --->自定义context-param,且自定义listener来获取这些信息
<context-param>
    <param-name>urlrewrite</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>cluster</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>servletmapping</param-name>
    <param-value>*.bbscs</param-value>
</context-param>
<context-param>
    <param-name>poststoragemode</param-name>
    <param-value>1</param-value>
</context-param>
<listener>
    <listener-class>com.laoer.bbscs.web.servlet.SysListener</listener-class>
</listener>
public class SysListenerextends HttpServlet implements ServletContextListener {
private static final Log logger = LogFactory.getLog(SysListener.class);
public voidcontextDestroyed(ServletContextEvent sce) {
//用于在容器关闭时,操作
}
//用于在容器开启时,操作
public voidcontextInitialized(ServletContextEvent sce) {
   String rootpath = sce.getServletContext().getRealPath("/");
   System.out.println("-------------rootPath:"+rootpath);
if (rootpath != null) {
    rootpath = rootpath.replaceAll("\\\\", "/");
   } else {
    rootpath = "/";
   }
   if (!rootpath.endsWith("/")) {
    rootpath = rootpath + "/";
   }
   Constant.ROOTPATH = rootpath;
   logger.info("Application Run Path:" + rootpath);
   String urlrewrtie =sce.getServletContext().getInitParameter("urlrewrite");
   boolean burlrewrtie = false;
   if (urlrewrtie != null) {
    burlrewrtie = Boolean.parseBoolean(urlrewrtie);
   }
   Constant.USE_URL_REWRITE = burlrewrtie;
   logger.info("Use Urlrewrite:" + burlrewrtie);
   其它略之....
}
}
   /*最终输出
   -------------rootPath:D:\tomcat_bbs\webapps\BBSCS_8_0_3\
   2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
Application Run Path:D:/tomcat_bbs/webapps/BBSCS_8_0_3/
   2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
Use Urlrewrite:true
   2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
Use Cluster:false
   2009-06-09 21:51:46,526 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
SERVLET MAPPING:*.bbscs
   2009-06-09 21:51:46,573 [com.laoer.bbscs.web.servlet.SysListener]-[INFO]
Post Storage Mode:1
   */
context-param和init-param区别
web.xml里面可以定义两种参数:
(1)application范围内的参数,存放在servletcontext中,在web.xml中配置如下:
<context-param>
           <param-name>context/param</param-name>
           <param-value>avalible during application</param-value>
</context-param>
(2)servlet范围内的参数,只能在servlet的init()方法中取得,在web.xml中配置如下:
<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>
在servlet中可以通过代码分别取用:
package com.wes.controller;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class MainServlet extends HttpServlet ...{
public MainServlet() ...{
        super();
     }
    public void init() throws ServletException ...{
         System.out.println("下面的两个参数param1是在servlet中存放的");
System.out.println(this.getInitParameter("param1"));
         System.out.println("下面的参数是存放在servletcontext中的");
        System.out.println(getServletContext().getInitParameter("context/param"));
      }
}

第一种参数在servlet里面可以通过getServletContext().getInitParameter("context/param")得到
第二种参数只能在servlet的init()方法中通过this.getInitParameter("param1")取得.

一个web项目web.xml的配置中context-param配置作用相关推荐

  1. 如何在IDEA中创建web项目并且部署到Tomcat中

    如何在IDEA中创建web项目并且部署到Tomcat中 步骤1:File->New Project, 步骤2:选择Project SDK为1.7 -> Next -> Finish( ...

  2. myEclipse中的web项目直接引入到eclipse中运行

    将myeclipse中开发的动态web项目直接引入到eclipse中继续开发,启动tomcat时会发出警告,更重的问题是你想启动的项目不知哪里去了,没有读取到配置文件:       警告: [SetP ...

  3. IDEA启动Web项目后,在Tomcat中的webapp文件夹下找不到?

    转载: (81条消息) IDEA启动Web项目后,在Tomcat中的webapp文件夹下找不到?_菩提小猿的博客-CSDN博客_idea中部署到tomcat的项目在webapps下找不到

  4. maxlength不起作用android,Android EditText设置Filter以后(xml布局文件中maxLength不起作用的解决办法)...

    Android EditText设置Filter以后,xml布局文件中maxLength不起作用的解决办法 问题发现 最近项目里有个需求,文本框禁用emoji表情的输入,因为用到的地方较多,第一个想到 ...

  5. eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)

    在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会 ...

  6. 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战

    mabitis中的一对一关系项目实战: 1.首先根据创建以mybatis为基础的web项目(1)中的流程将web项目部署好 打开IDE,建立web工程 在lib下面粘贴mybatis的jar,log4 ...

  7. idea 启动tomcat 工程_如何在IDEA中创建web项目并且部署到Tomcat中

    步骤1:File->New Project, 步骤2:选择Project SDK为1.7 -> Next -> Finish(JDK)我自己的是1.7(这里的project,跟ecl ...

  8. Web项目部署到云服务器中—保姆级教程

    文章目录 1.1工具准备 1.2安装JDK 1.3安装Tomcat 1.4安装MySql 1.5配置防火墙 1.6配置云服务器安全组 1.7Tomcat配置与启动 1.8补充知识 8.8.1如何将项目 ...

  9. 从一个多项目Web工程看Eclipse如何导入Gradle项目

    ##概述 上一节,我们说了Eclipse如何安装Gradle的插件,以达到对Gradle的支持. 这里再次说一下为什么我们需要熟悉Gradle构建工具,主要原因就是很多开源项目现在都在改用Gradle ...

  10. 一个SpringBoot项目,开发业务前至少应该引入哪些配置?

    作者:不一样的科技宅 juejin.cn/post/6844904083942277127 前言 建立一个全新的项目,或者把旧的庞大的项目,进行拆分成多个项目.在建立新的项目中,经常需要做一些重复的工 ...

最新文章

  1. 【经典书单】NLP秘笈汇总,从入门到进阶
  2. 统计学习导论 基于R应用——作业 3
  3. boost::regex
  4. DataTable操作
  5. document 文挡对象详解(JavaScript脚本语言描述)
  6. 剑指 Offer59-I-滑动窗口的最大值
  7. 20. yii 2 分页
  8. C和指针 第十四章 习题
  9. 物联网的“最好”与“最坏”之间往往只差了一个“安全”
  10. 素材解析程序源代码,用thinkphp开发的 支持12大网站,其他需要定制
  11. WinDriver驱动程序开发入门教程
  12. python打开摄像头黑屏怎么办_python、cv2.imshow()、raspberryPi和黑屏
  13. python 回归方程及回归系数的显著性检验_使用Excel和python来做回归分析
  14. 【BMS软开系列】1、 ISO 26262功能安全标准 (一)
  15. win7 x64环境python2.7下装配sulley的注意点-对于Windows Installation原文的几点补充说明
  16. win7系统安装教程
  17. “马”道微信:全面拆解微信营销模式
  18. Android连接多个usb,Android实现USB连接
  19. ubuntu安装sougoupinyin[sogoupinyin_2.2.0.0108_amd64.deb]出坑(内附各种失败解决办法)
  20. LM2596-ADJ版本电路及布局

热门文章

  1. vue 中使用axios的总结
  2. 部署jar包项目到服务器上
  3. Android获取md5和sha
  4. 每周更新:Markdown1.1.7 、Nacos1.0.0 GA 、CKFinder3.5、Apache POI 4.1.0等新版本发布
  5. CSS实现tag标签挂载放到卡片上
  6. 撤销工作表保护原密码_批量解除工作表保护,和批量执行保护一样简单
  7. python等比例压缩图片_Python批量按比例缩小图片脚本分享
  8. 入门嵌入式HTML/CSS/脚本引擎 sciter(问题篇)
  9. Shell 把日志记录按天切割到不同的文件
  10. Golang web请求