千余千与

前后端交互-数据

    <%--前后端数据交互--%>
   
(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();

}

posted on 2021-10-13 15:02  千余千与  阅读(55)  评论(0编辑  收藏  举报

导航