如何使用JavaServlet维护会话

时间:2016-03-29 14:40:00

标签: java session servlets login

我想用javaServlets登录。

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

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

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

3 个答案:

答案 0 :(得分:1)

你可以通过调用HttpServletRequest的公共方法getSession()来获取HttpSession对象,如下所示:

HttpSession session = request.getSession();

Source

答案 1 :(得分: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内部以几种方式访问​​会话信息

<%
  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 :(得分:0)

我会使用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