[英]requestDispatcher.forward and response.redirect not working
我的Web应用程序目录结构为
myApp
-src
- filtersPackage(all my filters lie in this package)
- servletsPackage(all my controllers and models lie in this package)
- web-content
- web
- views(all my jsp files lie in this dir)
- js(all my javascript files lie in this dir)
在login.jsp中,用户单击js / FBAUth.js中的FB登录按钮,我收集登录详细信息,然后使用jquery ajax POST方法将其发送到auth.do servlet。
SessionFilter允许请求转到AuthServlet的doPost方法。 在AuthServlet中如果凭据正确,请执行以下操作
url = "dashboard.jsp"
request.getSession().setAttribute("uid", id);
view = request.getRequestDispatcher(url);
view.forward(request, response);
return;
我已经在调试模式下看到这些行执行了,但是我的浏览器仍然停留在登录页面上。 view.requestURI-> /myApp/web/views/dashboard.jsp和view.servletPath-> /web/views/dashboardTmp.jsp的值。 我也尝试了response.sendRedirect(url),但是浏览器仍然停留在登录页面上。 这些行之后什么也没执行。
在web.xml中,我的身份验证servlet映射如下
<servlet>
<servlet-name>Auth</servlet-name>
<servlet-class>servletsPackage.AuthServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Auth</servlet-name>
<url-pattern>/web/views/auth.do</url-pattern>
</servlet-mapping>
我还尝试在doPost内调用doGet,并在doGet中执行了此代码,但全部徒劳。 我在这里想念什么?
这种方法似乎有点缺陷。 您的转发不起作用,因为您正在使用AJAX发布数据。 您将需要使用javascript或jquery来处理重定向。
检查您的jquery AJAX函数的回调方法是否有效。 使用alert(responseText);
打印出alert(responseText);
检查此链接以获取有关您的问题的更多信息。 并检查第一个答案。 它为该问题提供了解决方案。
尝试从servlet返回一些内容(在响应编写器中写),将其检索为ajax响应,具体取决于此,执行window.location.href ="YOUR URL";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.