SSM與android端資料互動
一.前言
最近第一次用ssm與安卓端實現了資料互動,我這裡資料互動通過傳送接受JSON資料來實現的。實現了登入註冊和對某些實體類資料的增刪改查。
二.後端的具體實現
我們實體類的資料和安卓端的實體資料名字要是相同的,不然獲取不到後端傳送的JSON資料,作為後端我們不用去了解安卓端是怎麼實現傳送和接受JSON資料,我們只要保證實體類屬性名相同,並給他們一個後端介面(一個URL地址),也就是說它們之間的資料接受和傳送都是通過url來實現了,所以ssm在只需要在控制層去攔截url得到相應的request和respond。
下面展示某登入部分的一個控制層程式碼
@Controller @RequestMapping("/User") public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/login", method = RequestMethod.POST) public void login(HttpServletResponse response, @RequestBody User user) throws IOException { userService.login(user); JSONObject jsonObject = new JSONObject().fromObject(user); byte[] dataByte = null; ServletOutputStream output; output = response.getOutputStream(); dataByte = jsonObject .toString().getBytes("UTF-8"); output.write(dataByte); } }
ServletOutputStream output; output = response.getOutputStream(); dataByte = jsonObject .toString().getBytes("UTF-8"); output.write(dataByte); } }
安卓端要傳引數過來,後端通過@RequestBody User user 接受到user的json物件,登入成功往客戶端輸出user,也是把user封裝成json物件,response.getOutputStream()這樣獲取一個OutputStream流的時候,我們在使用完之後,並不需要手動的去關閉,系統會自動關閉它,如果我們手動去關閉這個流的話,還會引發一些問題,用ServletOutputStream輸入到客戶端,安卓端獲得相應資料。如果是要像客戶端輸入字元流就用PrintWriter。一般都是把輸入到客戶端資料這部分封裝成一個類的。
另外要指定是以什麼方式傳輸資料,我這裡指定的是POST方法 method = RequestMethod.POST。寫完後我們只要把該介面給安卓端就可以了,如該url為:http://域名/專案名/User/login。
三.測試後端介面
當我們寫完後端介面後並不知道可以用嗎,能接到資料嗎?是否後端還有問題?
在這裡我推薦一個測試工具Postman(有些是裝網頁外掛,在網站上測試,自己可以去了解一下)。我簡單的介紹Postman用法。
新建一個專案
在填寫url地址,也就是後端介面
點選send傳送,如果沒放到伺服器上可以使用本機測試地址localhost:8080。
如果要傳送json資料,先點選headers,配置傳送json資料
點選body,在點選raw,在裡面填寫json格式資料就可以了。
Postman就介紹這麼多了,想了解更多就去搜索Postman吧。