2012-04-20 65 views
0

我已設置登錄頁面login.jsp。每當我去login.jsp並指定其他查詢字符串,如如何在登錄後在重定向的URL中保留查詢字符串?

的login.jsp?你好

,點擊登錄,我重定向到index.jsp?hello查詢字符串被剝離。

有沒有辦法保持查詢字符串?

+0

您的「login.jsp」的內容可以嗎? – Dave 2012-04-20 21:41:35

+0

這部署的服務器是什麼? – 2012-04-21 03:19:13

回答

1

如果您使用容器管理的身份驗證,那麼這是不可能的。只有當查詢字符串實際上位於,受限制的URL中時,它纔會自動處理,最終用戶首先顯示登錄頁面。該容器將在成功登錄後自動將重定向回受限制的URL,並填寫原始查詢字符串。

如果您使用的是本地認證,那麼您只需將當前查詢字符串複製到登錄URL中即可。例如。

<form action="login?${pageContext.request.queryString}" method="post"> 
    <input type="text" name="username" /> 
    <input type="password" name="password" /> 
    <input type="submit" value="login" /> 
</form> 

然後,在servlet的doPost(),或任何你正在處理的登錄,然後只是HttpServletRequest.getQueryString()搶查詢字符串,並通過它傳遞重定向。例如。

User user = userService.find(username, password); 

if (user != null) { 
    request.getSession().setAttribute("user", user); // Do whatever you need to represent a logged-in user. 
    response.sendRedirect(request.getContextPath() + "/index.jsp?" + request.getQueryString()); 
} 
else { 
    // Show "unknown login" error? 
} 

所有的一切,我不知道有在登錄網址查詢字符串的這一功能要求如何有意義的真實世界。如果該查詢字符串是您首先需要先登錄的原始受限制URL的一部分,這與標準容器管理的身份驗證機制支持的情況完全相同,那麼這會更有意義。所以也許你需要重新考慮這個問題。

相關問題