【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;