如何让Web.xml变得简洁?

曾经看到过一个web.xml有上千行,如果出现点问题,开发人员根本就不知道现场是怎么一种情况。

更要命的是在不同的应用服务器,比如说在旧的websphere版本上用listener启动Spring就是有问题的。

如果要进行软件升级,那悲催了,不仅要修改应用相关的内容,还要对web.xml进行修改。

要把几个模块集成在一起,完蛋了,光web.xml的合并就困难得不行不行。

Tiny构建者深知web.xml给程序员和现场实施人员带来的不便与困扰,因此设计了以下方案进行解决,从此再不用关心web.xml。

先来看一下,tiny框架中,web.xml中配置。

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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

    <display-name>Archetype Created Web Application</display-name>

    <welcome-file-list>

        <welcome-file>index.html</welcome-file>

        <welcome-file>index.htm</welcome-file>

    </welcome-file-list>

    <listener>

        <listener-class>

            org.tinygroup.weblayer.ApplicationStartupListener

        </listener-class>

    </listener>

    <filter>

        <filter-name>TinyFilter</filter-name>

        <filter-class>org.tinygroup.weblayer.TinyHttpFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>TinyFilter</filter-name>

        <url-pattern>/*</url-pattern>

        <dispatcher>REQUEST</dispatcher

              <dispatcher>FORWARD</dispatcher

    </filter-mapping>

</web-app>

OK,一个listener用于启动,一个filter用于处理所有内容,结束了。

然后,web.xml文件就不允许再动了,换而言之,使用Tiny框架并用其模板创建了工程之后,web.xml文件就是不被允许修改的。

当然,带来一个问题就是?如果要增加别的listener,filter,servlet怎么办?

Tiny框架接管了所有的这些配置,支持自发现,也就是说你只要按照Tiny配置规范配置,然后就不用管了,Tiny框架会发现并加载它们。当然,Tiny框架还有一套配置管理规范,并有配置框架支持,在Tiny框架中,所有的配置信息都是被集中中一起的。

对于已经实现好的listener,filter,servlet,也不用担心,不用做任何修改,直接配入即可。

比如:资源压缩过滤器就是别人写好的,我们要复用,只要把这个Filter配置为一个Spring的Bean,然后如下配置就可以了:

?


1

2

3

4

<tiny-wrapper-filter id="tinyFilterWrapper" class="tinyFilterWrapper">

    <init-param name="filter_beans" value="gZIPFilter"></init-param>

    <filter-mapping url-pattern=".*"></filter-mapping>

</tiny-wrapper-filter>

当然Servlet也是一样的,下面就是jsp的例子:

?


1

2

3

4

<tiny-processor id="jspProcessor" class="tinyProcessorWapper">

    <init-param name="servlet_bean" value="jspServlet"></init-param>

    <servlet-mapping url-pattern=".*\.jsp"></servlet-mapping>

</tiny-processor>

所以,没有任何不同。

当然,里面还会有许多Tiny框架的处理器:

比如处理MDA的处理器,就是通过如下配置加入的:

?


1

2

3

4

5

<tiny-processor id="mdaTinyProcessor" class="mdaTinyProcessor">

 <servlet-mapping url-pattern=".*\.model"></servlet-mapping>

 <servlet-mapping url-pattern=".*\.modellet"></servlet-mapping>

 <servlet-mapping url-pattern=".*\.modeljson"></servlet-mapping>

</tiny-processor>

小结,在Tiny框架中,web.xml中的所有配置都被接管,并被赋予自发现能力,带来的好处就是,如果我依赖了某个Jar包(Tiny中叫业务单元),它需要有某个过滤器或处理器,那它就会被加载,而不需要程序员进行干预,也不需要现场支持人员进行修改。

时间: 2024-11-05 12:17:30

如何让Web.xml变得简洁?的相关文章

struts-Struts2的web.xml为什么要放在WEB-INF下

问题描述 Struts2的web.xml为什么要放在WEB-INF下 web.xml放在WebContent下问什么不可以呢,求指教 解决方案 webxml是tomcat装载页面的时候才用的,不是自身启动的必要.webinf是针对具体的war应用而设计的一个webinf对应一个具体的应用,tomcat 在加载这个war应用的时候根据webinf来具体解析网站结构.并启动浏览器来正确显示. 解决方案二: 因为你要启动tomcat,tomcat的启动项目文件你可以取tomcat里取查,至于Strut

Struts2配置web.xml

  任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载. 所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatcher   只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载应用的Struts2框架.   因为Struts 2将核心控制器设计成Filter,而不是一个普通Servlet.故为了让Web应用加载F

JSF环境搭建web.xml和faces-config.xml配置

转载:http://www.cnblogs.com/zxpgo/archive/2012/06/29/2570175.html   JSF提供的核心控制器是javax.faces.webapp.FacesServlet. web.xml中的welcome-file-list标签作用:当用户在浏览器中输入的URL不包含某个servlet名或JSP页面时,welcome-file-list元素可指定显示的默认文件. welcome-file子元素用于指定默认文件的名称.welcome-file-li

Servlet中web.xml配置文件(转)

转载自(虽然它本身也是转载自其他地方):http://www.cnblogs.com/wy2325/archive/2013/03/25/2980683.html 这篇文章转自JavaEye,以前配置web.xml时都不知道为什么这样,看了之后明白了很多.贴下来,共同分享! Web.xml常用元素 <web-app> <display-name></display-name>定义了WEB应用的名字 <description></description&

JSP取得在WEB.XML中定义的参数

js|web|xml 在WEB.XML文件中设置参数: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <we

Tomcat中用web.xml控制Web应用详解

web|xml|控制|详解 1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义).所有部署描述符文件的顶层(根)元素为web-app.请注意,XML元素不像HTML,他们是大小写敏感的.因此,web-

Struts web.xml中常见配置

web|xml 配置actionservlet的初始化路径  <servlet>    <servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class>    <init-param>      <param-name>config</param-name>     

J2EE deployment files(web.xml)

j2ee|web|xml <web-app> This file contains the configuration for a web-application. <icon> The icon element contains a small-icon and a large-icon element which specify the location within the web application for a small and large image used to

web.xml和struts-config.xml的配置

web|xml struts应用程序的配置: 上篇文章讲了controller,但是我发现对于Jakarta Struts中的其它内容已经遗忘殆尽,古人云:温故而知新,就让我对前边几章作一下复习这里要配置的文件有两个,一个是web.xml,另一个是struts-config.xml一.为struts配置web.xml1,配置ActionServlet(only one),使其接收应用程序收到的所有请求分为两步,a:使用servlet元素配置servlet实例,做servlet-mapping<w