2014-05-22 56 views
1

我目前正在使用servlet和JSP在J2EE中開發一箇中間級web應用程序。它就像一個內容管理系統。我的網站根據我的需要非常類似,但也有一些問題最佳實踐和不良做法在J2EE中使用MVCservlet jsp中的會話管理

代碼用戶登錄到應用程序是:

<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代碼:

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代碼在控制器servlet中是:

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

是的!對於簡單的Web應用程序,這個會話管理是正確的 –

回答

0

您可以通過此博客文章瞭解j2ee中的會話管理。

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

,並避免回去註銷後,您需要在JSP或request.getSession()無效當前使用會話session.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); 
    } 
}