[英]Java Exception handling and HttpSession
作為異常處理的一部分,我想從HTTP會話中打印數據,如下所示:
try{
//business logic
} catch(Exception ex){
String user = session.get("userId"); //get user from HTTP Session.
log.info("Exception when processign the user "+user);
}
我的問題是,由於會有多個線程更新會話,因此我是否為發生異常的正確用戶ID?
HttpSession
未在客戶端之間共享。 因此該部分已經安全。 剩余部分取決於您自己的代碼來獲取和處理HttpSession
實例。 例如,如果將HttpSession
作為應用程序范圍的類的實例變量(例如Servlet本身)來聲明,那么它確實不是線程安全的,因為在您訪問它時,它可能會被另一個請求覆蓋。
public class SomeServlet extends HttpServlet {
private HttpSession session;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
session = request.getSession();
// ...
Object object = session.getAttribute("foo"); // Not threadsafe!
}
每個用戶的會話都是唯一的(如果代碼符合標准)。
這是有關會話如何工作的 Sun教程
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.