繁体   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