我的移动网络应用程序中有一些基于 jQuery Mobile 的页面需要无需身份验证即可访问,有些页面仅在用户通过身份验证后才能访问。我的解决方案基于本教程:Java Servlet Filter Example Tutorial。
我已经完成了 @WebFilter ,它会检查用户尝试访问哪个页面,以及他是否未经过身份验证(会话未创建或没有属性会话内的用户被重定向到 login.html 页面。
这是我的 login.html 页面中的相关代码:
<form action="LoginServlet" method="post">
...
input elements for username and password
...
</form>
表单将数据提交到 LoginServlet 。 LoginServlet 检查凭据是否正确,如果它们正确,则将其重定向回所需的页面。目前,我在会话中存储了所需的页面(it's better to store this in a hidden element inside the form, but I didn't know it when I was writing the code)
我使用以下代码行从 LoginServlet 执行重定向:
response.sendRedirect(redirectToPage);
我项目中的所有页面都是 * .html 页面 javascript ,我使用 jQuery Mobile 创建了一个移动网络应用。
我的问题是在重定向到所需页面之后:
加载页面中所有动态内容无效的最重要问题。动态内容我的意思是一些 ajax 函数,应该在页面加载时调用并呈现动态内容:
$(document).on('pagebeforeshow',function(){
initPage();
});
如果我重新加载页面,一切都开始正常工作。
我做错了什么? 提前谢谢。
答案 0 :(得分:0)
这个问题实际上有两个解决方案。
第一个是在 javascript 中执行重定向而不是在servlet中,我认为这是更好的解决方案,有关详细信息,请查看此处:How to manage a redirect request after a jQuery Ajax call
如果您在提交<form/>
后需要从 servlet 执行此操作,则第二个解决方案是将data-ajax="false"
添加到<form/>
标记中:
<form action="postthis" method="post" data-ajax="false">
,此解决方案取自此处:https://stackoverflow.com/a/8631895/947111