android + Spring RESTful 简单登录 (spring3实现服务端 rest api)

 https://github.com/spring-projects/spring-android-samples/tree/master/spring-android-showcase
 
Java代码  spring-android的使用【转】
  1. public class SpringHttpClient {  
  2.   
  3.         private static RestTemplate restTemplate;  
  4.   
  5.         private final static String url = "http://192.168.0.8:6060/contact";  
  6.   
  7.         private final static String login = url + "/user/userLogin/{loginname},{loginpassword}?format=json";  
  8.   
  9.         private final static String query = url + "/user/list?format=json";  
  10.   
  11.         private final static String add = url + "/user/add?format=json";  
  12.   
  13.         private final static String detail = url + "/user/{id}/detail?format=json";  
  14.   
  15.         private final static String update = url + "/user/{id}/updates?format=json";  
  16.   
  17.         private final static String delete = url + "/user/{id}/delete?format=json";  
  18.   
  19.         private final static String upload = url + "/user/upload?format=json";  
  20.   
  21.         static {  
  22.                 restTemplate = new RestTemplate();  
  23.         }  
  24.   
  25.         public SpringHttpClient(){  
  26.         }  
  27.         /** 
  28.          * 登录, 
  29.          * @param username 
  30.          * @param password 
  31.          * @return {"user":{"id":"1","loginname":"superman","loginpassword":"unicom","username":"超级管理员","useremail":"superman@163.com","usermobile":null,"userstate":null,"userlogintime":null}} 
  32.          */  
  33.         public static String OAuth(String username,String password){  
  34.                 Map<String, String> request = new HashMap<String, String>();   
  35.                 request.put("loginname", username);  
  36.                 request.put("loginpassword", password);  
  37.                 return getObject(login,request);  
  38.         }  
  39.         /** 
  40.          * 得到所有的用户, 
  41.          * @return ........ 
  42.          */  
  43.         public static String ListAll(){  
  44.                 return getObject(query, null);  
  45.         }  
  46.         /** 
  47.          * 根据id得到唯一用户 
  48.          * @param id 
  49.          * @return{"user":{"id":"4028809b376e28be01376e294b180000","loginname":"sdfsdf","loginpassword":"sdfsdf","username":"sdfsdf","useremail":"sdfsdf","usermobile":null,"userstate":null,"userlogintime":null}} 
  50.          */  
  51.         public static String Detail(String id){  
  52.                 Map<String, String> request = new HashMap<String, String>();  
  53.                 request.put("id", id);  
  54.                 return getObject(detail, request);  
  55.         }  
  56.         /** 
  57.          * 添加一个用户 
  58.          * @param user 
  59.          * @return 
  60.          */  
  61.         public static String Add(Users user){  
  62.                 Map<String, String> request = new HashMap<String, String>();  
  63.                 request.put("id""");  
  64.                 MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();  
  65.                 map.add("loginname", user.getLoginname());  
  66.                 map.add("loginpassword", user.getLoginpassword());  
  67.                 map.add("useremail", user.getUseremail());  
  68.                 map.add("usermobile", user.getUsermobile());  
  69.                 return postObject(add,map,request);  
  70.         }  
  71.         /** 
  72.          * 根据id更新用户 返回更新的实例和信息(restTemplate.put 也可以直接更新) 
  73.          * @param id 
  74.          * @param user 
  75.          * @return{"users":{"id":"4028809b376daa8901376dab59520001","loginname":"45345345","loginpassword":null,"username":"测试一下kankan","useremail":null,"usermobile":"ddddd","userstate":null,"userlogintime":null}} 
  76.          */  
  77.         public static String Update(String id,Users user){  
  78.                 Map<String, String> request = new HashMap<String, String>();  
  79.                 request.put("id", id);  
  80.                 MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();  
  81.                 map.add("loginname", user.getLoginname());  
  82.                 map.add("username", user.getUsername());  
  83.                 map.add("usermobile", user.getUsermobile());  
  84.                 return postObject(update,map, request);  
  85.         }  
  86.         /** 
  87.          * 更加id删除用户(也可以用restTemplate.delete 但是没有返回的信息) 
  88.          * @param id 
  89.          * @param user 
  90.          * @return {"ajax":{"success":true,"messages":"删除成功!"}} 
  91.          */  
  92.         public static String Delete(String id){  
  93.                 Map<String, String> request = new HashMap<String, String>();  
  94.                 request.put("id", id);  
  95.                 return getObject(delete, request);  
  96.         }  
  97.         /** 
  98.          * 上传文件 
  99.          * @param path 
  100.          * @return 
  101.          */  
  102.         public static String UploadFile(String path){  
  103.                 MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();  
  104.                 Resource resource;  
  105.                 try {  
  106.                         resource = new UrlResource("file://"+path);  
  107.                         formData.add("json", resource);  
  108.                 } catch (MalformedURLException e) {  
  109.                         e.printStackTrace();  
  110.                 }   
  111.                 HttpHeaders requestHeaders = new HttpHeaders();  
  112.         requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);  
  113.         HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(formData, requestHeaders);  
  114.                 ResponseEntity<String> response = restTemplate.exchange(upload, HttpMethod.POST, requestEntity, String.class);  
  115.                 return response.getBody();  
  116.         }  

