ServletRequestListener的用法和實(shí)例
ServletRequestListener:
馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。
ServletRequestListener能監(jiān)聽(tīng)到Request的生成和銷(xiāo)毀。
例 2.2.5.1
package com;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
public class MyServletRequestListener implements
ServletRequestListener {
/*public void requestDestroyed(ServletRequestEvent sre)Notification that the servlet request is about to go out of scope. */
public void requestDestroyed(ServletRequestEvent arg0) {
System.out.println("馬克-to-win destroyed"+arg0.getServletRequest().getRemoteAddr());
}
/*public void requestInitialized(ServletRequestEvent sre)Notification that the servlet request is about to go into scope. */
public void requestInitialized(ServletRequestEvent arg0) {
System.out.println("馬克-to-win request Initialized"+arg0.getServletRequest().getRemoteAddr());
}
}
web.xml加入下面這段話:
<listener>
<listener-class>com.MyServletRequestListener</listener-class>
</listener>
用下面這兩個(gè)servlet測(cè)試:
package com;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletHello1 extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("ServletHello1 before");
request.getRequestDispatcher("/ServletHello2").forward(request,response);
System.out.println("這里會(huì)block5秒,ServletHello1 after");
}
}
package com;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ServletHello2 extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("ServletHello2");
}
}
運(yùn)行這個(gè)ServletHello1以后, (如果ip地址是ipv6,比如: 0:0:0:0:0:0:0:1則換成http://127.0.0.1:8080/Filter2251/MarkToWinServlet) console里的輸出結(jié)果是:
馬克-to-win request Initialized127.0.0.1
ServletHello1 before
ServletHello2
這里會(huì)block5秒,ServletHello1 after
馬克-to-win destroyed127.0.0.1