J2EE Web应用的部署描述符DD对于Web开发人员通常都不会陌生,不过某些细节的问题,不好好研究一下Servlet的规范,就可能有些模糊了。
今天遇到个问题:当一个被请求的Web资源符合多个Filter配置的mapping规则时,这些Filter执行的顺序是怎样的?是根据filter标签本身在web.xml中定义的顺序执行,还是根据filter-mapping标签在web.xml中定义的顺序执行呢?
这个问题网上很多人的说法非常模糊,并没有清楚区分两者的顺序区别(其实在绝大部分场景中,两者的顺序通常是一致的)。终于在Sun当年给出的web.xml的XSD文件中,找到问题比较清楚的说明。
<xsd:complexType name="filter-mappingType">
<xsd:annotation>
<xsd:documentation>
Declaration of the filter mappings in this web
application is done by using filter-mappingType.
The container uses the filter-mapping
declarations to decide which filters to apply to a request,
and in what order. The container matches the request URI to
a Servlet in the normal way. To determine which filters to
apply it matches filter-mapping declarations either on
servlet-name, or on url-pattern for each filter-mapping
element, depending on which style is used. The order in
which filters are invoked is the order in which
filter-mapping declarations that match a request URI for a
servlet appear in the list of filter-mapping elements.The
filter-name value must be the value of the filter-name
sub-elements of one of the filter declarations in the
deployment descriptor.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="filter-name"
type="javaee:filter-nameType"/>
<xsd:choice minOccurs="1" maxOccurs="unbounded">
<xsd:element name="url-pattern"
type="javaee:url-patternType"/>
<xsd:element name="servlet-name"
type="javaee:servlet-nameType"/>
</xsd:choice>
<xsd:element name="dispatcher"
type="javaee:dispatcherType"
minOccurs="0" maxOccurs="4"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID"/>
</xsd:complexType>
这里主要看上面的documentation部分的描述,可以看到, filter的触发顺序是按照filter-mapping的定义顺序执行的,而并非filter定义在web.xml中的顺序。
分享到:
相关推荐
5. **执行部署**:通过命令行或集成在CI/CD工具中的WebDeploy命令,执行远程部署操作。 6. **验证部署**:部署完成后,检查服务器上的应用程序状态,确保所有文件都已正确更新,数据库迁移顺利完成。 总的来说,...
在JBoss中部署应用程序相当直观,只需要将部署单元复制到对应的部署目录(例如server/default/deploy)。JBoss会持续监控该目录,一旦发现新文件,就会自动进行部署。部署的文件可以是EJB JARs、Web应用WARs、企业...
WebDeploy,全称为Microsoft Web Deploy,是一款由微软公司开发的强大的自动化部署工具,主要用于简化和加速Web应用程序在IIS(Internet Information Services)服务器上的发布过程。该工具特别适用于开发者和系统...
描述中提到的"up博客"可能是指某个特定的博客资源,提供了关于WebDeploy的使用教程和技巧。用户可以结合这个博客,学习如何配置WebDeploy规则,设置部署参数,以及解决可能出现的问题。 ### 免费资源的获取 虽然...
《Go-go-deploy:基于SVN的Web集群高效部署利器》 在现代互联网环境中,快速且稳定的Web服务部署是每个团队的核心需求之一。Go-go-deploy是一款专为解决这一问题而设计的工具,它利用了Go语言的高效性能和SVN...
Web Deploy,也称为Web Deploy工具,是Microsoft提供的一款强大的部署工具,主要用于简化和自动化IIS Web服务器的应用程序部署。在本文中,我们将深入探讨如何启用Web Deploy以及如何使用命令行进行本地和远程部署。...
在IT行业中,Web应用的打包部署是开发流程中的重要环节,它涉及到将开发完成的Web应用程序转换为可运行状态,并将其发布到服务器上供用户访问。"net-web打包部署"通常指的是针对基于.NET框架的Web应用程序进行的打包...
WebDeploy不仅仅让你发布文件—还可以部署数据库结构/数据,运行变更的数据库脚本,设置安全访问控制列表等等。所有这些部署步骤都可以用VisualStudio自动完成。 Web部署工具可简化IISweb服务器、Web应用程序和网站...
.NET Web应用程序的安装部署通常通过ASP.NET的Web部署项目(Web Deploy Package)或者使用ClickOnce技术来实现。在默认情况下,这些部署方式可能不允许用户在安装过程中选择自定义的安装路径,这可能会对某些需要...
一个标准的Web应用通常包含以下几个部分:Web-INF目录,其中包含web.xml(部署描述符),classes目录(存放编译后的Java类),以及lib目录(存放依赖的JAR文件)。此外,还有HTML、CSS、JavaScript等静态资源文件,...
当时自己安装vs2012时 webdeploy3.0安装失败了 自己在搞了半天才找到这个 希望对大家有用吧
在本文中,我们将深入探讨如何在Glassfish服务器上部署Web应用程序。Glassfish是一款开源的应用服务器,主要用于运行Java EE(现在称为Jakarta EE)应用程序,包括Web应用程序和企业级Java组件。 首先,对于Java EE...
DELPHI7中的Web Deploy,全称为Web Deployment Tool,是一个强大的解决方案,用于简化Delphi开发的应用程序部署过程。在Delphi 7这个经典的版本中,开发者可能会遇到各种部署上的问题,比如应用程序与目标系统间的...
Visual Studio 2010 引入了 web.config 转换功能,使得能够基于一个主 web.config 文件,在不同环境中应用特定的定制化设置。 - **转换工作原理**:通过在主 web.config 文件中使用特殊的 XDT (XML Document ...
对于使用Visual Studio的开发者而言,这一过程变得相对简单,因为Visual Studio提供了一整套强大的Web部署工具,可以帮助我们轻松地将Web应用发布到远程的IIS(Internet Information Services)服务器上。...
标题 "NET5Jenkins_Bat Deploy IIS Web.rar" 暗示了这是一个关于使用.NET 5、Jenkins和批处理脚本(Bat)来自动化部署IIS Web应用程序的资源包。描述简单明了,与标题一致,进一步确认了这是关于自动化部署流程。 ...