0

我的网络应用程序目录结构是

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 中,用户单击 FB 登录按钮,在 js/FBAUth.js 中我收集登录详细信息并使用 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 中,我的 auth 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中执行了这段代码,但都是徒劳的。我在这里想念什么?

4

2 回答 2

1

这种方法似乎有点缺陷。您的转发不起作用,因为您正在使用 AJAX 发布数据。您需要使用 javascript 或更确切地说 jquery 来处理重定向。

检查您的 jquery AJAX 函数的回调方法是否有效。使用打印出 responseTextalert(responseText);

检查链接以获取有关您的问题的更多信息。并检查第一个答案。它为这个问题提供了一个解决方案。

于 2012-08-31T06:38:19.437 回答
0

尝试从您的 servlet 中返回某些内容(写入响应编写器),将其检索为 ajax 响应,取决于此,执行window.location.href ="YOUR URL";

于 2012-08-31T06:46:54.627 回答