web.xml加载次序与web.xml常用节点解析ITeye - 凯发娱乐

web.xml加载次序与web.xml常用节点解析ITeye

2019年03月20日13时24分04秒 | 作者: 晨潍 | 标签: 次序,节点,加载 | 浏览: 850

原博客:http://improve.iteye.com/blog/1570169

web.xml加载次序与web.xml常用节点解析

 

web.xml加载次序

运用服务器发动时web.xml加载进程,至于这些节点在xml文件中的前后次序没有关系,不过有些运用服务器,我曾碰到过的 websphere就严格要求web.xml的节点次序,不然布置不成功,所以仍是拥护依照web.xml规范格局写
content-param listener filter servlet

1、发动WEB项目的时分,运用服务器会去读它的装备文件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项目彻底发动之前被执行.假如想在项目发动之前就翻开数据库,那么这儿就能够在 context-param 中设置数据库的衔接办法,在监听类中初始化数据库的衔接,这个监听是自己写的一个类,除了初始化办法,它还有毁掉办法.用于封闭运用前开释资源.比方说数据库衔接的封闭.


关于某类装备节而言,与它们呈现的次序是有关的。
以 filter 为例,web.xml 中当然能够界说多个 filter,与 filter 相关的一个装备节是 filter-mapping,这儿必定要留意,关于具有相同 filter-name 的 filter 和 filter-mapping 装备节而言,filter-mapping 有必要呈现在 filter 之后,不然当解析到 filter-mapping 时,它所对应的 filter-name 还未界说。
web 容器发动时初始化每个 filter 时,是依照 filter 装备节呈现的次序来初始化的,当恳求资源匹配多个 filter-mapping 时,filter 阻拦资源是依照 filter-mapping 装备节呈现的次序来顺次调用 doFilter() 办法的。 
servlet 同 filter 相似,此处不再赘述。

比方filter 需求用到 bean ,但加载次序是: 先加载filter 后加载spring,则filter中初始化操作中的bean为null;所以,假如过滤器中要运用到 bean,能够将spring 的加载 改成 Listener的办法 
  listener
     listener-class org.springframework.web.context.ContextLoaderListener /listener-class
  /listener

 

web.xml节点解析

根节点
1、  web-app /web-app

常用节点介绍
2、  context-param /   用来设定web站台的环境参数
 它包括两个子元素:
  param-name /param-name 用来指定参数的称号
  param-value /param-value 用来设定参数值
 在此设定的参数,能够在servlet顶用 getServletContext().getInitParameter("my_param") 来获得
 比方:
  context-param
   param-name log4jConfigLocation /param-name
   param-value classpath*:/log4j.properties /param-value
  /context-param

3、  listener /  用来设定Listener接口
 它的主要子元素为
  listener-class /listener-class 界说Listener的类称号
 比方:
  listener
     listener-class org.springframework.web.context.ContextLoaderListener /listener-class
  /listener

4、  filter /   是用来声明filter的相关设定
  filter-name /filter-name 这当然就是指定filter的姓名
  filter-class /filter-class 这是用来界说filter的类的称号
  init-param /init-param 用来界说参数,它有两个子元素:
  param-name /param-name 用来指定参数的称号
  param-value /param-value 用来设定参数值
 比方:
  filter
   filter-name encodingFilter /filter-name
   filter-class org.springframework.web.filter.CharacterEncodingFilter /filter-class
   init-param
    param-name encoding /param-name
    param-value GBK /param-value
   /init-param
   init-param
    param-name forceEncoding /param-name
    param-value true /param-value
   /init-param
  /filter

5、  servlet /  用来声明一个servlet的数据,主要有以下子元素:
  servlet-name /servlet-name 指定servlet的称号
  servlet-class /servlet-class 指定servlet的类称号
  jsp-file /jsp-file 指定web站台中的某个JSP网页的完好途径
  init-param /init-param 用来界说参数,和前面的 init-param 差不多
 相同,与 servlet /servlet 一同运用的是
  servlet-mapping /servlet-mapping 用来界说servlet所对应的URL,包括两个子元素:
  servlet-name /servlet-name 指定servlet的称号
  url-pattern /url-pattern 指定servlet所对应的URL
  servlet
   servlet-name DemoServlet /servlet-name
   servlet-class com.test.DemoServlet /servlet-class
  /servlet
  servlet-mapping
   servlet-name DemoServlet /servlet-name
   url-pattern /demoServlet /url-pattern
  /servlet-mapping

