Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未使用spring mvc ajax请求显示重定向页面_Java_Ajax_Spring_Jsp_Spring Mvc - Fatal编程技术网

Java 未使用spring mvc ajax请求显示重定向页面

Java 未使用spring mvc ajax请求显示重定向页面,java,ajax,spring,jsp,spring-mvc,Java,Ajax,Spring,Jsp,Spring Mvc,在SpringMVC应用程序中,我想使用AJAX将页面从index.jsp页面重定向到final.jsp页面。但是当我在应用程序中单击重定向页面按钮时,重定向页面(final.jsp)没有显示。我使用了System.out.println(“内部/重定向”)和System.out.println(“内部/最终页面”)在我的Java代码中,检查服务器是否接收到AJAX GET请求,并且只打印内部/redirect,这意味着没有调用/finalPage。此外,我的浏览器的控制台没有显示任何错误。那么

在SpringMVC应用程序中,我想使用AJAX将页面从
index.jsp
页面重定向到
final.jsp
页面。但是当我在应用程序中单击
重定向页面
按钮时,重定向页面(final.jsp)没有显示。我使用了
System.out.println(“内部/重定向”)
System.out.println(“内部/最终页面”)
在我的Java代码中,检查服务器是否接收到AJAX GET请求,并且只打印
内部/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>
<%@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>

Spring页面重定向
Spring页面重定向
单击下面的按钮将结果重定向到新页面

重定向页面 函数redFun(){ $.ajax({ 键入:“获取”, url:“/HelloWeb/redirect” }); }
final.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>
<%@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>

Spring页面重定向
重定向页面
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>

SpringMVC应用程序
你好
org.springframework.web.servlet.DispatcherServlet
1.
你好
/
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来点击控制器的重定向方法。您有两个选择:

  • 根本不要使用ajax,让浏览器自然地响应重定向状态

    function redFun() {
        window.location = "/HelloWeb/redirect";
    }
    
  • 查找对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');
            }    
        });
    }