关于web.xml的详细解释,分层解析每一个标签(第二部分)

本文详细解析了web.xml文件中的各项配置,包括welcome-file-list、filter、filter-mapping、listener、error-page、env-entry等,深入理解web应用程序的配置机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web-app下的welcome-file-list

welcome-file-list包含welcome-file的有序列表。

当URL请求是目录名称时,将提供welcome-file列表中指定的第一个文件。 如果找不到该文件,则服务器将尝试列表中的下一个文件。

元素必需/选用描述
<welcome-file>选用首页文件名(welcome文件的文件名),例如index.html
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

web-app下的filter

filter定义了一个过滤器类及其初始化属性。

元素必需/选用描述
<description>选用描述Web应用程序的文本
<display-name>选用指定Web应用程序的显示名称。
<icon>选用指定Web应用程序中用于在GUI工具中表示filter的大小图像的位置。
<filter-name>必需定义过滤器的名称,用于引用部署描述符中其他位置的过滤器定义。
<filter-class>必需过滤器的全类名。
<init-param>选用包含一个name/value 键值对,作为Servlet的初始化属性。

		<filter>
			<description>...</description>
			<display-name>...</display-name>
			<icon>...</icon>
			<filter-name>Set Character Encoding</filter-name>
			<filter-class>filters.SetCharacterEncodingFilter</filter-class>
			<init-param>
                    <param-name>encoding</param-name>
                    <param-value>UTF-8</param-value>
 			</init-param>
        </filter>

filter下的description

描述Web应用程序的文本

filter下的display-name

指定Web应用程序的显示名称。

filter下的icon

指定Web应用程序中用于在GUI工具中表示filter的大小图像的位置。

filter下的filter-name

定义过滤器的名称。

		<filter>
			<filter-name>filterName</filter-name>
			<filter-class>filters.SetCharacterEncodingFilter</filter-class>
        </filter>

filter下的filter-class

过滤器的全类名。

		<filter>
			<filter-name>filterName</filter-name>
			<filter-class>filters.SetCharacterEncodingFilter</filter-class>
        </filter>

filter下的init-param

过滤器的初始化属性。

		<filter>
			<init-param>
                    <param-name>encoding</param-name>
                    <param-value>UTF-8</param-value>
 			</init-param>
        </filter>
init-param下的param-name

过滤器的初始化属性的属性名。

init-param下的param-value

过滤器的初始化属性的属性值。

web-app下的filter-mapping

