旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

web.xml文件内容详细分析【XML教程】,web.xml,xml

作者:搜教程发布时间:2019-11-28分类:XML教程浏览:33评论:0


导读:web.xml文件详解  媒介:平常的web工程中都会用到web.xml,web.xml重要用来设置,能够轻易的开辟web工程。web.xml重要用来设置Filter、List...

web.xml文件详解

  媒介:平常的web工程中都会用到web.xml,web.xml重要用来设置,能够轻易的开辟web工程。web.xml重要用来设置Filter、Listener、Servlet等。然则要申明的是web.xml并非必需的,一个web工程能够没有web.xml文件。

1、WEB工程加载web.xml历程

  经由个人测试,WEB工程加载递次与元素节点在文件中的设置递次无关。即不会由于 filter 写在 listener 的前面而会先加载 filter。WEB容器的加载递次是:ServletContext -> context-param -> listener -> filter -> servlet。而且这些元素能够设置在文件中的恣意位置。

  加载历程递次以下:

  1. 启动一个WEB项目的时刻,WEB容器会去读取它的设置文件web.xml,读取<listener>和<context-param>两个结点。

  2. 紧急着,容建立一个ServletContext(servlet高低文),这个web项目的一切部份都将同享这个高低文。

  3. 容器将<context-param>转换为键值对,并交给servletContext。

  4. 容器建立<listener>中的类实例,建立监听器。

2、web.xml文件元素详解

  1、schema

  web.xml的形式文件是由Sun公司定义的,每一个web.xml文件的根元素<web-app>中,都必需标明这个 web.xml运用的是哪一个形式文件。别的的元素都放在<web-app></web-app>当中。

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"></web-app>

  2、<icon>Web运用图标

  指出IDE和GUI东西用来示意Web运用的大图标和小图标。

<icon>
    <small-icon>/images/app_small.gif</small-icon>
    <large-icon>/images/app_large.gif</large-icon></icon>

  3、<display-name>Web运用称号

  供应GUI东西可能会用来标记这个特定的Web运用的一个称号

<display-name>Tomcat Example</display-name>

  4、<disciption>Web运用形貌

  给出于此相干的申明性文本

<disciption>Tomcat Example servlets and JSP pages.</disciption>

  5、<context-param>高低文参数

  声明运用局限内的初始化参数。它用于向 ServletContext供应键值对,即运用程序高低文信息。我们的listener, filter等在初始化时会用到这些高低文中的信息。在servlet内里能够经由过程getServletContext().getInitParameter("context/param")获得。

<context-param>
    <param-name>ContextParameter</para-name>
    <param-value>test</param-value>
    <description>It is a test parameter.</description></context-param>

  6、<filter>过滤器

  将一个名字与一个完成javaxs.servlet.Filter接口的类相干联。

