用eclipse右键new->other->web->web fragment project

确定后修改dynamic web project name为你要输出到的项目,当然可以手动将项目打包成jar文件添加到另一个web项目的lib下,也是一样的。

 

web fragment project:

 

 

web-fragment.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-fragment id="WebFragment_ID" version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd">
<display-name>myFragmentTest</display-name> 
 <name>myFragmentTest</name>
 
     <listener>
         <listener-class>com.listener.RequestListener</listener-class>
     </listener>
     

    <!-- 设置web服务器对这个xml文件的读取顺序,一般在有多个web-fragment的时候会进行配置 -->

    <ordering>
      <before><others/></before>
    </ordering>

     
  
 </web-fragment>

 

requestListener.java

这是一个请求监听器,每当你访问一个页面时就会触发

package com.listener;

import javax.servlet.ServletContext;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;

public class RequestListener implements ServletRequestListener {

    @Override
    public void requestDestroyed(ServletRequestEvent event) {
        System.out.println("请求结束!");

    }

    @Override
    public void requestInitialized(ServletRequestEvent event) {
        ServletContext application = event.getServletContext();
        Integer count = (Integer) application.getAttribute("count");
        if(null == count) {
            count = 0;
            application.setAttribute("count", count + 1);
        } else {
            application.setAttribute("count", count + 1);
        }
        
        System.out.println("请求的次数为:" + (count + 1));

    }

}

 

这就是另一个web项目

 

打包成jar的requestListener被加到了lib下

当web容器启动的时候会实例化这个jar包里定义的listener

当你请求一个页面的时候就会调用listener里的方法。