request.getRequestDispatcher跳转jsp页面失败
我在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页面失败的更多相关文章
- 分享url带中文参数,打开html操作完毕跳转jsp页面中文乱码解决
1.在app端分享参数组合时不对传递的url进行任何编码. 2.打开html页面时使用 escape函数对有中文的参数进行编码 escape(GetQueryString("paramete ...
- springboot 2.0.8 跳转jsp页面
springboot项目创建教程 https://blog.csdn.net/q18771811872/article/details/88126835 springboot 2.0跳转 html教程 ...
- springboot跳转jsp页面
springboot支持jsp页面跳转 官方不推荐jsp的支持(jar包不支持jsp,jsp需要运行在servletContext中,war包需要运行在server服务器中如tomcat)官方推荐使用 ...
- request.getRequestDispatcher()跳转+中文乱码
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...
- springboot 运行jar 跳转jsp页面
pom.xml 添加 <!-- tomcat支持 --> <dependency> <groupId>org.springframework.boot</gr ...
- springboot+jsp+mybatis项目实例(后台成功,但是无法跳转jsp页面,没有实体类的注解,看springboot+jsp第二弹相关配置,即可成功配置jsp)
SpringBoot是用来简化SpringMvc开发的项目,这里自然要整合mybatis等持久化框架! 先看看项目目录: 一.在pom.xml中配置依赖jar包:<project xmlns=& ...
- 18. 进livebos对象直接跳转jsp页面的做法
在网格脚本定义添加: window.onload=function(){ window.location.href='/plug-in/sinopec/contractManagement/h ...
- JFinal跳转jsp页面空白
eclipse工具中java的编译有的设置的是jre,而jsp是需要jdk来进行编译的 将这里改为jdk的就可以了
- Servlet跳转到JSP页面后的路径问题相关解释
一.现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同 ...
随机推荐
- Android应用市场的帮助类
写了一个Android应用市场的帮助类,如下: public class MarketUtils { public static final String MARKET_DATA = "ma ...
- 对oracle用户创建asm磁盘
--root用户执行vi /etc/sysctl.conf #Install oracle settingfs.aio-max-nr = 1048576fs.file-max = 6815744#ke ...
- Linux从入门到入门
一. 前言 首先,在你的Windows系统上要想有linux系统,那就必须先安装一款软件,这里提供的是14.15的,还有ISO镜像:VMware-workstation 安装VMware:略 新建虚拟 ...
- PDF怎么添加文字水印与图片水印
现在是个知识分享时代,但不可避免的盗版也无处不在,不知道在我们大家身边有没有遇到过这样的情况:自己煞费苦心制作的PDF文档不知道在什么时候就会被别人给盗用了,那么如何才能尽量避免这个问题呢?今天带大家 ...
- Linux ☞ Good good study,day day up
一. 修改桌面程序图标 linux的桌面图标都是在/usr/share/applications 目录下的那些 *.desktop文件,修改桌面程序图标就是修改.desktop图标配置文件中Icon的 ...
- Fullcalendar改版后发布到IIS或者tomcat里面前端加载数据不显示的问题
问题如题:Fullcalendar改版后发布到IIS或者tomcat里面前端加载数据不显示的问题 解决办法:通过火狐浏览器工具发现是时间格式不对的原因,需要将时间格式修改为:yyyy-MM--DD ...
- docker配置nginx做反向代理管理tomcat应用
由于业务开始复杂,单一tomcat已经不足以满足业务需求,多tomcat部署起来不方便而且面临域名解析问题,因此开始增加反向代理,由于docker的易用性,便使用docker管理各个应用. docke ...
- 难受的ESlint语法检测
相信写过vue的各位小白都有过这样的体验,明明引入的文件语法是对的,明明自己写的代码是对的,但是总会报语法错误,没错,就是ESlint代码检测搞的鬼, 就算你在注释后面多打一个空格,它都会去搞事情,简 ...
- idea通过mapper快速定位到xml文件
1.点击File找到设置(Settings) 2.点击Plugins下的 Browse respositories 3.在搜索栏搜索mybatis ,选中 Free Mybatis plugin——i ...
- 光纤网卡与HBA卡区别
1.简介 光纤网卡 ,指的是光纤以太网适配器,简称光纤网卡,学名Fiber Ethernet Adapter.传输输的是以太网通信协议,一般通过光纤线缆与光纤以太网交换机连接.按传输速率可以分为100 ...