2019/3/24 8:18:11
ASP程序員經常要在global.asa文(wén)件(jiàn)内處理(lǐ)Application_start,Session_Start等
事件(jiàn),如(rú):用(yòng)戶驗證、重定向不同編碼頁面等,十分(fēn)方便,然而一向頗受歡迎的(de)JSP并不很支持這種處理(lǐ),除了商業(yè)化服務器(qì)JRun支持global.jsa以外,竟連應用(yòng)率極高(gāo)的(de)開(kāi)放(fàng)源碼服務器(qì)Tomcat都(dōu)不支持,這給JSP的(de)開(kāi)發造成不小(xiǎo)障礙,雖然早期Tomcat(5.0以前版本)下可(kě)以通過以下方式實現Session-start事件(jiàn)處理(lǐ)
1. 添加Session
session.put(“bind.listener”,new MyListener(getServletContext())
2. 定義MyListener類
import javax.servlet.http.*;
import javax.servlet.*;
public class MyListener implements HttpSessionBindingListener
{
ServletContext context;
public ODSessionListener(ServletContext context)
{
this.context=context;
}
public void valueBound(HttpSessionBindingEvent event)
{
System.out.println(“bound”);
}
public void valueUnBound(HttpSessionBindingEvent event)
{
System.out.println(“unbound”);
}
}
但(dàn)處理(lǐ)前提是Session已經建立,并且不能(néng)在Session創建時處理(lǐ)驗證等事件(jiàn),通過研究Servlet 2.4(Tomcat5.0内建)終于找到(dào)一種可(kě)行(xíng)方法,實現方法如(rú)下:
//---------------------- SessionListener.java----------------------------------------------------
package listeners;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
// ServletRequestListener爲Servlet2.4新增接口
import javax.servlet.ServletRequestListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.http.HttpServletRequest;
public final class SessionListener
implements HttpSessionListener,ServletRequestListener {
private HttpServletRequest request;
public void requestDestroyed(ServletRequestEvent sre) { }
public void requestInitialized(ServletRequestEvent sre)
{
request=(HttpServletRequest)sre.getServletRequest();
}
public void sessionCreated(HttpSessionEvent event) {
String logMsg=event.getSession().getId()
+"' '"+request.getRemoteAddr()
+":"+request.getRemotePort();
log("sessionCreated('" + logMsg + "')");
}
public void sessionDestroyed(HttpSessionEvent event)
深圳市南山區南山街(jiē)道南海(hǎi)大(dà)道西(xī)桂廟路(lù)北陽光(guāng)華藝大(dà)廈1棟4F、4G-04
咨詢電話(huà):136 8237 6272
大(dà)客戶咨詢:139 0290 5075
業(yè)務QQ:195006118
技術(shù)QQ:179981967