Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Analyse des Inhalts der web.xml-Datei

Detaillierte Analyse des Inhalts der web.xml-Datei

Y2J
Y2JOriginal
2017-04-24 10:49:061971Durchsuche

Detaillierte Erläuterung der web.xml-Datei

Vorwort: web.xml, Web wird im allgemeinen Web verwendet Projekte .xml werden hauptsächlich zur Konfiguration verwendet und können die Entwicklung von Webprojekten erleichtern. web.xml wird hauptsächlich zum Konfigurieren von Filter, Listener, Servlet usw. verwendet. Es ist jedoch zu beachten, dass web.xml nicht erforderlich ist. Ein Webprojekt benötigt keine web.xml-Datei.

1. WEB-Projekt lädt web.xml-Prozess

Nach persönlichen Tests, WEB Die Ladereihenfolge des Projekts hat nichts mit der Konfigurationsreihenfolge der Elementknoten in der Datei zu tun. Das heißt, der Filter wird nicht zuerst geladen, da der Filter vor dem Listener geschrieben wird. Die Ladesequenz des WEB-Containers ist: ServletContext -> context-param -> Und diese Elemente können überall in der Datei konfiguriert werden.

Der Ablauf des Ladevorgangs ist wie folgt:

  1. Beim Starten eines WEB-Projekts wird es vom WEB-Container gelesen Die Konfigurationsdatei web.xml liest die beiden Knoten .

  2. Notfall: Erstellen Sie einen ServletContext (Servlet-Kontext). Alle Teile dieses Webprojekts teilen diesen Kontext.

  3. Der Container wandelt in ein Schlüssel-Wert-Paar um und übergibt es an den ServletContext.

  4. Der Container erstellt eine Klasseninstanz in

2. Detaillierte Erläuterung der web.xml-Dateielemente

1. Schema

Die Schemadatei von web.xml wird von Sun definiert. Das Stammelement jeder web.xml-Datei ist platziert.

<?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. Webanwendungssymbol

Zeigt an, dass IDE- und GUI-Tools verwendet werden zur Darstellung großer und kleiner Symbole für Webanwendungen.

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

 3. Name der Webanwendung

Stellen Sie ggf. GUI-Tools bereit verwendet Ein Name, um diese spezifische Webanwendung zu kennzeichnen

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

 4 Webanwendungsbeschreibung

 Angesichts des erläuternden Textes zu diesem

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

 Kontextparameter

Deklarieren Sie anwendungsweite Initialisierungsparameter. Es wird verwendet, um Schlüssel-Wert-Paare, also Anwendungskontextinformationen, für den ServletContext bereitzustellen. Unsere Listener, Filter usw. verwenden die Informationen in diesen Kontexten während der Initialisierung. Im Servlet kann es über getServletContext().getInitParameter("context/param") abgerufen werden.

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

 6. Filter

Ordnen Sie einen Namen einer Implementierung zu Klasse, die der .Filter-Schnittstelle zugeordnet ist.

<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>

;servlet>

  besteht hauptsächlich aus den folgenden Unterelementen:

  • Geben Sie den Namen des Servlets an

  • Geben Sie den Klassennamen des Servlets an.

  • Geben Sie eine bestimmte Datei an die Website Der vollständige Pfad der JSP-Webseite

  • wird zum Definieren von Parametern verwendet kann mehrere Init-Parameter sein. Greifen Sie über die Methode getInitPamenter(String name) in der Servlet-Klasse auf die Initialisierungsparameter zu

  • 指定当Web应用启动时,装载Servlet的次序。当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet。当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它。

  • 用来定义servlet所对应的URL,包含两个子元素

  • 指定servlet的名称

  • 指定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-timeout>120</session-timeout></session-config>

  10、

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

  11、欢迎文件页

<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、错误页面

<!-- 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

   包括  和  两个子元素。其中 元素在JSP 1.2 时就已经存在;而 是JSP 2.0 新增的元素。

   元素主要有八个子元素,它们分别为:

  • :设定的说明 

  • :设定名称 

  • :设定值所影响的范围,如: /CH2 或 /*.jsp

  • :若为 true,表示不支持 EL 语法 

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

  • :设定 JSP 网页的编码 

  • :设置 JSP 网页的抬头,扩展名为 .jspf

  • :设置 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 中加上 标签,设定所有的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. Längster Pfadabgleich. Beispiel: Das URL-Muster von ServletA ist /test/* und das URL-Muster von ServletB ist /test/a/* Beim Zugriff auf http://localhost/test/a wählt der Container das Servlet mit der längsten Zeit aus Pfad. Match, hier servletB.

  3. Erweiterungsabgleich Wenn das letzte Segment der URL eine Erweiterung enthält, wählt der Container das entsprechende Servlet basierend auf der Erweiterung aus. Beispiel: URL-Muster von servletA: *.action

Diejenigen, die mit „/“ beginnen und mit „/*“ enden, werden für die Pfadzuordnung verwendet mit dem Präfix „*.“ werden für die erweiterte Zuordnung verwendet. Warum ist es also falsch, eine normal aussehende Übereinstimmung wie „/*.action“ zu definieren?

.

Das obige ist der detaillierte Inhalt vonDetaillierte Analyse des Inhalts der web.xml-Datei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn