如何让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中叫业务单元),它需要有某个过滤器或处理器,那它就会被加载,而不需要程序员进行干预,也不需要现场支持人员进行修改。
相关文章
|
5月前
|
JavaScript Java Spring
web.xml中/和/*的区别
web.xml中/和/*的区别
|
1月前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
10 0
|
5月前
|
XML 安全 IDE
web.xml 总结
web.xml 总结
|
7月前
Servlet配置web.xml
Servlet配置web.xml
68 0
|
XML 数据格式
web.xml内容如下
web.xml内容如下
70 0
|
Java 前端开发 数据格式
|
XML Java 数据格式
web.xml
ssm框架中web.xml
|
Java 数据格式 容器
web.xml配置解释
//以上为web.xml头信息, //让web容器初始化的时候初始化这些配置,*号代表通配符,会在根目录下和jar包里找 contextConfigLocation classpath*:applicationContext.
878 0
|
fastjson 容器 druid
JettyServer无web.xml
JettyServer无web.xml启动
1546 0