繁体   English   中英

requestDispatcher.forward和response.redirect不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM