【问题标题】:How to maintain session with JavaServlet [duplicate]如何维护与 JavaServlet 的会话 [重复]
【发布时间】:2016-07-17 04:45:55
【问题描述】:

我想用 javaServlets 登录。

我过去用 PHP 做过这个。但我发现了这个使用 JavaServlets 的简短教程:http://www.studytonight.com/servlet/login-system-example-in-servlet.php

我只是想知道,他们稍后如何检查用户是否已登录。在 PHP 中,我启动了一个 SESSION,并且在此 SESSION 中存储了 session_username/id。所以我可以检查是否有会话,如果有,我会读取存储用户名的会话参数,这样我就可以加载用户特定的内容。

这是如何工作的? 谁能帮我? 谢谢!

【问题讨论】:

  • 您是否正在寻找数据如何从会话存储/检索到 JavaServlet 中?

标签: java session servlets login


【解决方案1】:

您通常需要通过 servlet (get/post) 请求添加会话信息,以便您的 login.jsp 页面指向 Login 并将您重定向到 homepage.jsp

  public class Login extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response){

        HttpSession session = request.getSession();
        String user = (String)request.getParameter("userName");
        session.setAttribute("userName", user);

        request.getRequestDispatcher("/homepage.jsp").forward(request, response);
    }
  }

在jsp里面可以直接访问session信息有几种方式

<%
  String userId = request.getSession().getAttribute("userName");
%>

或使用 jstl(您必须从 jstl 添加库)

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:if test="${not empty sessionScope.userName}">
  User logged in as <c:out value="${sessionScope.userName}" />
</c:if>

【讨论】:

    【解决方案2】:

    我会使用Servlet Filter,您可以在其中检查会话是否存在

    boolean loggedIn = (session != null) && (session.getAttribute("UserID") != null);
    

    过滤器会将所有流量定向到它(基于您在 web.xml 中告诉其页面定向到的内容)。然后可以检查过滤的流量是否存在会话并继续或将用户重定向到正确的页面。

    这里有一些很好的起点:

    http://www.tutorialspoint.com/servlets/servlets-writing-filters.htm

    How to handle authentication/authorization with users in a database?

    How implement a login filter in JSF?

    J2EE filter : login page unable to load the css or any images

    【讨论】:

      【解决方案3】:

      调用HttpServletRequest的公共方法getSession()可以得到HttpSession对象,如下:

      HttpSession session = request.getSession();
      

      Source

      【讨论】:

      猜你喜欢
      • 2020-11-17
      • 2015-03-28
      • 2018-06-09
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      相关资源
      最近更新 更多