Как поддерживать сеанс с JavaServlet

Я хочу войти в систему с помощью javaServlets.

Я делал это в прошлом с PHP. Но я нашел этот краткий учебник, чтобы сделать это с помощью JavaServlets: http://www.studytonight.com/servlet/login-system-example-in-servlet.php

Мне просто интересно, как они позже проверяют, вошел ли пользователь в систему. В PHP я начал СЕССИЯ, и в этой СЕССИИ хранился session_username/id. Таким образом, я мог бы просто проверить, есть ли сеанс, и если да, я прочитал параметр сеанса, где хранится имя пользователя, и поэтому я мог бы загрузить пользовательский контент.

Как это здесь работает? Может кто-нибудь помочь мне? Спасибо!


person progNewbie    schedule 29.03.2016    source источник
comment
вы ищете, как хранить/извлекать данные из сеанса в JavaServlet?   -  person Vishal Gajera    schedule 29.03.2016


Ответы (3)


Вам нужно будет добавить информацию о сеансе, как правило, через запрос сервлета (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>
person Kyle Bradley    schedule 29.03.2016

Вы получите объект HttpSession, вызвав открытый метод getSession() HttpServletRequest, как показано ниже:

HttpSession session = request.getSession();

Источник

person Harshul Pandav    schedule 29.03.2016
comment
Итак, могу ли я проверить, существует ли сеанс непосредственно в моем HTML/JSP? - person progNewbie; 29.03.2016
comment
Да, ты можешь. Вы можете обратиться к stackoverflow.com/questions/17419727/ - person Harshul Pandav; 29.03.2016

Я бы использовал Servlet Filter, где вы можете проверить, существует ли сеанс

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

Фильтр будет направлять на него весь трафик (в зависимости от того, на что вы указали его страницам в web.xml). Затем отфильтрованный трафик можно проверить, существует ли сеанс, и продолжить или перенаправить пользователя на правильную страницу.

Вот несколько отличных отправных точек:

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

Как обрабатывать аутентификацию/авторизацию пользователей в базе данных?

Как реализовать фильтр входа в JSF?

Фильтр J2EE: страница входа не может загрузиться css или любые изображения

person Kyle Bradley    schedule 29.03.2016