Maison  >  Article  >  développement back-end  >  Analyse détaillée du contenu du fichier web.xml

Analyse détaillée du contenu du fichier web.xml

Y2J
Y2Joriginal
2017-04-24 10:49:061886parcourir

Explication détaillée du fichier web.xml

Préface : web.xml, web sera utilisé en général web projets .xml est principalement utilisé pour la configuration et peut faciliter le développement de projets Web. web.xml est principalement utilisé pour configurer le filtre, l'écouteur, le servlet, etc. Mais il convient de noter que web.xml n'est pas nécessaire. Un projet Web n'a pas besoin d'un fichier web.xml.

1. Projet WEB chargeant le processus web.xml

Après des tests personnels, WEB L'ordre de chargement du projet n'a rien à voir avec l'ordre de configuration des nœuds d'éléments dans le fichier. Autrement dit, le filtre ne sera pas chargé en premier car le filtre est écrit avant l'écouteur. La séquence de chargement du conteneur WEB est la suivante : ServletContext -> context-param -> filter -> Et ces éléments peuvent être configurés n’importe où dans le fichier.

La séquence du processus de chargement est la suivante :

  1. Lors du démarrage d'un projet WEB, le conteneur WEB le lira Le fichier de configuration web.xml lit les deux nœuds et .

  2. Urgent, créez un ServletContext (contexte de servlet). Toutes les parties de ce projet Web partageront ce contexte.

  3. Le conteneur convertit en une paire clé-valeur et la transmet au servletContext.

  4. Le conteneur crée une instance de classe dans

2. Explication détaillée des éléments du fichier web.xml

1. schéma

Le fichier schéma de web.xml est défini par Sun L'élément racine de chaque fichier web.xml est .

<?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. Icône de l'application Web

Indique que les outils IDE et GUI sont utilisés pour représenter les grandes et petites icônes pour les applications Web.

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

 3. Nom de l'application Web

Fournir des outils d'interface graphique qui peuvent être utilisé Un nom pour marquer cette application Web spécifique

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

 4 Description de l'application Web

 Compte tenu du texte explicatif lié à ce

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

 5 Paramètre de contexte

Déclarez les paramètres d'initialisation à l'échelle de l'application. Il est utilisé pour fournir des paires clé-valeur, c'est-à-dire des informations de contexte d'application, au ServletContext. Nos auditeurs, filtres, etc. utiliseront les informations dans ces contextes lors de l'initialisation. Dans le servlet, il peut être obtenu via 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. Filtre

Faire correspondre un nom avec une implémentation javaxs.servlet Le classe associée à l’interface .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. Auditeur

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

  est utilisé pour déclarer les données d'une servlet. Il comporte principalement les sous-éléments suivants :

Spécifiez le nom du servlet
  • Spécifiez le nom de classe du servlet
  • le site web Le chemin complet de la page web JSP
  • peut être plusieurs paramètres d'initialisation. Accédez aux paramètres d'initialisation via la méthode getInitParamenter(String name) dans la classe servlet
  • 指定当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. Correspondance du chemin le plus long. Exemple : Le modèle d'URL du servletA est /test/* et le modèle d'URL du servletB est /test/a/* Lors de l'accès à http://localhost/test/a, le conteneur sélectionnera le servlet le plus long. path. Match, qui est ici servletB.

  3. Correspondance d'extension. Si le dernier segment de l'URL contient une extension, le conteneur sélectionnera le servlet approprié en fonction de l'extension. Exemple : le modèle d'URL de servletA : *.action

Ceux commençant par "/" et se terminant par "/*" sont utilisés pour le mappage de chemin. avec le préfixe "*." sont utilisés pour le mappage étendu. Alors, pourquoi est-il erroné de définir une correspondance d'apparence normale comme "/*.action" ? Parce que cette correspondance appartient à la fois au mappage de chemin et au mappage étendu.

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn