首页 > 学院 > 开发设计 > 正文

Web.xml配置详解之context-param

2019-11-06 07:11:08
字体:
来源:转载
供稿:网友
 格式定义:
<context-param>  <param-name>contextConfigLocation</param-name>  <param-value>contextConfigLocationValue></param-value>  </context-param>  

作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。

param-name 设定上下文的参数名称。必须是唯一名称

param-value 设定的参数名称的值

初始化过程:在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>。接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。接着容器会将读取到<context-param>转化为键值对,并交给ServletContext。容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)。在监听的类中会有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param 设定的值。在这个类中还必须有一个contextDestroyed(ServletContextEvent event) 销毁方法.用于关闭应用前释放资源,比如说数据库连接的关闭。得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早。

由上面的初始化过程可知容器对于web.xml的加载过程是context-param >> listener  >> fileter  >> servlet

 如何使用页面中

${initParam.contextConfigLocation}

Servlet中String paramValue=getServletContext().getInitParameter("contextConfigLocation")另外DispatcherServlet中的contextConfigLocation:/ ClassPathXmlapplicationContext 是读取 src 目录下的配置文件 ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml"); // FileSystemXmlApplicationContext 即系统文件路径,文件的目录。 ApplicationContext context = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml"); SPRingMVC的两大要素(核心分发器Dispatcher和核心配置文件[servlet-name]-servlet.xml) DispatcherServlet在初始化时会加载位置在/WEB-INF/[servlet-name]-servlet.xml的配置文件作为SpringMVC的核心配置。SpringMVC在这里采用了一个“命名约定”的方法进行关系映射,这种方法很廉价也很管用。以上面的配置为例,我们就必须在/WEB-INF/目录下,放一个名为dispatcher-servlet.xml的Spring配置文件作为SpringMVC的核心配置用以指定SpringMVC的基本组件声明定义。 这看上去似乎有一点别扭,因为在实际项目中,我们通常喜欢把配置文件放在classpath下,并使用不同的package进行区分。例如,在基于Maven的项目结构中,所有的配置文件应置于src/main/resources目录下,这样才比较符合配置文件统一化管理的最佳实践。 于是,Spring提供了一个初始化的配置选项,通过指定contextConfigLocation选项来自定义SpringMVC核心配置文件的位置. 这样一来,DispatcherServlet在初始化时,就会自动加载在classpath下的指定文件作为其核心配置并用以初始化容器(WebApplicationContext)。 
上一篇:复用类

下一篇:函数式编程

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表