1

我是 Java EE 的新手。我有一个需要用户登录的网站,在用户登录后,我希望用户看到他/她自己的物品(例如:购物车)。

所以这意味着我必须使用会话来完成它。但是如何处理多个会话?

例如,多个用户登录到系统以及同一个 servlet?但是,我可以在一个 servlet 中保留多个会话吗?我是否记录了他们每个人?它是如何工作的?

有人可以举个例子吗?

4

3 回答 3

10

在 servlet 中,您可以访问HttpServletRequest它为您提供的getSession()方法。此方法返回会话对象(本质上是键值映射),每个用户都不同。

如果您将某些东西放入该地图(如购物车),您可以稍后检索它 - 但仅当同一用户再次访问该应用程序时(不一定是相同的 servlet)。

public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {

    HttpSession session = request.getSession();
    session.getAttribute("cart");
    //...
    session.setAttribute("cart", whateverYouWant);

会话在 servlet 容器中维护,并通过会话 id(通常是 cookie)进行查找。你不必自己实现任何东西。

于 2012-07-10T14:13:39.633 回答
3

是的你可以。servlet 容器会为您跟踪它们,因此您不必自己进行簿记。该Session对象可以从HttpServletRequest您的 servlet 代码中获得。由于您的代码一次只需要关注一个请求,因此处理多个会话通常不会有太大的痛苦。

于 2012-07-10T14:13:19.517 回答
0

要在 Servlet 中处理多个用户登录,请为每个登录创建一个会话:

HttpSession session = request.getSession();

public HttpSession getSession() 返回与此请求关联的当前会话,或者如果请求没有会话,则创建一个。

每个会话将唯一标识用户。

现在,如果用户想要更改数据库中的某些数据,则在创建会话后,使用该会话设置属性,并使用可以唯一标识数据库中用户的信息,例如 email_id 为:

session.setAttribute("id",email_id of user);

稍后可以在另一个 Servlet/JSP 中检索此属性,如下所示:

String email_id = session.getAttribute("id");

此属性将有助于识别已向服务器发送请求以更新数据库中的数据或执行其他操作的用户。更多与会话相关的方法,参考链接: http ://www.javatpoint.com/http-session-in-session-tracking

于 2016-02-21T06:59:09.643 回答