web.xml的简单解释以及Hello1中web.xml的简单分析
作者:互联网
一、web.xml的加载过程
①当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等)。首先会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的被启动起来。
②启动WEB项目的时候,容器首先会去读取web.xml配置文件中的两个节点:<listener> </listener>和<context-param> </context-param>。
③紧接着,容器创建一个ServletContext(application),这个web项目的所有部分都将共享这个上下文。容器以<context-param></context-param>的name作为键,value作为值,将其转化为键值对,存入ServletContext。
④在容器创建<listener></listener>中的类实例,根据配置的class类路径<listener-class>来创建监听,
⑤接着,容器会读取<filter></filter>,根据指定的类路径来实例化过滤器。
⑥如果系统中有Servlet,则Servlet是在第一次发起请求的时候被实例化的,而且一般不会被容器销毁,它可以服务于多个用户的请求。所以,Servlet的初始化都要比上面提到的那几个要迟。
二、标签
①<web-app></web-app>
<web-app></web-app>是部署描述的根元素,该元素含23个子元素。
②<display-name></display-name>
<display-name></display-name>定义web应用的名称。
③<distributable/>
<distributable/>可以使用distributable元素来告诉servlet/JSP容器,Web容器中部署的应用程序适合在分布式环境下运行。
④<context-param></context-param>
<context-param>元素含有一对参数名和参数值,用作应用的Servlet上下文初始化参数,参数名在整个Web应用中必须是惟一的,在web应用的整个生命周期中上下文初始化参数都存在,任意的Servlet和jsp都可以随时随地访问它。<param-name>子元素包含有参数名,而<param-value>子元素包含的是参数值。作为选择,可用<description>子元素来描述参数。
⑤<session-config></session-config>
<session-config> 用于设置容器的session参数。
⑥<filter></filter>
Filter可认为是Servlet的一种“变种”,它主要用于对用户请求(HttpServletRequest)进行预处理,也可以对服务器响应(HttpServletResponse)进行后处理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。
⑦<listener></listener>
Listener是Servlet的监听器,可以监听客户端的请求,服务端的操作等。
⑧<servlet></servlet>
Servlet通常称为服务端小程序,是服务端的程序,用于处理及响应客户的请求。
⑨<welcome-file-list></welcome-file-list>
<welcome-file-list>包含一个子元素<welcome-file>,<welcome-file>用来指定首页文件名称。<welcome-file-list>元素可以包含一个或多个<welcome-file>子元素。
三、example(web.xml in Hello1)
<?xml version="1.0" encoding="UTF-8"?> //注明版本,编码方式 //根元素 <web-app version="3.1" //web-app的版本 xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> //上下文参数 <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> //参数名 <param-value>Development</param-value> //参数值 </context-param> //服务端的小程序,处理相应客户端的请求 <servlet> <servlet-name>Faces Servlet</servlet-name> //名称 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> //类 <load-on-startup>1</load-on-startup> //表示容器在启动时加载这个servlet </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> //一定与<servlet>中的相同 <url-pattern>*.xhtml</url-pattern> //是要在浏览器中输入的url值 </servlet-mapping> <session-config> <session-timeout> 30 //session超时时间为30分钟 </session-timeout> </session-config> <welcome-file-list> <welcome-file>index.xhtml</welcome-file> //欢迎页 </welcome-file-list> </web-app>
标签:xml,web,容器,元素,参数,Servlet,Hello1 来源: https://www.cnblogs.com/lmt-g/p/10590690.html