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用于默认是异步请求,如果要跳就在前端跳转页面也是可以的
这个坑记录下来,为后来的你们给与一些建议!!!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持无名。
同类资源
- 任务管理器自己的问题自己解决
易语言任务管理器自己的问题自己解决例子源代码,先通过学习函数写代码,不懂csdn搜索问题,自己测试。...
- 虚表自绘例子瞬间加载文件不是问题
虚表自绘例子瞬间加载文件不是问题源代码,虚表的显示都是由用户自己处理的,虚表不负责保存数据,所以加载东西...
- 多线程检测页面是否被百度收录
多线程检测页面是否被百度收录例子源代码,直接上图这款工具对SEO优化人员来说。...
- 载入等待页面的动画,缓动效果比较好看
易语言载入等待页面的动画,缓动效果比较好看例子源代码,随机取色,循环渐变等待,占用内存少,缓动流畅。...
- 取文本左边、右边、中间(),中文乱码问题
取文本左边、右边、中间(),中文乱码问题例子源代码,默认文本编码是GB2312,而易语言自己的文本处理对GB2312中...
- superboot210.bin
superboot210.bin本文件感兴趣的可以参考一下,smart210光盘内文件,superboot210.bin。...
- Java基于springboot教务管理系统
Java基于springboot教务管理系统本文件感兴趣的可以参考一下,帮助学校管理教务系统,用一个帐号解决学校教务...
- 操作系统C++页面置换算法实验报告,有opt,LRU,先进先出,时钟算法
操作系统C++页面置换算法实验报告,有opt,LRU,先进先出,时钟算法本文件感兴趣的可以参考一下,函数随机产生页面...
- 网站模板文学创作分享交流平台,共19个html模板页面
网站模板文学创作分享交流平台,共19个html模板页面本文件感兴趣的可以参考一下。...
- Java EE企业级应用开发教程Spring+Spring MVC+MyBatis实验报告
JavaEE企业级应用开发教程Spring+SpringMVC+MyBatis实验报告本文件感兴趣的可以参考一下。...
- 登录注册验证页面,主页面列表美化
易语言登录注册验证页面,主页面列表美化例子源代码,未闻花名_DC阴影模块。...
- springBootNoMaven实现定时任务功能
springBootNoMaven本文件感兴趣的可以参考一下,不使用maven环境,创建springboot项目,实现了定时任务功能简单...