Java之前後端資料互動
阿新 • • 發佈:2020-08-25
1、前臺傳送資料到服務端,以及接受後臺資料
前臺傳送資料到服務端,有兩種方法:
(1)使用
(2)使用ajax傳送非同步請求,傳送的資料為json物件
引數username:
引數password:
<scripttype="text javascript"=""> function test(){ $.ajax({ url:"test.do", type:"POST", cache:false, data:{ "username":username, "password":password }, dataType:"json", success:function(data){ console.log(data); }, error:function(){ } }); }
2、服務端後臺接受資料
在SpringMVC後臺控制層獲取引數的方式主要有兩種,一種是request.getParameter("name"),另外一種是用註解@RequestParam直接獲取。
(1)繼承HttpServlet類,使用request.getParameter("name")方法獲取請求引數
@RequestMapping("testRequestParam") public String test( HttpServletRequest request,HttpServletResponseresponse) { String inputStr=request.getParameter("inputStr") int inputInt = Integer.valueOf(request.getParameter("inputInt")); System.out.println(inputStr+","+inputInt); return "index"; }
(2)使用註解@RequestParam直接獲取
@RequestMapping("testRequestParam") public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) {
System.out.println(inputStr); int inputInt = Integer.valueOf(request.getParameter("inputInt")); System.out.println(inputInt); return "index"; }
(3)使用@ResponseBody註解來解析json物件
@RequestMapping("/testRequestParam") @ResponseBody public String filesUpload(String inputStr,StringinputInt)throws Exception{ System.out.println(inputStr+","inputInt); return "index"; }
3、服務端給客戶端返回資料
(1)可以繼承HttpServlet類,獲取請求引數,同時將資料通過流的形式傳送到前臺。返回的可以是字串,也可以是json物件。
@RequestMapping(value="/test.do") public void doPost(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 mav=new ModelAndView(); mav.addObject("Object",obj); mav.setViewName("index"); return mav; }
(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(); }