我在JS里面写了个Ajax,传值给控制器,然后利用request.getRequestDispatcher(),打算跳转至另外一个页面。但是没有跳转成功,运行之后没反应。

在网上搜了资料发现,利用ajax的请求时无法利用equest.getRequestDispatcher()跳转。所以可以考虑换一种方式进行跳转。

在Ajax请求下response.sendRedirect()同样无法进行跳转。原理如下:

Ajax的原理简单来说,实际上就是通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。 
这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。 
    我们可以看出,XMLHttpRequest对象完全用来向服务器发出一个请求的,它的作用也局限于此,但它的作用是整个ajax实现的关键,我们可以把服务器端看成一个数据接口,它返回的是一个纯文本流,当然,这个文本流可以是XML格式,可以是Html,可以是Javascript代码,也可以只是一个字符串。这时候,XMLHttpRequest向服务器端请求这个页面,服务器端将文本的结果写入页面,这和普通的web开发流程是一样的,不同的是,客户端在异步获取这个结果后,不是直接显示在页面,而是先由javascript来处理,然后再显示在页面。

最后采用下面的方式实现

  1. @RequestMapping(value = "/login", method = RequestMethod.POST)
    public void Login(HttpServletRequest request,
    HttpServletResponse response,
    LcbUser user) throws Exception {
    try {
    LcbUser currentUser = userService.checkLogin(user.getLoginName(), user.getPassWord());
  2.  
  3. boolean flag=false;
    if (user.getLoginName() != null && user.getPassWord() != null) {
  4.  
  5. //创建session对象
    HttpSession session = request.getSession();
  6.  
  7. //把用户数据保存在session域对象中
    if(currentUser==null){
    flag=false;
    }
    else {
    session.setAttribute("currentUser", currentUser.getUserName());
    session.setAttribute("userId", currentUser.getUserId());
    //跳转到用户主页
    // model.addAttribute(currentUser);
    // model.addAttribute("currentUser", currentUser.getUserName());
    //RequestDispatcher rd = request.getRequestDispatcher("wel.jsp");
    //rd.forward(request, response);
    flag=true;
    }
    } else {
    flag=false;
    }
    PrintWriter out = response.getWriter();
    out.print(flag);//返回登录信息
    out.flush();
    out.close();
    } catch (Exception e) {
    throw new Exception(e);
    }
    }
  1. function checkLogin() {
    // var form = new FormData(document.getElementById("user"));
    var loginName=$("#loginName").val();
    var passWord=$("#passWord").val();
    if(loginName == ""){
    alert("请输入用户名");
    return false;
    }else if(passWord == ""){
    alert("请输入密码");
    return false;
    }
    var data={loginName:loginName,passWord:passWord};
  2.  
  3. $.ajax({
    async: true,
    dataType:"json",
    type: 'post',
    url: "<%=basePath%>login",
    data: data,
    success: function (result) {
    if(result==true){
    window.location.href="${blog}/views/Home/Index.jsp";
    }else {
    alert("用户名或密码错误!请联系管理员获取密码")
    };
    // alert("修改成功");
    }
    });
    }

简单记录一下。

request.getRequestDispatcher跳转jsp页面失败的更多相关文章

  1. 分享url带中文参数,打开html操作完毕跳转jsp页面中文乱码解决

    1.在app端分享参数组合时不对传递的url进行任何编码. 2.打开html页面时使用 escape函数对有中文的参数进行编码 escape(GetQueryString("paramete ...

  2. springboot 2.0.8 跳转jsp页面

    springboot项目创建教程 https://blog.csdn.net/q18771811872/article/details/88126835 springboot 2.0跳转 html教程 ...

  3. springboot跳转jsp页面

    springboot支持jsp页面跳转 官方不推荐jsp的支持(jar包不支持jsp,jsp需要运行在servletContext中,war包需要运行在server服务器中如tomcat)官方推荐使用 ...

  4. request.getRequestDispatcher()跳转+中文乱码

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...

  5. springboot 运行jar 跳转jsp页面

    pom.xml 添加 <!-- tomcat支持 --> <dependency> <groupId>org.springframework.boot</gr ...

  6. springboot+jsp+mybatis项目实例(后台成功,但是无法跳转jsp页面,没有实体类的注解,看springboot+jsp第二弹相关配置,即可成功配置jsp)

    SpringBoot是用来简化SpringMvc开发的项目,这里自然要整合mybatis等持久化框架! 先看看项目目录: 一.在pom.xml中配置依赖jar包:<project xmlns=& ...

  7. 18. 进livebos对象直接跳转jsp页面的做法

    在网格脚本定义添加: window.onload=function(){     window.location.href='/plug-in/sinopec/contractManagement/h ...

  8. JFinal跳转jsp页面空白

    eclipse工具中java的编译有的设置的是jre,而jsp是需要jdk来进行编译的 将这里改为jdk的就可以了

  9. Servlet跳转到JSP页面后的路径问题相关解释

    一.现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同 ...

随机推荐

  1. 移动端rem与px适应js

    方法一: (function (doc, win) { var docEl = doc.documentElement, resizeEvt = "orientationchange&quo ...

  2. SpringBoot 整合Dubbo

    RPC框架可参考:https://blog.csdn.net/top_code/article/details/54615853 整合可参考:https://www.dalaoyang.cn/arti ...

  3. mysql 字符串去掉指定字符

    如:在每一列meeting_persons的现有内容之上,去掉15112319字符串 ','')

  4. 写交互式脚本时,遇到到报错:not a regular file

    场景:在写两台ubuntu之间需要交互式登录操作shell脚本.就是在ubantu A上,做点什么事,然后远程到ubuntu B上进行操作,shell脚本存放在ubuntu A上. 我遇到这个报错:n ...

  5. 学习日志1 :java 三大框架 了解

    1.spring--------利用它的IOC和AOP来处理控制业务(负责对数据库的操作) https://blog.csdn.net/yu616568/article/details/7073997 ...

  6. Redis 学习目录

    Redis in .NET Core 入门 Redis实战 - 1.String和计数器 Redis实战 - 2.list.set和Sorted Set Redis实战 - 4.Key Redis实战 ...

  7. git - 1.基础

    配置 C:\Users\Administrator λ git config --global user.name 'tangsansan' C:\Users\Administrator λ git ...

  8. Linux tar命令之--exclude参数 排除指定的文件或目录

    https://my.oschina.net/u/3285916/blog/1632552 参数: --exclude 打包时排除不需要处理的文件或目录 说明: tar -zcf a.tar.gz 打 ...

  9. Servlet校验密码之Mariadb篇

    Servlet校验密码之Mariadb篇 先放图-- 数据库: 效果图: 整体来说与上一篇差距不大,这次主要是采用数据库来进行校验,我使用的是Mariadb,安装与配置不用我说 主要有一点,导入连接器 ...

  10. jq实现多选反选

    <script type="text/javascript">    $('input [name="ckball"]').click(functi ...