JSP Session處理 (轉)
員經常要在global.asa內處理Application_start,Session_Start等
事件,如:驗證、重定向不同編碼頁面等,十分方便,然而一向頗受歡迎的並不很支援這種處理,除了商業化JRun支援global.jsa以外,竟連應用率極高的開放原始碼伺服器都不支援,這給JSP的開發造成不小障礙,雖然早期Tomcat(5.0以前版本)下可以透過以下方式實現Session-start事件處理
1. 新增Session
session.put(“bind.listener”,new MyListener(getContext())
2. 定義MyListener類
import x.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”);
}
}
:namespace prefix = o ns = "urn:schemas--com::office" />
但處理前提是Session已經建立,並且不能在Session建立時處理驗證等事件,透過研究Servlet 2.4(Tomcat5.0內建)終於找到一種可行方法,實現方法如下:
//---------------------- 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) {
log("sessionDestroyed('" + event.getSession().getId() + "')");
}
private void log(String message) {
System.out.println("SessionListener: " + message);
}
}
在開始接到客戶端請求(requestInitialized)時,獲得當前的HttpRequest儲存在私有成員 request 中,這樣在Session建立時可以實現對Session使用者進行驗證,以及關閉Session,限制訪問等,這裡僅以記錄Session來源為例(SessionListener.java)
編譯這個類後還要在.xml的host元素內加入以下行:
本文適用環境:Tomcat 5.02,1.41(不支援商業伺服器)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-956684/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JSP 異常處理如何處理?JS
- JSP 日期處理概述JS
- Cookie&Session&JSPCookieSessionJS
- JSP筆記-sessionJS筆記Session
- JSP筆記-XML 資料處理JS筆記XML
- Spring Boot 2 + Redis 處理 Session 共享Spring BootRedisSession
- JSP九大內建物件 sessionJS物件Session
- 爬蟲 | 處理cookie的基本方法——session爬蟲CookieSession
- 許可權處理 - 用redis實現分散式session~ (cookie && session )Redis分散式SessionCookie
- spring security:ajax請求的session超時處理SpringSession
- asp.net 一般處理程式接收SessionASP.NETSession
- 資料處理及跳轉
- Express專案中ajax請求session過期問題處理ExpressSession
- [轉] Scala Try 與錯誤處理
- [轉帖]CentOS8 處理dockerCentOSDocker
- SpringMVC:資料處理及跳轉SpringMVC
- 轉載:Java處理高併發量訪問的處理總結Java
- [轉] Scala 中的非同步事件處理非同步事件
- hbase 故障的處理方案。 (轉載文章)
- (轉)機器學習:偏差處理(2)機器學習
- 從零玩轉jQuery-文件處理jQuery
- Python 編碼轉換與中文處理Python
- [轉載] Java異常處理習題Java
- session儲存資料庫中以及禁用cookie情況下的處理Session資料庫Cookie
- 2020JavaWeb之寶塔安裝tomcat+nginx關於jsp處理問題JavaWebTomcatNginxJS
- Linux上使用python處理docx轉pdf教程LinuxPython
- Java SimpleDateFormat處理日期與字串的轉換JavaORM字串
- bat批處理轉換成exe檔案BAT
- C# 簡易影像處理(包括平移,旋轉,翻轉, 裁切)C#
- jsp隱式物件都包括什麼?包括request、response、out、session、application、config、pageContext。JS物件SessionAPPContext
- [譯] 最詳細的 CSS 字元轉義處理CSS字元
- Pandas缺失值處理 | 輕鬆玩轉Pandas(3)
- ffmpeg-圖片壓縮旋轉等處理
- [PY] Word 處理, 技術選型, Word 轉 PDF
- 三層switch轉一層switch的處理方法
- LangChain轉換鏈:讓資料處理更精準LangChain
- Android 中的轉場動畫及相容處理Android動畫
- 轉載ORA-01591錯誤故障處理(ji)
- 多對一處理 和一對多處理的處理