управление сессиями в сервлете jsp

1

В настоящее время я разрабатываю веб-приложение среднего уровня в J2EE, используя сервлеты и JSP. Это похоже на систему управления контентом. Мой сайт работает очень похоже в соответствии с моими потребностями, но есть некоторые вопросы о лучших практиках и плохих практиках использования MVC в J2EE.

Код для входа в приложение:

<c:choose>
    <c:when test="${not empty sessionScope.admin}">
    <a href="/context/controller?action=add-content"> + Add a Content</a>
    </c:when>
    <c:otherwise>
    <a href="/context/controller?action=log-in"> Admin Login</a>
    </c:otherwise>
</c:choose>

Java-код в сервлет-контроллере:

if (userDAO.isUser(request.getParameter("uname"), request.getParameter("upass"))) {             
    request.getSession().setAttribute("admin", request.getParameter("uname"));  
    request.getRequestDispatcher("/admin.jsp").forward(request, response);
} else {
    request.getSession().setAttribute("admin", "");
    request.getRequestDispatcher("/content.jsp").forward(request, response);
}

Для выхода:

<a href="/context/controller?action=log-out">Logout</a>

Java-код в сервлет-контроллере:

if (action != null && action.equals("log-out")) {
        HttpSession session = request.getSession(false);
        if(session != null){
            session.invalidate();
        }
        request.getRequestDispatcher("index.jsp").forward(
                request, response);
    }

Я хочу знать, что выше логики для входа в систему, выхода из системы и управления сеансом является правильным?

И я также не могу помешать пользователю вернуться на защищенную страницу после его выхода из системы, как я могу это установить?

  • 0
    Да! для простого веб-приложения это правильное управление сессиями!
Теги:
jsp
servlets

1 ответ

0

Вы можете понять управление сеансом в j2ee, используя этот пост в блоге.

http://thisara.me/2015/12/21/session-management-in-j2ee/

И чтобы не возвращаться после выписки, вам необходимо аннулировать текущий сеанс, используя session.invalidate() для jsp или request.getSession(). Invalidate() для HttpServlet.

Далее вы можете попробовать добавить фильтр NoCache, где вам нужно будет создать фильтр, как показано ниже, и настроить фильтр на web.xml.

@WebFilter
public class NoCacheFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;

        response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");  // HTTP 1.1
        response.setHeader("Pragma", "no-cache");  // HTTP 1.0
        response.setDateHeader("Expires", 0);  // Proxies.

        chain.doFilter(req, res);
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню