1.springmvc+ajax交互方式:
1.1.text类型数据
$.ajax({
url:'${pageContext.request.contextPath}/zy/user/existLoginName',//请求地址
type:'post',//请求类型
data:{loginName:$("#loginName").val()},//传入后台数据
dataType:'text',//后台返回数据类型
success : function(data) {
alert("成功!");
},
error:function(data){
alert("服务器异常!");
}
})
@RequestMapping("/existLoginName")
public void existLoginName(HttpServletRequest request,HttpServletResponse response){
String zh = request.getParameter("loginName");
User u = userService.selectUserByLoginName(zh);
try {
if(u!=null){
response.getWriter().write("exist");
}else{
response.getWriter().write("ok");
}
} catch (IOException e) {
e.printStackTrace();
}
}
1.2.json类型数据
后台@ResponseBody传数据到前台
$.ajax({
url:'${pageContext.request.contextPath}/user/existLname',
type:'post',
dataType:'json',
data:{loginName:$("#loginName").val()},
success:function(data){
alert(data.msg);
}
//注意:这里不能加下面这行,否则数据会传不到后台
//contentType:'application/json;charset=UTF-8',
})
@RequestMapping("/existLname")
@ResponseBody
public Map<String, String> searchUser(String loginName){
User u= userService.selectUserByLoginName(loginName);
Map<String,String> map = new HashMap<String,String>();
if(u!=null){
map.put("msg", "no");
}else{
map.put("msg", "ok");
}
return map;
}
@RequestBody接收数据
$.ajax({
url:'${pageContext.request.contextPath}/user/existLname',
type:'post',
contentType:'application/json;charset=UTF-8',//必须有
dataType:'json',
data:{loginName:$("#loginName").val()},
success:function(data){
alert(data.msg);
}
})
@RequestMapping("/existLname")
@ResponseBody
public String searchUser(@RequestBody String loginName){
User u= userService.selectUserByLoginName(loginName);
JSONObject jo = new JSONObject();
if(u!=null){
jo.put("msg", "no");
}else{
jo.put("msg", "ok");
}
return jo.toString();
}
2、GET、POST、PUT、DELETE请求方式总结
1、GET
get请求是用来获取数据的,只是用来查询数据,不对服务器的数据做任何的修改,新增,删除等操作。
在这里我们认为get请求是安全的,以及幂等的。安全就是指不影响服务器的数据,幂等是指同一个请求发送多次返回的结果应该相同。
特点:
get请求会把请求的参数附加在URL后面,这样会产生安全问题,如果是系统的登陆接口采用的get请求,需要对请求的参数做一个加密。
get请求其实本身HTTP协议并没有限制它的URL大小,但是不同的浏览器对其有不同的大小长度限制
2、POST
post请求一般是对服务器的数据做改变,常用来数据的提交,新增操作。
特点:
post请求的请求参数都是请求体中
post请求本身HTTP协议也是没有限制大小的,限制它的是服务器的处理能力
3、PUT
put请求与post一样都会改变服务器的数据,但是put的侧重点在于对于数据的修改操作,但是post侧重于对于数据的增加。
4、DELETE
delete请求用来删除服务器的资源。
3、SpringMVC 页面数据传递到后台的几种方式
方式一 通过@RequestParam注解来接收
方式二 直接用同名变量来接收
方式三 通过request来接收
下面我们借用a标签来携带数据传递到后台继续测试,a标签提交的方式为GET提交。
准备一个测试jsp页面index.jsp,内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>SpringMV参数传递测试</h3>
<a href="mfc/showwithparam?msg=welcomespringmvcparam">测试带参数(@RequestParam注解来接收)</a>
<br />
<a href="mfc/showwithparam2?msg=welcomespringmvcparam">测试带参数(同名变量来接收)</a>
<br />
<a href="mfc/showwithrequest?msg=welcomespringmvcparam">测试带参数(request来接收)</a>
<br />
</body>
</html>
下面是分别使用三种方式接收数据的方式:
方式一 通过@RequestParam注解来接收
@Controller
@RequestMapping("mfc")
public class MyFirstController {
/**
* 传递参数到控制器的的一种方式(@RequestParam注解来接收)
*
* @param str
* @return
*/
@RequestMapping(value = "showwithparam")
public String showWithParam(
@RequestParam(value = "msg", required = false, defaultValue = "默认值") String str) {
System.out.println("showwithparam...");
System.out.println("接收页面传递的参数msg:" + str);
return "main";
}
}
代码解释:通过@RequestParam来接收参数, 表示页面传递参数的名字叫msg,这里定义一个名叫str的变量来接收msg的值,这种方式,要求必须传递过来一个名叫msg的参数,没有传递这个参数的时候就会出现400错误
方式二 直接用同名变量来接收
@Controller
@RequestMapping("mfc")
public class MyFirstController {
/**
* 传递参数到控制器的的二种方式(同名变量来接收)
*
* @param msg
* @return
*/
@RequestMapping(value = "showwithparam2")
public String showWithParam2(String msg) {
System.out.println("showWithParam2...");
System.out.println("接收页面传递的参数msg:" + msg);
return "main";
}
}
代码解释:这里添加了一个参数msg,这个参数和页面提交的数据的名称一致为msg,不管页面是否传递msg参数,都不会报错,传递了,就接收,没有传递,就是null。
方式三 通过request来接收
@Controller
@RequestMapping("mfc")
public class MyFirstController {
/**
* 在业务方法中,如果需要使用到内置对象,只需要在方法中,定义对应的形参,即可。
*
* @param request
* @return
*/
@RequestMapping(value = "showwithrequest")
public String showWithRequest(HttpServletRequest request) {
System.out.println("showwithrequest...");
String msg = request.getParameter("msg");
System.out.println("通过request接收的msg:" + msg);
return "show";
}
}