前后端交互-数据
<%--前后端数据交互--%>
(1)使用表单发送同步请求
(2)使用Ajax发送异步请求 发送的数据为json对象
$.ajax({ //$.get,$.post,$.getJSON
async: //请求同步异步,默认true异步
type: //请求类型:GET/POST
url: //请求的网站地址
data: //提交的数据,参数
contentType: //请求的MIME媒体类型:application/x-www-form-urlencoded(默认)、application/json;charset=UTF-8
dataType: //服务器返回MIME类型:xml/html/script/json/jsonp
success: function(data){ //请求成功回调函数,data封装网站返回的数据
console.log( data );
},
error: function(e) { //请求失败回调函数,e封装错误信息
console.log(e.status); //状态码
console.log(e.responseText);
}//错误信息
})
SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter(""),另外一种是用注解@RequestParam直接获取。
(1)继承HttpServlet类,使用request.getParameter("")方法获取请求参数
@RequestMapping("testRequestParam")
public String test( HttpServletRequest request,HttpServletResponseresponse) {
String inputStr=request.getParameter("input")
int inputInt = Integer.valueOf(request.getParameter("inputInt"));
System.out.println(input+","+inputInt);
return "index";
}
(2)使用注解@RequestParam直接获取
@RequestMapping("testRequestParam")
public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) {
System.out.println(input);
int inputInt = Integer.valueOf(request.getParameter("inputInt"));
System.out.println(inputInt);
return "index";
}
(3)使用@ResponseBody注解来解析json对象
@RequestMapping("/testRequestParam")
@ResponseBody
public String filesUpload(String input,StringinputInt)throws Exception{
System.out.println(input+","inputInt);
return "index";
}
<%--服务端给客户端返回数据--%>
(1)可以继承HttpServlet类,获取请求参数,同时将数据通过流的形式发送到前台。返回的可以是字符串,也可以是json对象。
复制代码
@RequestMapping(value="/tests")
public void Post(HttpServletRequest request,HttpServletResponse response)throws Exception {
String username = request.getParameter("username");
String password =request.getParameter("password");
response.setContentType("text/html; charset=utf-8"); //设置响应头
response.setHeader("pragma", "no-cache");
response.setHeader("cache-control", "no-cache");
PrintWriter out = response.getWriter();
out.println(username+","+password); //字符串
out.flush();
out.close();
}
(2)返回页面,Controller中方法返回JSON对象,如果需要携带数据通过ModelAndView(相当于一个Map)传递到view, view中使用jstl的EL表达式来绑定ModelAndView带来的数据。
复制代码
@RequestMapping(value="/getView",method=RequestMethod.GET)
@ResponseBody
public ModelAndViewgetView(String username,String password)throws Exception{
ModelAndView mv=new ModelAndView();
mv.addObject("Object",obj);
mv.setViewName("index");
return mv;
}
(3)返回Json对象,利用@ResponseBody来实现。spring MVC自动将java对象转化成了json对象传回了客户端,返回对象可以是Pojo也可以是List直接操作Response自己实现想要的效果。
@RequestMapping(value="/getPojoJson",method=RequestMethod.GET)
@ResponseBody
public PojogetPojoJson(){
Pojo pojo = new Pojo();
pojo.setPojoName("testName");
pojo.setPojoValue("testValue");
return pojo;
}
(4)将对象(或数组)转换成json对象(或json数组),发送到前端
@RequestMapping("/test.do")
public void doPost(HttpServletRequestrequest, HttpServletResponse response) throws Exception {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
response.setHeader("Access-Control-Allow-Origin","*");
List objs=baseService.findForList();//查询出来的是对象集合
JSONArray jsonArray =JSONArray.fromObject(objs);//转化成json对象,将对象集合之间转换成了json数组
PrintWriter out = response.getWriter();
out.println(jsonArray);
out.flush();
out.close();
}
小白成长记录-千余