【servlet3.0新特性】web模块化配置实例

原来一个servlet web应用的任何配置都需要在web.xml中进行,因此会使得web.xml变得很混乱,而且灵活性差,因此Servlet 3.0可以将每个Servlet、Filter、Listener打成jar包,然后放在WEB-INF\lib中;注意各自的模块都有各自的配置文件,这个配置文件的名称为  web-fragment.xml ;

 
制作一个Servlet3.0模块的步骤:


1.编写Servlet,并编译;

2.将此编译class文件及所在包通过jar包命令打成jar包;

3.将此jar包用winrar打开,并将其中的META-INF中的manifest删除并添加 web-fragment.xml;

4.将此jar包放入WEB-INF\lib中即可;
 

web-fragment.xml注意点:

1.根元素为<web-fragment>;

2.<name></name>表示模块名称;

3.<ordering></ordering>是此模块的加载顺序;

4.<before><others/></before>表示第一个加载;

5.<after><name>A</name></after>表示比A后面加载;

6.可以在里面部署listener、filter、servlet

当然可以不设置任何的模块加载顺序;

下面介绍一下web模块化完整的代码实例:

配置两个listener模块;

FirstListener.java

package org.listener;  
import javax.servlet.annotation.*;  
import javax.servlet.http.*;  
import javax.servlet.*;  
import java.util.*;  
import java.sql.*;  
import javax.naming.*;  
public class FirstListener implements ServletRequestListener{  
       public void requestInitialized(ServletRequestEvent event){  
              System.out.println("FirstListener created");  
       }  
       public void requestDestroyed(ServletRequestEvent event){  
              System.out.println("FirstListener destroyed");  
       }  
}  

 

FirstListener 的 web-fragment.xml内容:

    <?xml version="1.0" encoding="ISO-8859-1"?>  
    <web-fragment xmlns="http://java.sun.com/xml/ns/javaee"  
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
                          <A href="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"">http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
     version="3.0">    
           <name>FirstListener</name>  
           <listener>  
                  <listener-class>org.listener.FirstListener</listener-class>  
           </listener>  
           <ordering>  
                  <before>  
                        <others/>  
                  </before>  
           </ordering>  
    </web-fragment>  

 

SecondListener.java

    package org.listener;  
    import javax.servlet.annotation.*;  
    import javax.servlet.http.*;  
    import javax.servlet.*;  
    import java.util.*;  
    import java.sql.*;  
    import javax.naming.*;  
    public class SecondListener implements ServletRequestListener{  
           public void requestInitialized(ServletRequestEvent event){  
                 System.out.println("SecondListener created");   }  
       public void requestDestroyed(ServletRequestEvent event){  
             System.out.println("SecondListener destroyed");  
       }  
}  

 

SecondListener的 web-fragment.xml内容是:

    <?xml version="1.0" encoding="ISO-8859-1"?>  
    <web-fragment xmlns="http://java.sun.com/xml/ns/javaee"  
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
                          <A href="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"">http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
     version="3.0">    
           <name>SecondListener</name>  
           <listener>  <listener-class>org.listener.SecondListener</listener-class>  
</listener>  
<ordering>  
      <after>  
             <name>FirstListener</name>  
       </after>  
</ordering>  
</web-fragment> 

 

然后分别打成jar包,放入 WEB-INF\lib中即可;

随便访问一个web应用,然后发现 tomcat控制台输出:

看出先加载FirstListener,再加载SecondListener;

来源://作者:/更新时间:2013-11-14
相关文章
评论:
验证码:
匿名评论: