Servlet-模块化开发web fragment
来源:互联网 发布:蔬菜交易软件 编辑:程序博客网 时间:2024/04/30 22:31
Servlet-模块化开发web fragment
sf2gis@163.com
2015年9月17日
1 目标:在不影响web.xml整体结构的情况下,独立开发web模块,提高复用性、降低耦合。
2 原理:容器识别web-fragment.xml配置文件,将其与整体应用合并。
3 流程:在web.xml中启用模块化(与注记相同)。开发web fragment project。打包。应用到目webapp。
注意:web-fragment.xml会自动生成display-name标签,则标签要删除,否则无法使用多个模块。
catalina.log中的错误提示:Thedisplay name was defined in multiple fragments with different values
参考:http://chainhou.iteye.com/blog/1986090
4 方法:
5 开发web fragment project:
5.1 新建webfragment project应用。
注意:如果指定了目标应用程序,则Eclipse会自动打包、应用。
5.2 配置web-fragment.xml。
删除display-name标签。
增加相关的标签。(也可以使用注记)。
模块名称:<name>
模块加载顺序:<ordering><before><after>
5.3 开发相应的servlet。
开发模块化的功能类。
6 打包:export 为jar。
7 应用:将jar复制到web-inf的lib目录。
8 示例:创建两个独立的监听器和一个过滤器
//第一个监听模块:TF1的web-fragment.xml
<?xmlversion="1.0" encoding="UTF-8"?>
<web-fragmentxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:webfragment="http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd"id="WebFragment_ID" version="3.1">
<name>TF1</name>
<listener>
<listener-class>lee.TF1</listener-class>
</listener>
<ordering>
<before>
<others/>
</before>
</ordering>
</web-fragment>
//第一个监听模块的处理类:TF1.java
package lee;
importjavax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
importjavax.servlet.annotation.WebListener;
/**
* Application Lifecycle Listenerimplementation class TF1
*
*/
@WebListener
public class TF1 implementsServletRequestListener {
/**
* Default constructor.
*/
public TF1() {
// TODO Auto-generated constructor stub
}
/**
* @seeServletRequestListener#requestDestroyed(ServletRequestEvent)
*/
public voidrequestDestroyed(ServletRequestEvent arg0) {
// TODO Auto-generated method stub
System.out.println("1.1");
}
/**
* @seeServletRequestListener#requestInitialized(ServletRequestEvent)
*/
public voidrequestInitialized(ServletRequestEvent arg0) {
// TODO Auto-generated method stub
System.out.println("1.0");
}
}
//第二个监听模块:TF2的web-fragment.xml
<?xmlversion="1.0" encoding="UTF-8"?>
<web-fragmentxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:webfragment="http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd"id="WebFragment_ID" version="3.1">
<name>TF2222222222</name>
<listener>
<listener-class>lee.TF2</listener-class>
</listener>
<ordering>
<after>
<name>TF1</name>
</after>
</ordering>
</web-fragment>
package lee;
//第二个监听模块处理类:TF2.java
importjavax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
importjavax.servlet.annotation.WebListener;
/**
* Application Lifecycle Listenerimplementation class TF2
*
*/
@WebListener
public class TF2 implementsServletRequestListener {
/**
* Default constructor.
*/
public TF2() {
// TODO Auto-generated constructor stub
}
/**
* @seeServletRequestListener#requestDestroyed(ServletRequestEvent)
*/
public voidrequestDestroyed(ServletRequestEvent arg0) {
// TODO Auto-generated method stub
System.out.println("2.1");
}
/**
* @seeServletRequestListener#requestInitialized(ServletRequestEvent)
*/
public voidrequestInitialized(ServletRequestEvent arg0) {
// TODO Auto-generated method stub
System.out.println("2.0");
}
}
//第三个监听模块:TF3的web-fragment.xml
<?xmlversion="1.0" encoding="UTF-8"?>
<web-fragmentxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:webfragment="http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd"id="WebFragment_ID" version="3.1">
<name>TF3</name>
</web-fragment>
//第三个监听模块处理类:TF3.java
package lee;
import java.io.IOException;
import javax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
importjavax.servlet.annotation.WebFilter;
/**
* Servlet Filter implementation class TF3
*/
@WebFilter("/*")
public class TF3 implementsFilter {
/**
* Default constructor.
*/
public TF3() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
System.out.println("3.3");
}
/**
* @seeFilter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponseresponse, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
// pass the request along the filter chain
System.out.println("3.1");
chain.doFilter(request, response);
System.out.println("3.2");
}
/**
* @seeFilter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException{
// TODO Auto-generated method stub
System.out.println("3.0");
}
}
//结果:a.jsp请求
- Servlet-模块化开发web fragment
- Servlet 3.0 新特性之web模块化, web-fragment.xml文件
- web Servlet 3.0 新特性之web模块化编程,web-fragment.xml编写及打jar包
- web前端模块化开发
- web前端模块化开发
- web中模块化开发理解
- 模块化之Spring3.0 web fragment和gradle构建项目
- Web开发基础--Servlet
- web开发 servlet
- Web开发(Servlet)(一)
- Web开发(Servlet)(二)
- Web开发之Servlet
- Web开发中的servlet
- 【Web开发】Servlet&Jsp
- 【Web开发】Servlet&Jsp
- 模块化Activity-Fragment
- 模块化开发
- 模块化开发
- Servlet-监听器Listener
- 集成项目经理在工作中的常见改进点
- spring data jpa使用二级缓存
- IE6 CSS Fixed 固定位置 防闪屏
- 如何让一个程序员变成产品经理?
- Servlet-模块化开发web fragment
- WAV文件格式分析
- 黑马程序员--protocol代理模式
- android图像图像处理——自定义组件的属性
- Servlet-文件上传@MultipartConfig,Part
- iOS9 HTTP 不能正常使用的解决办法
- 级联菜单-初始化
- 算法与数据结构笔记
- ios9 http请求报错