Servlet 3.0 新特性之web模块化, web-fragment.xml文件

来源:互联网 发布:gnu windows 编辑:程序博客网 时间:2024/05/17 07:34

web模块化

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

制作一个Servlet模块的步骤:

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

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

代码示例:

配置两个listener模块;

FirstListener.java

[java] view plaincopy

  1. package org.listener;
  2. import javax.servlet.annotation.*;
  3. import javax.servlet.http.*;
  4. import javax.servlet.*;
  5. import java.util.*;
  6. import java.sql.*;
  7. import javax.naming.*;
  8. public class FirstListener implements ServletRequestListener{
  9.        public void requestInitialized(ServletRequestEvent event){
  10.               System.out.println(“FirstListener created”);
  11.        }
  12.        public void requestDestroyed(ServletRequestEvent event){
  13.               System.out.println(“FirstListener destroyed”);
  14.        }
  15. }

FirstListener 的 web-fragment.xml内容:

[html] view plaincopy

  1. <?xml version=”1.0″ encoding=”ISO-8859-1″?>
  2. <web-fragment xmlns=”http://java.sun.com/xml/ns/javaee”
  3.   xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
  4.   xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
  5.                       <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”
  6. version=”3.0″>
  7.        <name>FirstListener</name>
  8.        <listener>
  9.               <listener-class>org.listener.FirstListener</listener-class>
  10.        </listener>
  11.        <ordering>
  12.               <before>
  13.                     <others/>
  14.               </before>
  15.        </ordering>
  16. </web-fragment>

SecondListener.java

[java] view plaincopy

  1. package org.listener;
  2. import javax.servlet.annotation.*;
  3. import javax.servlet.http.*;
  4. import javax.servlet.*;
  5. import java.util.*;
  6. import java.sql.*;
  7. import javax.naming.*;
  8. public class SecondListener implements ServletRequestListener{
  9.        public void requestInitialized(ServletRequestEvent event){
  10.              System.out.println(“SecondListener created”);
[java] view plaincopy

  1.        }
  2.        public void requestDestroyed(ServletRequestEvent event){
  3.              System.out.println(“SecondListener destroyed”);
  4.        }
  5. }

SecondListener的 web-fragment.xml内容是:

[html] view plaincopy

  1. <?xml version=”1.0″ encoding=”ISO-8859-1″?>
  2. <web-fragment xmlns=”http://java.sun.com/xml/ns/javaee”
  3.   xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
  4.   xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
  5.                       <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”
  6. version=”3.0″>
  7.        <name>SecondListener</name>
  8.        <listener>
[html] view plaincopy

  1.        <listener-class>org.listener.SecondListener</listener-class>
  2. </listener>
  3. <ordering>
  4.       <after>
  5.              <name>FirstListener</name>
  6.        </after>
  7. </ordering>
  8. b-fragment>

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

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

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

0 0
原创粉丝点击