根本节点:

6、  description/  是对站台的描绘
 比方: description 传道、授业、解惑 /description  

7、  display-name/  界说站台的称号
 比方: display-name 我的站点 /display-name

8、  icon  
icon元素包括small-icon和large-icon两个子元素.用来指定web站台中小图标和大图标的途径. 
small-icon /途径/smallicon.gif /small-icon  
small-icon元素应指向web站台中某个小图标的途径,巨细为16 X 16 pixel,可是图象文件有必要为GIF或JPEG格局,扩展名有必要为:.gif或.jpg. 
large-icon /途径/largeicon-jpg /large-icon  
large-icon元素应指向web站台中某个大图表途径,巨细为32 X 32 pixel,可是图象文件有必要为GIF或JPEG的格局,扩展名有必要为; gif或jpg. 
比方: 
icon  
  small-icon /images/small.gif /small-icon  
  large-icon /images/large.gir /large-icon  
/icon

9、  distributable/  是指定该站台是否可分布式处理

10、  session-config/  用来界说web站台中的session参数
 包括一个子元素:
  session-timeout /session-timeout 用来界说这个web站台一切session的有效期限,单位为 分钟

11、  mime-mapping /  界说某一个扩展名和某一个MIME Type做对应该
 包括两个子元素:
  extension /extension 扩展名的称号
  mime-type /mime-type MIME格局
 比方:
  mime-mapping
   extension doc /extension   
   mime-type application/vnd.ms-word /mime-type
  /mime-mapping     
  mime-mapping
   extension xls /extension
   mime-type application/vnd.ms-excel /mime-type
  /mime-mapping

12、  error-page
  error-page
     error-code 500 /error-code
     location /message.jsp /location
  /error-page
  error-page
     error-code 400 /error-code
     location /message.jsp /location
  /error-page
  error-page
     error-code 403 /error-code
     location /message.jsp /location
  /error-page
  error-page
     error-code 404 /error-code
     location /message.jsp /location
  /error-page
  error-page
     error-code 502 /error-code
     location /index.jsp /location
  /error-page

13、  jsp-config/
  jsp-config
  taglib
  taglib-uri /struts-tags /taglib-uri
  taglib-location /WEB-INF/struts-tags.tld /taglib-location
  /taglib
  taglib
  taglib-uri /struts-dojo-tags /taglib-uri
  taglib-location /WEB-INF/struts-dojo-tags.tld /taglib-location
  /taglib
  taglib
  taglib-uri /s /taglib-uri
  taglib-location /WEB-INF/struts-tags.tld /taglib-location
  /taglib
  /jsp-config

14、  welcome-file-list/
  welcome-file-list
  welcome-file index.html /welcome-file
  welcome-file index.htm /welcome-file
  welcome-file index.jsp /welcome-file
  /welcome-file-list

15、  resource-ref /resource-ref  界说使用JNDI获得站台可使用的资源
 有五个子元素:
  description /description 资源阐明
  rec-ref-name /rec-ref-name 资源称号
  res-type /res-type 资源品种
  res-auth /res-auth 资源经由Application或Container来答应
  res-sharing-scope /res-sharing-scope 资源是否能够同享,有Shareable和Unshareable两个值,默以为Shareable

 比方,装备数据库衔接池就可在此装备
  resource-ref
  description JNDI JDBC DataSource of shop /description
  res-ref-name jdbc/sample_db /res-ref-name
  res-type javax.sql.DataSource /res-type
  res-auth Container /res-auth
  /resource-ref

还有其他元素假如想更为具体的了解它能够到http://java.sun.com/xml/ns/j2ee/web-mapp_2_4.xsd网页

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章