1. 程式人生 > 實用技巧 >Java之前後端資料互動

Java之前後端資料互動

1、前臺傳送資料到服務端,以及接受後臺資料

前臺傳送資料到服務端,有兩種方法:

(1)使用

  表單傳送同步請求

  引數inputStr:

  引數intputInt:

(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();

}

原文連結:https://www.it610.com/article/1290291351744749568.htm