spring-mvc ajax请求未显示重定向页面

在我的Spring MVC应用程序中,我想使用AJAX

index.jspfinal.jsp页面之间重定向我的页面。但是,当我单击Redirect

Page应用程序中的按钮时,未显示重定向页面(final.jsp)。我已经使用Java代码System.out.println("inside

/redirect");System.out.println("inside

/finalPage");在Java代码内部检查了是否在服务器上接收到AJAX GET请求,并且仅inside

/redirect在打印该消息,这意味着/finalPage未在调用AJAX

GET请求。而且,我的浏览器的控制台没有显示任何错误。因此,请告诉我们,问题可能出在哪里,问题出在哪里?我在下面发布了完整的代码:

package com.tutorialspoint;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

@Controller

public class WebController {

@RequestMapping(value = "/index", method = RequestMethod.GET)

public String index() {

return "index";

}

@RequestMapping(value = "/redirect", method = RequestMethod.GET)

public String redirect() {

System.out.println("inside /redirect");

return "redirect:/finalPage";

}

@RequestMapping(value = "/finalPage", method = RequestMethod.GET)

public String finalPage() {

System.out.println("inside /finalPage");

return "final";

}

}

<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%>

<html>

<head>

<title>Spring Page Redirection</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

</head>

<body>

<h2>Spring Page Redirection</h2>

<p>Click below button to redirect the result to new page</p>

<button onClick="redFun()">Redirect Page</button>

<script>

function redFun() {

$.ajax({

type : "GET",

url : "/HelloWeb/redirect"

});

}

</script>

</body>

</html>

<%@taglib uri = "http://www.springframework.org/tags/form" prefix = "form"%>

<html>

<head>

<title>Spring Page Redirection</title>

</head>

<body>

<h2>Redirected Page</h2>

</body>

</html>

<web-app id = "WebApp_ID" version = "2.4"

xmlns = "http://java.sun.com/xml/ns/j2ee"

xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Spring MVC Application</display-name>

<servlet>

<servlet-name>HelloWeb</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatcherServlet

</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>HelloWeb</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

</web-app>

<beans xmlns = "http://www.springframework.org/schema/beans"

xmlns:context = "http://www.springframework.org/schema/context"

xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation = "

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package = "com.tutorialspoint" />

<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name = "prefix" value = "/WEB-INF/jsp/" />

<property name = "suffix" value = ".jsp" />

</bean>

</beans>

回答:

您的浏览器未遵循重定向,因为您使用的是Ajax来访问控制器的重定向方法。您有两种选择:

  1. 完全不要使用ajax,让您的浏览器自然地响应重定向状态。

    function redFun() {

    window.location = "/HelloWeb/redirect";

    }

  2. 查找对XmlHttpRequest的HTTP 302响应,并将window.location更改为响应中Location头的值:

    function redFun() {

    $.ajax({

    type: "GET",

    url: "/HelloWeb/redirect"

    }).fail(function (jqXHR, status, err) {

    if (jqXHR.status === 302) {

    window.location = jqXHR.getResponseHeader('Location');

    }

    });

    }

以上是 spring-mvc ajax请求未显示重定向页面 的全部内容, 来源链接: utcz.com/qa/409110.html

回到顶部