=============================服务器端部分代码============================== 
Java代码  spring-android的使用【转】
  1. /**注意下面的方法中请求的方法名称是一样的, 
  2.          * 只不过根据不同的RequestMethod.GET来找对应的方法 
  3.          * RequestMethod ( 
  4.          * GET=get提交,  
  5.          * HEAD,  
  6.          * POST=post提交,  
  7.          * PUT=put更新,  
  8.          * DELETE=delete删除,  
  9.          * OPTIONS, TRACE) 
  10.          * 对应 
  11.          * <form:form method="POST"> 
  12.          * <form:form method="PUT"> 
  13.          * <form:form method="DELETE"> 
  14.          */  
  15.   
  16.         /** 
  17.          * 用户列表例子(不带分页) 
  18.          * @return 
  19.          */  
  20.         @RequestMapping(value="/list",method=RequestMethod.GET)  
  21.         public ModelAndView UserList(){  
  22.                 List<Users> list = usersService.listAll();  
  23.                 return new ModelAndView("main""userslist", list);  
  24.         }  
  25.         /** 
  26.          * 用户列表例子(带分页) 
  27.          * @return 
  28.          */  
  29.         @RequestMapping(value="/query",method=RequestMethod.GET)  
  30.         public ModelAndView UserListPage(HttpServletRequest request,Model model, @ModelAttribute("command") Users command){  
  31.                 model.addAttribute(Constants.COMMAND, command);  
  32.                 int pn = ServletRequestUtils.getIntParameter(request, "pn"1);  
  33.                 Page<Users> list = usersService.listAllUsers(command, pn);  
  34.         model.addAttribute("page", list);  
  35.                 return new ModelAndView("query");  
  36.         }  
  37.         /** 
  38.          * 新增之前绑定PO到form表单跳转到新增页面例子 
  39.          * @param model 
  40.          * @return 
  41.          */  
  42.         @RequestMapping(value="/add",method=RequestMethod.GET)  
  43.         public ModelAndView before_UserAdd(Model model){  
  44.                 //相当于request.setattribute的意思  
  45.                 if(!model.containsAttribute(Constants.COMMAND))  
  46.                         model.addAttribute(Constants.COMMAND, new Users());  
  47.                 return new ModelAndView("add");  
  48.         }  
  49.         /** 
  50.          * 新增用户例子 
  51.          * @param users 
  52.          * @return 
  53.          */  
  54.         @RequestMapping(value="/add",method=RequestMethod.POST)  
  55.         public ModelAndView after_UserAdd(Users user){  
  56.                 usersService.save(user);  
  57.                 AjaxResponse ajax = new AjaxResponse();  
  58.                 ajax.setSuccess(true);  
  59.                 ajax.setMessages("注册成功!");  
  60.                 return new ModelAndView("ajax","ajax",ajax);  
  61.                 //也可以直接返回列表也行  
  62.                 //return new ModelAndView(new RedirectView("list"));  
  63.         }  
  64.         /** 
  65.          * 更新之前绑定PO到form表单跳转到更新页面 
  66.          * @param id 
  67.          * @param model 
  68.          * @return 
  69.          */  
  70.         @RequestMapping(value="/{id}/detail",method=RequestMethod.GET)  
  71.         public ModelAndView get_Users(@PathVariable String id,Model model){  
  72.                 Users users = usersService.get(id);  
  73.                 model.addAttribute("users", users);  
  74.                 return new ModelAndView("detail");  
  75.         }  
  76.         /** 
  77.          * 更新之前绑定PO到form表单跳转到更新页面 
  78.          * @param id 
  79.          * @param model 
  80.          * @return 
  81.          */  
  82.         @RequestMapping(value="/{id}/updates",method=RequestMethod.GET)  
  83.         public ModelAndView before_UsersUpdate(@PathVariable String id,Model model){  
  84.                 Users users = usersService.get(id);  
  85.                 if(!model.containsAttribute(Constants.COMMAND))  
  86.                         model.addAttribute(Constants.COMMAND, users);  
  87.                 return new ModelAndView("updates");  
  88.         }  
  89.         /** 
  90.          * 更新用户例子(put更新 一般用在web) 
  91.          * @param users 
  92.          * @return 
  93.          */  
  94.         @RequestMapping(value="/{id}/updates",method=RequestMethod.PUT)  
  95.         public ModelAndView after_put_UserUpdate(Users user){  
  96.                 usersService.update(user);  
  97.                 return new ModelAndView("redirect:../list");  
  98.         }  
  99.         /** 
  100.          * 更新用户例子(post更新 一般用在client) 
  101.          * @param users 
  102.          * @return 
  103.          */  
  104.         @RequestMapping(value="/{id}/updates",method=RequestMethod.POST)  
  105.         public ModelAndView after_post_UserUpdate(Users user){  
  106.                 usersService.update(user);  
  107.                 AjaxResponse ajax = new AjaxResponse();  
  108.                 ajax.setSuccess(true);  
  109.                 ajax.setMessages("更新成功!");  
  110.                 return new ModelAndView("ajax","ajax",ajax);  
  111.         }  
  112.         /** 
  113.          * 删除用户例子 
  114.          * @param id 
  115.          * @return 
  116.          */  
  117.         @RequestMapping(value="/{id}/delete",method=RequestMethod.GET)  
  118.         public ModelAndView UserDelete(@PathVariable String id){  
  119.                 usersService.delete(id);  
  120.                 AjaxResponse ajax = new AjaxResponse();  
  121.                 ajax.setSuccess(true);  
  122.                 ajax.setMessages("删除成功!");  
  123.                 return new ModelAndView("ajax","ajax",ajax);  
  124.         }  
  125.         /** 
  126.          * 上传文件 
  127.          * @param request 
  128.          * @return 
  129.          */  
  130.         @RequestMapping(value="/upload",method=RequestMethod.POST)  
  131.         public ModelAndView Upload(@RequestParam("json") MultipartFile multi){  
  132.                 try {  
  133.                         byte[] bytes =  multi.getBytes();  
  134.                         FileOutputStream out = new FileOutputStream("D:\\"+multi.getOriginalFilename());  
  135.                         out.write(bytes);  
  136.                         out.close();  
  137.                 } catch (IOException e) {  
  138.                         // TODO Auto-generated catch block  
  139.                         e.printStackTrace();  
  140.                 }  
  141.   
  142.                 AjaxResponse ajax = new AjaxResponse();  
  143.                 ajax.setSuccess(true);  
  144.                 ajax.setMessages("文件上传成功!");  
  145.                 return new ModelAndView("ajax","ajax",ajax);  
  146.         }  

//--------------------------------------------------------------

使用Spring-Android获取和解析json数据


相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-06
  • 2021-05-29
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-27
  • 2021-11-01
  • 2021-08-02
  • 2021-07-17
  • 2021-05-19
  • 2021-12-05
相关资源
相似解决方案