簡體   English   中英

servlet jsp中的會話管理

[英]session management in servlet jsp

我目前正在使用servlet和JSP在J2EE中開發一個中級Web應用程序。 它就像一個內容管理系統。 根據我的需求,我的網站工作非常相似,但是對於在J2EE中使用MVC 的最佳實踐和不良實踐存在一些疑問

用戶登錄應用的代碼為:

<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>

控制器Servlet中的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>

控制器Servlet中的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);
    }

我想知道以上用於登錄,注銷和會話管理的邏輯是否正確?

而且我也無法阻止用戶注銷后返回安全頁面,我該如何設置呢?

使用此博客文章,您可以了解j2ee中的會話管理。

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

為了避免在注銷后返回,您需要使用jsp上的session.invalidate()或HttpServlet上的request.getSession()。invalidate()使當前會話無效。

此外,您可以嘗試添加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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM