springmvc中controller和前端jsp页面的交互问题

westlife_zhuang 2017-04-19 02:24:51
先上代码段
@RequestMapping(value = "/userLogin", method = RequestMethod.POST)
public String userLogin(@RequestParam("userName") String userName,
@RequestParam("password") String password,
HttpServletRequest request, Model model) {
System.out.println(userName);
System.out.println(password);
User user = userBasic.getUserByName(userName);
if (user != null) {
if (user.getPassword().equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("userName", userName);
model.addAttribute("state", "success");
model.addAttribute("message", "登录成功!");
return "user_project";
} else {
model.addAttribute("failure", "用户名或密码错误!");
return "error";
}
} else {
model.addAttribute("state", "failure");
model.addAttribute("message", "该用户不存在!");
return "error";
}
}

在这个方法所在类上有@RequestMapping("/user")
我想要的是调用这个登录函数后如果密码正确就跳转到user_project.jsp这个页面
下面是我的index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml/DTD/xhtml-transitional.dtd">
<html lang="zh-CN">
<head>
<base href="<%=basePath%>">

<title>登录系统</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<form id="form_login">
用户名:<input type="text" name="userName" id="userName"/>
密码:<input type="password" name="password" id="password"/>
<button type="button" value="登录" onclick="toLogin()">登录</button>
</form>

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" type="text/javascript"></script>
<script>
function toLogin(){
$.ajax({
url:"<%=basePath%>user/userLogin",
data:{"userName":"brianzhuang","password":"124652"},
type:"POST",
dataType:"html",
success: function(data,textstatus){
alert(textstatus);
},
error:function(jqxhr,textstatus,error){
alert(jqxhr);
alert(error);
alert(textstatus);
}
});
}

</script>
</body>
</html>


1,我想要利用jquery对ajax的封装来实现,ajax是异步的请求,是不是不支持跳转页面?
2,index页面中点击登录按钮后走的是error的处理方法,三个alert,为什么?调用不到controller的方法???
我快受不了这个了,求大神帮我解决!!!
...全文
8512 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
@RequestMapping(value = "/userLogin", method = RequestMethod.POST) @ResponseBody----这里要加个响应ajax数据的 public String userLogin(@RequestParam("userName") String userName, @RequestParam("password") String password, HttpServletRequest request, Model model) { System.out.println(userName); System.out.println(password); User user = userBasic.getUserByName(userName); if (user != null) { if (user.getPassword().equals(password)) { HttpSession session = request.getSession(); session.setAttribute("userName", userName); return "1"; } else { return "-1"; } } else { return "0"; } } <script> function toLogin(){ $.ajax({ url:"<%=basePath%>user/userLogin", data:{"userName":"brianzhuang","password":"124652"}, type:"POST", dataType:"html", success: function(data,textstatus){ alert(textstatus); window.location.href=" 这里放跳转页面的链接" }, error:function(jqxhr,textstatus,error){ alert(error); } }); } </script>
你看咩啊 2017-04-20
  • 打赏
  • 举报
回复
ajax本来就是用来做局部刷新的,你这要进行页面跳转还要用ajax跟它本身的定位就相悖啊,不合理
Scaarf 2017-04-20
  • 打赏
  • 举报
回复
只是跳转页面的话为啥要用ajax呢,正常将form表单提交后台,然后controller用你最开始写的不挺好的么,前台一提交,后台经过判断就能跳转到相应页面就完事了。登录用ajax这样处理。。。。。前台提交,然后后台判断,最后前台还得手动写js让页面跳转,不觉得麻烦么,而且ajax注重的是局部刷新页面,你这个完全没这个需求
westlife_zhuang 2017-04-19
  • 打赏
  • 举报
回复
@RequestMapping(value = "/userLogin", method = RequestMethod.POST)
	public @ResponseBody Map<String, Object> userLogin(@RequestParam("userName") String userName,
			@RequestParam("password") String password,
			HttpServletRequest request){
		Map<String, Object> map = new HashMap<String, Object>();
		System.out.println(userName+"  "+password);
		User user = userBasic.getUserByName(userName);
		//System.out.println(user.getUserName());
		if(user!=null){
			//System.out.println(user.getPassword());
			if(user.getPassword().equals(password)){
				map.put("userID", user.getId());
			} else {
				System.out.println("wrong password");
			}
		}
		//System.out.println(map.get("userID"));
		return map;
	}
<script type="text/javascript">
      		$(function(){
      			$("#btnbutton").bind("click",function(){
      				$.ajax({
      				url:"<%=basePath%>user/userLogin",
      				type:'post',
      				data:{"userName":$("#userName").val(),"password":$("#password").val()},
      				dataType:"json",
      				success: function(data,textstatus){
      					alert(JSON.stringify(data));
      					alert(textstatus);},
      				error:function(jqxhr,textstatus,error){
      					alert(textstatus);
      					console.log(jqxhr);}
      			       });
      		      });
              });
      </script>
我现在把controller的这个方法改成这样,前端页面url为localhost:8080/项目名/user/userLogin/,点击登录后执行了这两条语句:alert(JSON.stringify(data)); alert(textstatus);},然后url跳转到了localhost:8080/项目名/?userName=brianzhuang&password=124652。。。。我真是晕了,怎么办?
商商-77 2017-04-19
  • 打赏
  • 举报
回复
后端加上@ResponseBody注解返回json格式的数据
商商-77 2017-04-19
  • 打赏
  • 举报
回复

                  $.ajax({
                      url:"<%=basePath%>user/userLogin",
                      data:{"userName":"brianzhuang","password":"124652"},
                      type:"POST",
                      dataType:"json",
                      success: function(msg){
                          if(msg.success){
window.location = "要跳转的地址";
}
                      },
                      error:function(msg){
                          
                      }
                  });
商商-77 2017-04-19
  • 打赏
  • 举报
回复
在浏览器的开发者工具里看看发出去的请求与响应的什么

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