gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:19:10 27 4
gpt4 key购买 nike

在我的 Spring MVC 应用程序中,我想使用 AJAX 将我的页面从 index.jsp 页面重定向到 final.jsp 页面。但是,当我单击应用程序中的Redirect Page 按钮时,重定向页面 (final.jsp) 并未显示。我在 Java 代码中使用了 System.out.println("inside/redirect");System.out.println("inside/finalPage"); 来检查服务器是否接收到 AJAX GET 请求,并且仅打印 inside/redirect ,这意味着 /finalPage 没有被调用。此外,我的浏览器控制台没有显示任何错误。所以请告诉我,可能是什么问题,问题出在哪里?我在下面发布了完整的代码:

WebController.java

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";
}
}

index.jsp

<%@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>

final.jsp

<%@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.xml:

<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>

HelloWeb-servlet.xml

<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 来访问 Controller 的重定向方法。您有两个选择:

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

    function redFun() {
    window.location = "/HelloWeb/redirect";
    }
  2. 查找对 XmlHttpRequest 的 HTTP 302 响应,并将 window.location 更改为响应中 Location header 的值:

    function redFun() {
    $.ajax({
    type: "GET",
    url: "/HelloWeb/redirect"
    }).fail(function (jqXHR, status, err) {
    if (jqXHR.status === 302) {
    window.location = jqXHR.getResponseHeader('Location');
    }
    });
    }

关于java - spring-mvc ajax 请求未显示重定向页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com