zoukankan      html  css  js  c++  java
  • 如何让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中叫业务单元),它需要有某个过滤器或处理器,那它就会被加载,而不需要程序员进行干预,也不需要现场支持人员进行修改。

  • 相关阅读:
    (转)ASP.NET Mvc 2.0 1. Areas的创建与执行
    新世代交易管理機制~System.Transactions
    水晶報表入門
    MyGeneration 如何连接 mysql 来生成代码
    vs.net 启动不了
    Oracle面试问题-技术篇
    把excel两列字符数据用逗号合并起来
    论Leader的技能
    物流行业名词
    html 向aspx 页面传值
  • 原文地址:https://www.cnblogs.com/j2eetop/p/4610532.html
Copyright © 2011-2022 走看看