使用springboot跳转不了页面

记录初学springboot踩的一点坑

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

  • 登录页面
 1 <form action="index" id="frm">
 2     <input type="text" name="dname">
 3     <input type="text" name="loc">
 4     <input type="button" value="提交" id="but" ></form>
 5 <script src="js/jquery-1.12.2.js"></script>
 6 <script>
 7     $(function () {
 8         $("#but").click(function(){
 9             var data = $("#frm").serialize();
10             $.get("index",data);
11     })
12     })
13 </script>

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

 1 //   登录
 2     @GetMapping("index")
 3     public String addDept(Dept dept) {
 4         log.info("dept===" + dept);
 5         List<Dept> depts = deptService.selectDept(dept);
 6         if (depts != null) {
 7             return "index";
 8         } else {
 9             return "error";
10         }
11     }

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

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

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
  3. 在application.properties中配置模板引擎

    spring.thymeleaf.prefix=classpath:/templates/

  4. 不加@responseBody注解,因为加了之后会返回一个字符串的形式;

以上的这些坑,我都试了,最后还是没有失败,但是我直接在浏览器上输入index请求,会跳转到index.html的页面上面去,我就很纳闷了,还是不知道我的问题出现在哪里

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

 1 index页面
 2 <script src="../js/jquery-1.12.2.js"></script>
 3 <script>
 4    selectDept()
 5    function selectDept() {
 6        $.get("getDept",callSelectDept,"JSON")
 7        function callSelectDept(data) {
 8            var str=""
 9            for (var i =0;i<data.length;i++){
10                str+=data[i].deptno+"---"+data[i].dname+"---"+data[i].loc+
11                    "<a href=deleteDept?deptno=‘"+data[i].deptno+"‘>删除</a>"+
12                    "<a href=updateDept?deptno=‘"+data[i].deptno+"‘>修改</a>"
13                    +"<br/>"
14            }
15            $("#queryDept").append(str)
16        }
17    }

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

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

1 $.ajax({
2                 asyn:false,
3                 url:"index",
4                 type:"get",
5                 data:data
6             })

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

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

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

具体代码如下:

1       function callback(dat){
2               if (dat=1){
3                     window.location.href="index.html"
4                }else {
5                     alert("1")
6                 }

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

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

原文地址:https://www.cnblogs.com/nukill/p/11605105.html

时间: 2024-10-09 06:19:42

使用springboot跳转不了页面的相关文章

微信点击图文消息链接 在根据判断跳到另一个页面 但是 点关闭 将当前的关闭之后 会出现空白页

<script> function ss() { var u = navigator.userAgent; if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {//安卓手机location.href = '2.html?id=3323/#wechat_redirect'; } else if (u.indexOf('iPhone') > -1) {//苹果手机location.href = '2.html?id

js指定时间之后跳转到指定页面代码实例

js指定时间之后跳转到指定页面代码实例:在某些场景下,需要网页在指定的时间后,网页能够自动跳转到指定页面,比如在无法找到指定网页的情况下,就会显示之前设置好的404页面,并且跳转到指定的页面,下面就是一段代码实现了此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="htt

shiro控制登陆成功后跳回之前的页面

登陆之后跳回之前的页面是在做登陆注册模块时遇到的一个需求,也是很有必要的.若用户直接访问登陆页面,那可以控制它直接到首页,但是要用户没有登陆直接访问自己的购物车等需要经过身份认证的页面,或者因为session超时,用户需要重新登陆,那么这个时候跳回之前的页面就是一件提升用户体验的事情了.实现这一功能,暂时想到两种方法,一是用ajax的方式登陆,这样直接在当前页面弹窗让用户登录既可,二是把用户未登录前的url存在session中,login成功之后先检查session中是否存在这样的一个url.

Django auth 登陆后页面跳转至/account/profile,修改跳转至其他页面

这几天在学习django,django功能很强大,自带的auth,基本可以满足用户注册登陆登出,简单的用户注册登陆系统使用django auth足矣.当然也不是拿来就能用的,需要自己写登陆页面的模板,也很简单.自己尝试了一下,发现一个问题,当验证登陆成功后,页面会自动跳转到/account/profile,我并不想把页面跳转到这个页面,如何修改呢? 查了一堆网页,还是官网靠谱,很简单,就在project的setting里加一句话就Okay! LOGIN_REDIRECT_URL = ‘/inde

JavaScript跳转到指定页面并且到指定的tab切换窗口

案例的解析就是点击A页面的第一个的切换窗口的按钮跳转到B页面,再点击B页面的按钮跳转到A页面的第二个窗口,这个实现的效果有三种方法,下面的图片案例: A页面的第一个切换窗口 B页面的跳转按钮 A页面的第二个切换窗口 第一方法用函数function: 演示效果:JavaScript跳转到指定页面并且到指定的tab切换窗口 A页面按钮 <a href="b.html?id=1980&order_type=p_order">aaaaa</a> B页面按钮代码:

spring 过滤器- 过滤登陆请求路径(过滤静态资源跳转到登陆页面)

public class LoginedFilter implements Filter { /** * 排除的地址 */ private Map<String, Boolean> ignore; /** * 排除的后缀 */ private Map<String, Boolean> ignoreExt; /** * <b>功能描述:</b>实现接口,登录验证<br> * <b>修订记录:</b><br> */

登陆判读,并跳转到指定页面(window.location.href=&#39;http://localhost/index.html&#39;)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 function confirm(){   var tel=$tel.val();//获取页面中登录名和密码   var pwd=$pwd.val();   if(tel==""|| pwd==""){//判断两个均不为空(其他判断规则在其输入时已经判断)     alert(&qu

好友列表右键菜单进行Ajax请求时直接跳转至登陆页面

今天在做右键菜单,当点击重命名进行Ajax请求时,并没有向后台发送数据而是直接跳转到了首页.朕百思不得其解,后来在前台页面发现一个问题: <li><a href='#' onclick="renameContactsFunction()">重命名</a></li> 原来就是这个herf='#'惹的祸.当我点击时候,页面会跳转到'#'这个路径而不是进行Ajax请求.将上面那段代码变成 <li><a onclick=&quo

JSP中解决session超时跳转到登陆页面并跳出iframe框架或局部区域的方法

//方法1: 重定向到登录页,但是不支持跳出iframe//response.sendRedirect("/dormitory/toLoginPage"); //方法2:以输出页面并请求到登录页面的形式跳转到登录页面,可以跳出iframe(推荐)PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<script>"); ou