Analysis of Web.xml in Hello1 project
Posted bleachcurtain
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Analysis of Web.xml in Hello1 project相关的知识,希望对你有一定的参考价值。
web.xml加载过程(步骤)
首先简单讲一下,web.xml的加载过程。当启动一个WEB项目时,容器包括(JBoss、Tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来。
1. 启动WEB项目的时候,容器首先会去它的配置文件web.xml读取两个节点: <listener></listener>和<context-param></context-param>。
2. 紧接着,容器创建一个ServletContext(application),这个WEB项目所有部分都将共享这个上下文。
3. 容器以<context-param></context-param>的name作为键,value作为值,将其转化为键值对,存入ServletContext。
4. 容器创建<listener></listener>中的类实例,根据配置的class类路径<listener-class>来创建监听,在监听中会有contextInitialized(ServletContextEvent args)初始化方法,启动Web应用时,系统调用Listener的该方法。
5. 举例:你可能想在项目启动之前就打开数据库,那么这里就可以在<context-param>中设置数据库的连接方式(驱动、url、user、password),在监听类中初始化数据库的连接。这个监听是自己写的一个类,除了初始化方法,它还有销毁方法,用于关闭应用前释放资源。比如:说数据库连接的关闭,此时,调用contextDestroyed(ServletContextEvent args),关闭Web应用时,系统调用Listener的该方法。
6. 接着,容器会读取<filter></filter>,根据指定的类路径来实例化过滤器。
7. 以上都是在WEB项目还没有完全启动起来的时候就已经完成了的工作。如果系统中有Servlet,则Servlet是在第一次发起请求的时候被实例化的,而且一般不会被容器销毁,它可以服务于多个用户的请求。所以,Servlet的初始化都要比上面提到的那几个要迟。
8. 总的来说,web.xml的加载顺序是:<context-param>-><listener>-><filter>-><servlet>。其中,如果web.xml中出现了相同的元素,则按照在配置文件中出现的先后顺序来加载。
WEB.xml In Hello1:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="3.1" 3 xmlns="http://xmlns.jcp.org/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
这一部分显示了XML 的版本(1.0)和所使用的编码格式(UTF-8 )
然后下一行描述文档的根元素:web-app,并且在最后一行定义了根元素的结尾:</web-app>。
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>以键值对的形式配置,在web项目启动时就会访问该节点,容器会将这个节点传输到ServletContext(上下文对象)中,在程序中就能通过这个上下文对象去取得我们这个配置值。
1 <servlet> 2 <servlet-name>Faces Servlet</servlet-name> 3 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 4 <load-on-startup>1</load-on-startup> 5 </servlet> 6 <servlet-mapping> 7 <servlet-name>Faces Servlet</servlet-name> 8 <url-pattern>*.xhtml</url-pattern> 9 </servlet-mapping>
一个servlet
元素及其servlet-mapping
元素指定 FacesServlet
。所有带.xhtml
后缀的文件都将匹配它。
servlet-mapping元素在Servlet和URL样式之间定义一个映射。
它包含了两个子元素servlet- name和url-pattern:
servlet-name元素给出的Servlet名字必须是 在servlet元素中声明过的Servlet的名字。
url-pattern元素指定对应于Servlet的URL路径,
如果url-pattern定义的是路径,那么以后所有对这个路径下资源的请求都会由servlet-name中定义的servlet处理.
如果url-pattern定义的是资源格式例如*.do等,那么对于所有符合这种格式的资源的请求都由指定的servlet处理。
1 <session-config> 2 <session-timeout> 3 30 4 </session-timeout> 5 </session-config>
session-timeout元素用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果session-timeout元素的值为零或者负数,则表示会话将永远不会超时。
以上是关于Analysis of Web.xml in Hello1 project的主要内容,如果未能解决你的问题,请参考以下文章
analysis of web.xml in hello1 project
PP: Pattern Trails: visual analysis of pattern transitions in subspaces
codeforces 702E Analysis of Pathes in Functional Graph
Journal of Proteome Research | Proteomic analysis of Rhizobium favelukesii LPU83 in response to acid