<filter>
    <filter-name>setCharacterEncoding</filter-name>
    <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param></filter><filter-mapping>
    <filter-name>setCharacterEncoding</filter-name>
    <url-pattern>/*</url-pattern></filter-mapping>

  7、<listener>监听器

<listener> 
    <listerner-class>com.listener.SessionListener</listener-class> </listener>

  8、<servlet>

  <servlet></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类中经由过程getInitParamenter(String name)要领接见初始化参数

  • <load-on-startup></load-on-startup>指定当Web运用启动时,装载Servlet的序次。当值为正数或零时:Servlet容器先加载数值小的servlet,再顺次加载其他数值大的servlet。当值为负或未定义:Servlet容器将在Web客户初次接见这个servlet时加载它。

  • <servlet-mapping></servlet-mapping> 用来定义servlet所对应的URL,包含两个子元素

  • <servlet-name></servlet-name> 指定servlet的称号

  • <url-pattern></url-pattern> 指定servlet所对应的URL

<!-- 基础设置 --><servlet>
    <servlet-name>snoop</servlet-name>
    <servlet-class>SnoopServlet</servlet-class></servlet><servlet-mapping>
    <servlet-name>snoop</servlet-name>
    <url-pattern>/snoop</url-pattern></servlet-mapping><!-- 高等设置 --><servlet>
    <servlet-name>snoop</servlet-name>
    <servlet-class>SnoopServlet</servlet-class>
    <init-param>
        <param-name>foo</param-name>
        <param-value>bar</param-value>
    </init-param>
    <run-as>
        <description>Security role for anonymous access</description>
        <role-name>tomcat</role-name>
    </run-as></servlet><servlet-mapping>
    <servlet-name>snoop</servlet-name>
    <url-pattern>/snoop</url-pattern></servlet-mapping>

  9、<session-config>会话超时设置

  单元为分钟。

<session-config>
    <session-timeout>120</session-timeout></session-config>

  10、<mime-mapping>

<mime-mapping>
    <extension>htm</extension>
    <mime-type>text/html</mime-type></mime-mapping>

  11、<welcome-file-list>迎接文件页

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file></welcome-file-list>

  12、<error-page>毛病页面

<!-- 1、经由过程毛病码来设置error-page。当体系发作×××毛病时,跳转到毛病处理页面。 --><error-page>
    <error-code>404</error-code>
    <location>/NotFound.jsp</location></error-page><!-- 2、经由过程非常的范例设置error-page。当体系发作java.lang.NullException(即空指针非常)时,跳转到毛病处理页面。 --><error-page>
    <exception-type>java.lang.NullException</exception-type>
    <location>/error.jsp</location></error-page>

  13、<jsp-config>设置jsp

  <jsp-config> 包含 <taglib> 和 <jsp-property-group> 两个子元素。个中<taglib> 元素在JSP 1.2 时就已存在;而<jsp-property-group> 是JSP 2.0 新增的元素。

  <jsp-property-group> 元素重要有八个子元素,它们分别为:

  • <description>:设定的申明

  • <display-name>:设定称号

  • <url-pattern>:设定值所影响的局限,如: /CH2 或 /*.jsp

  • <el-ignored>:若为 true,示意不支持 EL 语法

  • <scripting-invalid>:若为 true,示意不支持 <% scripting %>语法

  • <page-encoding>:设定 JSP 网页的编码

  • <include-prelude>:设置 JSP 网页的仰面,扩大名为 .jspf

  • <include-coda>:设置 JSP 网页的末端,扩大名为 .jspf

<jsp-config>
    <taglib>
        <taglib-uri>Taglib</taglib-uri>
        <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>
    </taglib>
    <jsp-property-group>
        <description>Special property group for JSP Configuration JSP example.</description>
        <display-name>JSPConfiguration</display-name>
        <url-pattern>/jsp/* </url-pattern>
        <el-ignored>true</el-ignored>
        <page-encoding>GB2312</page-encoding>
        <scripting-invalid>true</scripting-invalid>
        <include-prelude>/include/prelude.jspf</include-prelude>
        <include-coda>/include/coda.jspf</include-coda>
    </jsp-property-group></jsp-config>

  关于Web 运用程式来讲,Scriptlet 是个不乐意被见到的东西,由于它会使得HTML 与Java 程式码交相混淆,关于程式的保护来讲相称的贫苦,必要的时刻,能够在web.xml 中加上<script-invalid> 标签,设定一切的JSP 网页都不能够运用Scriptlet。

3、Mapping划定规矩

  当一个要求发送到servlet容器的时刻,容器先会将要求的url减去当前运用高低文的途径作为servlet的映照url,比方我接见的是http://localhost/test/aaa.html,我的运用高低文是test,容器会将http://localhost/test去掉,剩下的/aaa.html部份拿来做servlet的映照婚配。这个映照婚配历程是有递次的,而且当有一个servlet婚配胜利今后,就不会去剖析剩下的servlet了。

  其婚配划定规矩和递次以下:

  1. 准确途径婚配。例子:比方servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时刻,假如我接见的url为http://localhost/test ,这个时刻容器就会先 举行准确途径婚配,发明/test恰好被servletA准确婚配,那末就去挪用servletA,也不会去剖析其他的servlet了。

  2. 最长途径婚配。例子:servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此时接见http://localhost/test/a时,容器会挑选途径最长的servlet来婚配,也就是这里的servletB。

  3. 扩大婚配,假如url末了一段包含扩大,容器将会依据扩大挑选适宜的servlet。例子:servletA的url-pattern:*.action

  以”/’开首和以”/*”末端的是用来做途径映照的。以前缀”*.”开首的是用来做扩大映照的。所以,为何定义”/*.action”如许一个看起来很正常的婚配会错?由于这个婚配即属于途径映照,也属于扩大映照,致使容器没法推断。

以上就是web.xml文件内容细致分析的细致内容,更多请关注ki4网别的相干文章!

标签:web.xmlxml


欢迎 发表评论: