1. Der SpringMVC-Filter request.getRequestDispatcher sprang und das Protokoll zeigte auch an, dass auf die Ansicht (JSP) zugegriffen wurde, der Browser sich jedoch nicht bewegte.
if(!isLogin){
httpServletRequest.getRequestDispatcher("/toLogin").forward(httpServletRequest, httpServletResponse);
}
17:57:55.062 [http-nio-8080-exec-3] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'indexLogin'
17:57:55.062 [http-nio-8080-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Last-Modified value for [/toLogin] is: -1
17:57:55.063 [http-nio-8080-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Rendering view [org.springframework.web.servlet.view.JstlView: name 'login'; URL [/WEB-INF/view/login.jsp]] in DispatcherServlet with name 'springMVC'
17:57:55.063 [http-nio-8080-exec-3] DEBUG org.springframework.web.servlet.view.JstlView - Forwarding to resource [/WEB-INF/view/login.jsp] in InternalResourceView 'login'
17:57:55.064 [http-nio-8080-exec-3] DEBUG org.springframework.web.servlet.DispatcherServlet - Successfully completed request
Auf der Seite gibt es eine Funktionsanforderung zum Anfordern des Controllers über jquery ajax. Der Filter request.getRequestDispatcher initiiert eine Anmeldeanforderung und springt zur Anmeldeseite (siehe). Abbildung 2), aber der Browser springt nicht.
2. Und es ist kein Problem, nur /toLogin anzufordern, die Anmeldeseite wird direkt angezeigt
溫故而知新,可以為師矣。 博客:www.ouyangke.com
AJAX 請求的時候,會將你返回的頁面當(dāng)成是數(shù)據(jù)使用 XMLHttpRequest.responseText
去接收。
正確的做法應(yīng)該是如果后臺發(fā)現(xiàn)不滿足登錄成功的條件,返回一個不成功的標(biāo)志給 AJAX(比如:{"login" : "failed"}
),然后前端判斷如果是這個標(biāo)志,那么通過 window.location.href
跳轉(zhuǎn)到你定義的 “/toLogin” 頁面。