元素必需/选用描述
<filter-name>必需url模式或servlet映射的过滤器的名称
<url-pattern>必需 (或者通过<servlet>映射)用于解析URL的一个模式。如果模式匹配,则调用此元素中映射的过滤器。
<servlet-name>必需(或者通过<url-pattern>映射)servlet的名称,如果被调用,将导致该过滤器执行。


        <filter-mapping>
                <filter-name>Set Character Encoding</filter-name>
                <url-pattern>/*</url-pattern>
                <servlet-name>myServlet</servlet-name>
        </filter-mapping>
        

注:<url-pattern><servlet-name>可以同时定义,但是不推荐这样做。

filter-mapping下的filter-name

        <filter-mapping>
                <filter-name>Set Character Encoding</filter-name>
                <url-pattern>/*</url-pattern>
                <!--  不推荐同时定义url-pattern和servlet-name
                <servlet-name>myServlet</servlet-name>
                -->
        </filter-mapping>

filter-mapping下的url-pattern

        <filter-mapping>
                <filter-name>Set Character Encoding</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>

filter-mapping下的servlet-name

        <filter-mapping>
                <filter-name>Set Character Encoding</filter-name>
                <servlet-name>myServlet</servlet-name>
        </filter-mapping>

web-app下的listener

使用listener定义应用程序的监听器。

元素必需/选用描述
<listener-class>选用响应Web应用程序事件的类的名称。
        <listener>
                <listener-class>com.metawerx.listener.ContextListener</listener-class>
        </listener>
        <listener>
                <listener-class>com.metawerx.listener.SessionListener</listener-class>
        </listener>

listener下的listener-class

指定监听后响应Web应用程序事件的类的名称。

web-app下的error-page

error-page指定错误代码或异常类型与Web应用程序中资源路径之间的映射。

发生错误时(响应HTTP请求异常或Java异常),返回的HTML页面,该页面显示HTTP错误代码或包含Java错误消息的页面。可以自定义该HTML页面,以代替显示这些默认错误的响应页面或Java异常。

元素必需/选用描述
<error-code>选用有效的HTTP错误代码,例如 404
<exception-type>选用Java异常类型的标准类名,例如 java.lang.string
<location>必需为响应错误而显示的资源的位置。例如 /ErrorPage.html.
        <error-page>
                <error-code>404</error-code>
                <location>/error404.jsp</location>
        </error-page>
        <error-page>
                <exception-type>java.lang.Throwable</exception-type>
                <location>/errorThrowable.jsp</location>
        </error-page>

error-page下的error-code

        <error-page>
                <error-code>404</error-code>
                <location>/error404.jsp</location>
        </error-page>

error-page下的exception-type

        <error-page>
                <exception-type>java.lang.Throwable</exception-type>
                <location>/errorThrowable.jsp</location>
        </error-page>

error-page下的location

        <error-page>
                <error-code>404</error-code>
                <location>/error404.jsp</location>
        </error-page>
        <error-page>
                <exception-type>java.lang.Throwable</exception-type>
                <location>/errorThrowable.jsp</location>
        </error-page>

web-app下的env-entry

env-entry声明应用程序的环境条目,为每个环境条目使用单独的元素。

元素必需/选用描述
<description>选用文本描述
<env-entry-name>必需环境条目的名称。
<env-entry-value>必需环境条目的值。
<env-entry-type>必需环境条目的类型。可以设置为以下Java类型之一:java.lang.Boolean``java.lang.String``java.lang.Integer``java.lang.Double``java.lang.Float
<web-app>
<env-entry>
                <env-entry-name>webmasterName</env-entry-name>
                <env-entry-value> defined String context</env-entry-value>
                <env-entry-type>java.lang.String</env-entry-type>
        </env-entry>
        <env-entry>
                <env-entry-name>cms/defaultUserSettings/recordsPerPage</env-entry-name>
                <env-entry-value>30</env-entry-value>
                <env-entry-type>java.lang.Integer</env-entry-type>
        </env-entry>
        <env-entry>
                <env-entry-name>cms/enableXMLExport</env-entry-name>
                <env-entry-value>false</env-entry-value>
                <env-entry-type>java.lang.Boolean</env-entry-type>
        </env-entry>
        <env-entry>
                <env-entry-name>cms/enableEmailNotifications</env-entry-name>
                <env-entry-value>true</env-entry-value>
                <env-entry-type>java.lang.Boolean</env-entry-type>
        </env-entry>
</web-app>

env-entry下的description

<web-app>
	<env-entry>
         <description>my env-entry name</description>
	</env-entry>
</web-app>

env-entry下的env-entry-name

<web-app>
	<env-entry>
         <env-entry-name>webmasterName</env-entry-name>
         <env-entry-value> defined String context</env-entry-value>
         <env-entry-type>java.lang.String</env-entry-type>
	</env-entry>
</web-app>

env-entry下的env-entry-value

<web-app>
	<env-entry>
        <env-entry>
                <env-entry-name>cms/defaultUserSettings/recordsPerPage</env-entry-name>
                <env-entry-value>30</env-entry-value>
                <env-entry-type>java.lang.Integer</env-entry-type>
        </env-entry>
	</env-entry>
</web-app>

env-entry下的env-entry-type

<web-app>
	 <env-entry>
                <env-entry-name>cms/enableXMLExport</env-entry-name>
                <env-entry-value>false</env-entry-value>
                <env-entry-type>java.lang.Boolean</env-entry-type>
      </env-entry>
</web-app>

web-app下的security-role

元素必需/选用描述
<description>选用此安全角色的文本描述。
<role-name>必需角色名称。 在此使用的名称必须在特定于WebLogic的部署描述符weblogic.xml中具有一个对应的条目,该描述符将角色映射到安全领域中的主体
        <security-role>
        		<description>my security-role</description>
                <role-name>admin</role-name>
        </security-role>
        <security-role>
                <role-name>cms_editors</role-name>
        </security-role>

security-role下的description

        <security-role>
                <description>my security-role</description>
        </security-role>

security-role下的role-name

        <security-role>
                <role-name>admin</role-name>
        </security-role>

web-app下的security-constraint

security-constraint设置通过<web-resource-collection>定义的资源集合的访问权限。

元素必需/选用描述
<display-name>选用定义该限制的简称。
<web-resource-collection>必需定义应用此安全约束的Web应用程序的组件。
<auth-constraint>选用定义哪些组或主体有权访问此安全约束中定义的Web资源集合。
<user-data-constraint>选用定义客户端应如何与服务器通信。
        <!-- 限制对/private/* 目录的访问的约束-->
        <security-constraint>
                <web-resource-collection>
                		<description>...</description>
                        <web-resource-name>defined protected</web-resource-name>
                        <url-pattern>/private/*</url-pattern>
                        
                        <!--如果列出http方法,则只有这些方法受保护。去掉注释即可指定保护下列方法。-->
						<!--  
						<http method>DELETE</http method>
						<http method>GET</http method>
						<http method>POST</http method>
						<http method>PUT</http method>
						-->
                </web-resource-collection>
                <auth-constraint>
                        <!-- 只有admin和cms_editors才能访问此安全约束中定义的Web资源集合。-->
                        <description>...</description>
                        <role-name>admin</role-name>
                        <role-name>cms_editors</role-name>
                </auth-constraint>
        </security-constraint>

security-constraint下的display-name

<security-constraint>
	<display-name>...</display-name>
</security-constraint>

security-constraint下的web-resource-collection

每个<security-constraint>元素必须具有一个或多个<web-resource-collection>元素。这些定义了此安全性约束所应用到的Web应用程序的范围。

元素必需/选用描述
<web-resource-name>必需该Web资源集合的名称。
<description>选用该安全性约束的文本描述。
<url-pattern>选用使用一个或多个<url-pattern>元素来声明此安全性约束适用于哪些URL模式。至少使用这些元素中的一个,否则<web-resource-collection>将被WebLogic Server忽略。
<http-method>选用使用一个或多个<http-method>元素来声明哪些HTTP方法(通常是GETPOST)受到授权约束。如果省略<http-method>元素,则默认行为是将安全约束应用于所有HTTP方法。
        <!-- 限制对/private/* 目录的访问的约束-->
        <security-constraint>
                <web-resource-collection>
                		<description>...</description>
                        <web-resource-name>defined protected</web-resource-name>
                        <url-pattern>/private/*</url-pattern>
                        
                        <!--如果列出http方法,则只有这些方法受保护。去掉注释即可指定保护下列方法。-->
						<!--  
						<http method>DELETE</http method>
						<http method>GET</http method>
						<http method>POST</http method>
						<http method>PUT</http method>
						-->
                </web-resource-collection>
        </security-constraint>

ecurity-constraint下的auth-constraint

可选的auth-constraint元素定义哪些组或主体可以访问在此安全约束中定义的Web资源集合。

元素必需/选用描述
<role-name>选用允许访问的role名称
<description>选用此安全性约束的文本描述。
        <security-constraint> 
                <auth-constraint>
                        <!-- 只有admin和cms_editors才能访问此安全约束中定义的Web资源集合。-->
                        <description>...</description>
                        <role-name>admin</role-name>
                        <role-name>cms_editors</role-name>
                </auth-constraint>
        </security-constraint>

ecurity-constraint下的user-data-constraint

元素必需/选用描述
<description>选用文本描述
<transport-guarantee>必需指定客户端和服务器之间的通信。

注:

<transport-guarantee>值的范围

  • NONE

    该应用程序不要求任何运输的保障。

  • INTEGRAL

    应用程序要求在客户端和服务器之间发送数据,而该方式不能在传输过程中更改。

  • CONFIDENTIAL

    应用程序要求传输数据,以防止其他实体观察传输内容。

使用INTEGRAL或CONFIDENTIAL传输保证对用户进行身份验证时,web应用服务器会建立安全套接字层(SSL)连接。

       <!-- 定义一个约束以在应用程序中的所有页面上强制建立SSL连接 -->
        <security-constraint>
                <web-resource-collection>
                        <web-resource-name>Entire Application</web-resource-name>
                        <url-pattern>/*</url-pattern>
                </web-resource-collection>
                <user-data-constraint>
                        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
                </user-data-constraint>
        </security-constraint>

web-app下的login-config

使用可选的login-config元素配置如何认证用户;该应用程序应使用的领域名称;以及表单登录机制所需的属性。

如果存在此元素,则必须对用户进行身份验证,以便访问受Web应用程序中定义的<security-constraint>约束的任何资源。一旦通过身份验证,就可以授权用户使用访问权限访问其他资源。

元素必需 /选用描述
<auth-method>选用指定用于认证用户的方法。可能的值:BASIC—uses browser authentication. (This is the default value.) FORM—uses a user-written HTML form. CLIENT-CERT
<realm-name>选用用来认证用户凭据的领域的名称。如果省略,则默认使用在Web应用程序->配置->管理控制台的“其他”选项卡上通过“身份验证领域名称”字段定义的领域。有关更多信息,请参阅管理WebLogic安全。
<form-login-config>选用如果将<auth-method>配置为FORM,请使用此元素。

Note: <realm-name>元素不引用WebLogic Server中的系统安全领域。此元素定义在HTTP Basic授权中使用的领域名称。系统安全领域是在服务器中执行某些操作时检查的安全信息的集合。 Servlet安全领域是安全信息的不同集合,当访问页面并使用基本身份验证时将对其进行检查。

		<!--  基于表单的身份验证
        <login-config>
                <auth-method>FORM</auth-method>
                <form-login-config>
                        <form-login-page>/login.jsp</form-login-page>
                        <form-error-page>/error.jsp</form-error-page>
                </form-login-config>
        </login-config>
        -->
        <login-config>
         		<auth-method>BASIC</auth-method>
                <realm-name>Editor Login</realm-name>
        </login-config>
        <!--  基于客户端证书的验证
        <login-config>
                <auth-method>CLIENT-CERT</auth-method>
        </login-config>
		-->

login-config下的realm-name

        <login-config>
                <realm-name>Editor Login</realm-name>
        </login-config>

login-config下的auth-method

        <login-config>
                <auth-method>CLIENT-CERT</auth-method>
        </login-config>

login-config下的form-login-config

Web资源相对于文档根的URI,用于验证用户。 这可以是HTML页面,JSP或HTTP servlet,并且必须返回HTML页面,该页面包含符合特定命名约定的基于FORM的身份验证。

元素必需/选用描述
<form-login-page>必需Web资源相对于文档根的URI,用于验证用户。 这可以是HTML页面,JSP或HTTP servlet,并且必须返回HTML页面,该页面包含符合特定命名约定的基于FORM的身份验证。
<form-error-page>必需相对于文档根目录的Web资源的URI,响应于失败的身份验证登录发送给用户。
	<form-login-config>
            <form-login-page>/login.jsp</form-login-page>
            <form-error-page>/error.jsp</form-error-page>
    </form-login-config>
form-login-config下的form-login-page
	<form-login-config>
            <form-login-page>/login.jsp</form-login-page>
    </form-login-config>

form-login-config下的form-error-page
	<form-login-config>
            <form-error-page>/error.jsp</form-error-page>
    </form-login-config>

web-app下的mime-mapping

mime-mapping元素定义了扩展名和mime类型之间的映射。

元素必需/选用描述
<extension>必需描述扩展名的字符串,例如:txt
<mime-type>必需描述定义的mime类型的字符串,例如: text/plain
        <mime-mapping>
                <extension>xls</extension>
                <mime-type>application/vnd.ms-excel</mime-type>
        </mime-mapping>

mime-mapping下的extension

        <mime-mapping>
                <extension>xls</extension>
                <mime-type>application/vnd.ms-excel</mime-type>
        </mime-mapping>

mime-mapping下的mime-type

        <mime-mapping>
                <extension>txt</extension>
                <mime-type>text/plain</mime-type>
        </mime-mapping>

web-app下的locale-encoding-mapping-list

	<!-- 设置区域编码  -->
	    <locale-encoding-mapping-list>
                <locale-encoding-mapping>
                        <locale>ja</locale>
                        <encoding>Shift_JIS</encoding>
                </locale-encoding-mapping>
        </locale-encoding-mapping-list>

web-app下的resource-env-ref

resource-env-ref元素包含Web应用程序对与Web应用程序环境中的资源关联的托管对象的引用的声明,由一个可选描述、资源环境引用名称以及Web应用程序代码期望的资源环境引用类型的指示组成。

元素必需/选用描述
<description>选用描述该资源环境引用。
<resource-env-ref-name>必需指定该资源环境引用的名称。
<resource-env-ref-type>必需指定该资源环境引用的类型,必须是Java语言类或接口的标准名称。

注:<resource-env-ref-name>的值是Web应用程序代码中使用的环境条目名称。该名称是相对于java:comp / env上下文的JNDI名称,并且在Web应用程序中必须唯一。

web-app下的resource-ref

可选的resource-ref元素定义对引用的外部资源的查找名称。这允许Servlet代码通过在部署时映射到实际位置的“虚拟”名称去查找资源。

使用一个单独的<resource-ref>定义每个外部资源的名称。在WebLogic特定的部署描述符weblogic.xml中,外部资源名称在部署时映射到资源的实际位置的名称。

元素必需/选用描述
<description>选用对引用的外部资源的文本描述
<res-ref-name>必需JNDI树中使用的资源的名称。 Web应用程序中的Servlet使用此名称查找对资源的引用。
<res-type>必需与引用名称相对应的资源的Java类型。使用Java类型的完整软件包名称。
<res-auth>必需用于控制资源登录的安全性。
<res-sharing-scope>选用指定是否可以共享通过resource manager connection factory引用获得的连接。有效值:ShareableUnshareable

注:<res-auth>的属性值如果设置为APPLICATION,则表示应用程序组件代码以编程方式执行资源签名。如果设置为CONTAINER,则WebLogic Server使用通过login-config元素建立的安全上下文。

web-app下的ejb-ref

可选的ejb-ref元素定义对EJB资源的引用。通过在特定于WebLogic的部署描述符文件weblogic.xml中定义映射,可以将该引用映射到部署时的EJB实际位置。使用单独的<ejb-ref>元素定义每个参考EJB名称。

元素必需/选用描述
<description>选用引用的文本描述。
<ejb-ref-name>必需Web应用程序中使用的EJB的名称。此名称映射到特定于WebLogic的部署描述符weblogic.xml中的JNDI树。
<ejb-ref-type>必需引用的EJB的预期Java类类型。
<home>必需EJB home接口的全类名。
<remote>必需EJB远程接口的全类名。
<ejb-link>选用包含的J2EE应用程序包中EJB的<ejb-name>
<run-as>选用一种安全角色,其安全性上下文应用于引用的EJB。必须是使用<security-role>元素定义的安全角色。

web-app下的ejb-local-ref

ejb-local-ref元素用于声明对企业bean的本地宿主的引用。

该声明包括:

  • 可选描述
  • 在引用企业bean的Web应用程序的代码中使用的EJB引用名称。引用的企业bean的预期类型
  • 引用的企业bean的预期本地本地和本地接口
  • 可选的ejb-link信息,用于指定引用的企业bean
元素必需/选用描述
<description>选用引用的文本说明
<ejb-ref-name>必需包含EJB引用的名称。
<ejb-ref-type>必需ejb-ref-type元素包含所引用企业bean的预期类型。 ejb-ref-type元素必须是以下之一:<ejb-ref-type>Entity</ejb-ref-type>``<ejb-ref-type>Session</ejb-ref-type>
<local-home>必需包含企业bean的本地home接口的标准名称。
<local>必需包含企业bean的本地接口的标准名称。
<ejb-link>选用eejb-ref或ejb-local-ref元素中使用ejb-link元素来指定将EJB引用链接到EJB。

EJB引用是Web应用程序环境中的一个条目,并且相对于java:comp / env的context。该名称在Web应用程序中必须是唯一的。建议名称以ejb /开头。该名称在Web应用程序中必须是唯一的。建议名称以ejb /开头。

例如:

<ejb-ref-name> ejb / Payroll </ ejb-ref-name>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值