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

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

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

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

最后采用下面的方式实现

@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()); boolean flag=false;
if (user.getLoginName() != null && user.getPassWord() != null) { //创建session对象
HttpSession session = request.getSession(); //把用户数据保存在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);
}
}
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}; $.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. 【MySQL】MySQL内连接,左连接,右连接查询

    概念 INNER JOIN(内连接):获取两个表中字段匹配关系的记录.也就是只会返回共有的内容. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录. RIGHT JOIN(右 ...

  2. 图文详解之ZSH美化你的终端CLI

    在这个博客中,我将介绍安装ITerm2,ZSH shell,“我的ZSH”,主题,ITerm2配色方案,“我的ZSH”插件,并启用“连线”支持,以帮助创建一个美丽而强大的终端. 如果你想让你的常规Ba ...

  3. Go依赖模块版本之Module避坑使用详解

    前提 对于Go的版本管理主要用过 glide,下面介绍 Go 1.11 之后官方支持的版本管理工具 mod. 关于 mod 官方给出了三个命令 go help mod.go help modules. ...

  4. Windows下Maven3.3.9安装与配置

    安装Maven步骤: 下载Maven,下载网址:http://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/ 解压下载的文件:建议解压到全英 ...

  5. TP5多模块开发

    一般的thinkphp框架一般都是单模块开发的,但有时候我们可能需要进行多模块开发,例如添加个后台管理的模块.这次给人讲课,在Tp多模块开发的配置上翻车,感觉很有必要总结下,话不多说,直接上干货. 总 ...

  6. 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)

    1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...

  7. spring-data-jpa 二、多对一结构、Repository

    一.Entity 例如一个user实体和一个department实体  多个用户对应一个部门 1.user类 @id:声明了一个属性映射到数据库主键字段,主键生成策略有@GenerateValue来指 ...

  8. vs2017 EFCore 迁移数据库命令

    项目结构: 首先引用 Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.Design 增加类DesignTimeDbC ...

  9. SpringBoot 添加mybatis generator 自动生成代码插件

    自动生成数据层代码,提高开发效率 1.pom添加插件,并指定配置文件路径 <!-- mybatis generator 自动生成代码插件 --> <plugin> <gr ...

  10. Linux计划任务及压缩归档

    计划任务介绍 自动执行,备份数据. crontab    和   at : at:它是一个可以处理仅执行一次就结束的指令 crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直 ...