簡體   English   中英

Java異常處理和HttpSession

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM