当前位置: 首页 > 编程笔记 >

springboot无法跳转页面的问题解决方案

夏侯华彩
2023-03-14
本文向大家介绍springboot无法跳转页面的问题解决方案,包括了springboot无法跳转页面的问题解决方案的使用技巧和注意事项,需要的朋友参考一下

首先我登录页面直接通过浏览器请求直接访问的,项目结构如图所示

登录页面

<form action="index" id="frm">
  <input type="text" name="dname">
  <input type="text" name="loc">
  <input type="button" value="提交" id="but" ></form>
<script src="js/jquery-1.12.2.js"></script>
<script>
  $(function () {
    $("#but").click(function(){
      var data = $("#frm").serialize();
      $.get("index",data);
    })
  })
</script>

点击提交后,是一个ajax发送表单里面的数据,请求地址为index,会去数据库里面查询是否有这个人(后端采用mybatis去数据库查询),根据返回的结果,跳到相应的页面去,我在controller里面写的index请求的java代码为:

//  登录
  @GetMapping("index")
  public String addDept(Dept dept) {
    log.info("dept===" + dept);
    List<Dept> depts = deptService.selectDept(dept);
    if (depts != null) {
      return "index";
    } else {
      return "error";
    }
  }

意外的事情出现了,有查询结果出来,而且也进入了if判断,但就是没有跳转页面,这个问题困惑了许久,一直没想到问题出现在哪里,百度了很多,其中百度给的结果有以下几点:

注解使用@Controller 而不是@RestController,因为使用@RestController会返回“index”字符串
首先在pom文件中引入模板引擎jar包,即:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

在application.properties中配置模板引擎

spring.thymeleaf.prefix=classpath:/templates/

不加@responseBody注解,因为加了之后会返回一个字符串的形式;
以上的这些坑,我都试了,最后还是没有失败,但是我直接在浏览器上输入index请求,会跳转到index.html的页面上面去,我就很纳闷了,还是不知道我的问题出现在哪里

我的index.html的页面如下,用ajax请求,调用去数据库查询所有人的请求,代码如下:

index页面
<script src="../js/jquery-1.12.2.js"></script>
<script>
  selectDept()
  function selectDept() {
    $.get("getDept",callSelectDept,"JSON")
    function callSelectDept(data) {
      var str=""
      for (var i =0;i<data.length;i++){
        str+=data[i].deptno+"---"+data[i].dname+"---"+data[i].loc+
          "<a href=deleteDept?deptno='"+data[i].deptno+"'>删除</a>"+
          "<a href=updateDept?deptno='"+data[i].deptno+"'>修改</a>"
          +"<br/>"
      }
      $("#queryDept").append(str)
    }
  }

当通过浏览器访问index.html后,会显示出来数据,这里是没有问题的

后来过了一段时间吧,才想起来是不是ajax请求调用方法后,在java后端发送跳转页面请求后,不能跳转页面,因为ajax默认是异步请求嘛.代码如下

$.ajax({
        asyn:false,
        url:"index",
        type:"get",
        data:data
      })

后来将ajax请求改为同步之后,还是失败,最后,将提交表单的方式改为summit,成功!!!

 <form action="index" id="frm">
   <input type="text" name="dname">
   <input type="text" name="loc">
   <input type="submit" value="提交" ></form>

总结:ajax请求最好只用于发送数据,和从后端拿数据,不要做跳转页面的...如果一定要做页面的跳转,可以约定后端放回的数据为1或0,当返回的数据为1时,用Windows.location.href="index.html" rel="external nofollow" rel="external nofollow" 来跳转

具体代码如下:

function callback(dat){
       if (dat=1){
          window.location.href="index.html" rel="external nofollow" rel="external nofollow" 
        }else {
          alert("1")
        }

否则就用submit提交,记住了,ajax用于发送请求到那个方法后,后端是跳转不了页面的,也不会报错,因为ajax用于默认是异步请求,如果要跳就在前端跳转页面也是可以的

这个坑记录下来,为后来的你们给与一些建议!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Spring Security跳转页面失败问题解决,包括了Spring Security跳转页面失败问题解决的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Spring Security跳转页面失败问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天新建SpringBoot项目练手,第一次添加了Spring Se

  • 本文向大家介绍JQuery.get提交页面不跳转的解决方法,包括了JQuery.get提交页面不跳转的解决方法的使用技巧和注意事项,需要的朋友参考一下 代码如下: 问题分析: 有些Jquery 教程上说,使用jquery.get(url,data,function(){})可以跳转。 以上代码却没有跳转,如果中间有错误的话,不能执行回调函数的,但以上代码却执行了,原因何在? 经过分析得知,jque

  • 本文向大家介绍微信小程序出现wx.navigateTo页面不跳转问题的解决方法,包括了微信小程序出现wx.navigateTo页面不跳转问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了微信小程序出现wx.navigateTo页面不跳转问题的解决方法。分享给大家供大家参考,具体如下: 今天在做微信小程序的时候,做的商品购买流程。流程是这样的: 商品展示-->商品详情-->下单页

  • 本文向大家介绍解决springboot无法注入JpaRepository的问题,包括了解决springboot无法注入JpaRepository的问题的使用技巧和注意事项,需要的朋友参考一下 使用内置服务器启动springboot项目时,会从@SpringBootApplication修饰类所在的包开始,加载当前包和所有子包下的类,将由@Component @Repository @Service

  • 本文向大家介绍SpringBoot项目@Async方法问题解决方案,包括了SpringBoot项目@Async方法问题解决方案的使用技巧和注意事项,需要的朋友参考一下 现象: 1. 表面现象: 方法中输出的日志, 日志文件中找不到, 也没有任何报错(即@Async标注的方法没有执行, 也没有报错) 2. 分析现象: 日志中某个时刻之后没有了task-xxx线程的日志 原因: @Async异常方法默

  • 本文向大家介绍php页面跳转session cookie丢失导致不能登录等问题的解决方法,包括了php页面跳转session cookie丢失导致不能登录等问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 thinkphp开发的一个项目,登录成功后又跳转到登录页面,在提交信息后输出session都是正常的,没有问题,但是页面跳转后,session出现丢失现象,无法正常完成登陆。 通过查找资料