注:
url?format=json 服务器端返回json数据
url?format=xml 服务器端返回xml数据
url 默认返回html数据
登录restful风格 部分源码
android客户端 导入spring for android开源jar
spring-android-rest-template-1.0.0.RC1.jar
spring-android-core-1.0.0.RC1.jar
spring-android-auth-1.0.0.RC1.jar
服务器端部分代码(spring3.1.1+hibernate4.1.2(jpa2)完全注解方式实现 )
======================================上代码=====================================
======================================android客户端=================================
public class SpringHttpClient {
private static RestTemplate restTemplate;
private final static String url = "http://192.168.0.8:6060/contact";
private final static String login = url + "/user/userLogin/{loginname},{loginpassword}?format=json";
private final static String query = url + "/user/list?format=json";
private final static String add = url + "/user/add?format=json";
private final static String detail = url + "/user/{id}/detail?format=json";
private final static String update = url + "/user/{id}/updates?format=json";
private final static String delete = url + "/user/{id}/delete?format=json";
private final static String upload = url + "/user/upload?format=json";
static {
restTemplate = new RestTemplate();
}
public SpringHttpClient(){
}
/**
* 登录,
* @param username
* @param password
* @return {"user":{"id":"1","loginname":"superman","loginpassword":"unicom","username":"超级管理员","useremail":"superman@163.com","usermobile":null,"userstate":null,"userlogintime":null}}
*/
public static String OAuth(String username,String password){
Map<String, String> request = new HashMap<String, String>();
request.put("loginname", username);
request.put("loginpassword", password);
return getObject(login,request);
}
/**
* 得到所有的用户,
* @return ........
*/
public static String ListAll(){
return getObject(query, null);
}
/**
* 根据id得到唯一用户
* @param id
* @return{"user":{"id":"4028809b376e28be01376e294b180000","loginname":"sdfsdf","loginpassword":"sdfsdf","username":"sdfsdf","useremail":"sdfsdf","usermobile":null,"userstate":null,"userlogintime":null}}
*/
public static String Detail(String id){
Map<String, String> request = new HashMap<String, String>();
request.put("id", id);
return getObject(detail, request);
}
/**
* 添加一个用户
* @param user
* @return
*/
public static String Add(Users user){
Map<String, String> request = new HashMap<String, String>();
request.put("id", "");
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("loginname", user.getLoginname());
map.add("loginpassword", user.getLoginpassword());
map.add("useremail", user.getUseremail());
map.add("usermobile", user.getUsermobile());
return postObject(add,map,request);
}
/**
* 根据id更新用户 返回更新的实例和信息(restTemplate.put 也可以直接更新)
* @param id
* @param user
* @return{"users":{"id":"4028809b376daa8901376dab59520001","loginname":"45345345","loginpassword":null,"username":"测试一下kankan","useremail":null,"usermobile":"ddddd","userstate":null,"userlogintime":null}}
*/
public static String Update(String id,Users user){
Map<String, String> request = new HashMap<String, String>();
request.put("id", id);
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("loginname", user.getLoginname());
map.add("username", user.getUsername());
map.add("usermobile", user.getUsermobile());
return postObject(update,map, request);
}
/**
* 更加id删除用户(也可以用restTemplate.delete 但是没有返回的信息)
* @param id
* @param user
* @return {"ajax":{"success":true,"messages":"删除成功!"}}
*/
public static String Delete(String id){
Map<String, String> request = new HashMap<String, String>();
request.put("id", id);
return getObject(delete, request);
}
/**
* 上传文件
* @param path
* @return
*/
public static String UploadFile(String path){
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
Resource resource;
try {
resource = new UrlResource("file://"+path);
formData.add("json", resource);
} catch (MalformedURLException e) {
e.printStackTrace();
}
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(formData, requestHeaders);
ResponseEntity<String> response = restTemplate.exchange(upload, HttpMethod.POST, requestEntity, String.class);
return response.getBody();
}
=============================服务器端部分代码==============================
/**注意下面的方法中请求的方法名称是一样的,
* 只不过根据不同的RequestMethod.GET来找对应的方法
* RequestMethod (
* GET=get提交,
* HEAD,
* POST=post提交,
* PUT=put更新,
* DELETE=delete删除,
* OPTIONS, TRACE)
* 对应
* <form:form method="POST">
* <form:form method="PUT">
* <form:form method="DELETE">
*/
/**
* 用户列表例子(不带分页)
* @return
*/
@RequestMapping(value="/list",method=RequestMethod.GET)
public ModelAndView UserList(){
List<Users> list = usersService.listAll();
return new ModelAndView("main", "userslist", list);
}
/**
* 用户列表例子(带分页)
* @return
*/
@RequestMapping(value="/query",method=RequestMethod.GET)
public ModelAndView UserListPage(HttpServletRequest request,Model model, @ModelAttribute("command") Users command){
model.addAttribute(Constants.COMMAND, command);
int pn = ServletRequestUtils.getIntParameter(request, "pn", 1);
Page<Users> list = usersService.listAllUsers(command, pn);
model.addAttribute("page", list);
return new ModelAndView("query");
}
/**
* 新增之前绑定PO到form表单跳转到新增页面例子
* @param model
* @return
*/
@RequestMapping(value="/add",method=RequestMethod.GET)
public ModelAndView before_UserAdd(Model model){
//相当于request.setattribute的意思
if(!model.containsAttribute(Constants.COMMAND))
model.addAttribute(Constants.COMMAND, new Users());
return new ModelAndView("add");
}
/**
* 新增用户例子
* @param users
* @return
*/
@RequestMapping(value="/add",method=RequestMethod.POST)
public ModelAndView after_UserAdd(Users user){
usersService.save(user);
AjaxResponse ajax = new AjaxResponse();
ajax.setSuccess(true);
ajax.setMessages("注册成功!");
return new ModelAndView("ajax","ajax",ajax);
//也可以直接返回列表也行
//return new ModelAndView(new RedirectView("list"));
}
/**
* 更新之前绑定PO到form表单跳转到更新页面
* @param id
* @param model
* @return
*/
@RequestMapping(value="/{id}/detail",method=RequestMethod.GET)
public ModelAndView get_Users(@PathVariable String id,Model model){
Users users = usersService.get(id);
model.addAttribute("users", users);
return new ModelAndView("detail");
}
/**
* 更新之前绑定PO到form表单跳转到更新页面
* @param id
* @param model
* @return
*/
@RequestMapping(value="/{id}/updates",method=RequestMethod.GET)
public ModelAndView before_UsersUpdate(@PathVariable String id,Model model){
Users users = usersService.get(id);
if(!model.containsAttribute(Constants.COMMAND))
model.addAttribute(Constants.COMMAND, users);
return new ModelAndView("updates");
}
/**
* 更新用户例子(put更新 一般用在web)
* @param users
* @return
*/
@RequestMapping(value="/{id}/updates",method=RequestMethod.PUT)
public ModelAndView after_put_UserUpdate(Users user){
usersService.update(user);
return new ModelAndView("redirect:../list");
}
/**
* 更新用户例子(post更新 一般用在client)
* @param users
* @return
*/
@RequestMapping(value="/{id}/updates",method=RequestMethod.POST)
public ModelAndView after_post_UserUpdate(Users user){
usersService.update(user);
AjaxResponse ajax = new AjaxResponse();
ajax.setSuccess(true);
ajax.setMessages("更新成功!");
return new ModelAndView("ajax","ajax",ajax);
}
/**
* 删除用户例子
* @param id
* @return
*/
@RequestMapping(value="/{id}/delete",method=RequestMethod.GET)
public ModelAndView UserDelete(@PathVariable String id){
usersService.delete(id);
AjaxResponse ajax = new AjaxResponse();
ajax.setSuccess(true);
ajax.setMessages("删除成功!");
return new ModelAndView("ajax","ajax",ajax);
}
/**
* 上传文件
* @param request
* @return
*/
@RequestMapping(value="/upload",method=RequestMethod.POST)
public ModelAndView Upload(@RequestParam("json") MultipartFile multi){
try {
byte[] bytes = multi.getBytes();
FileOutputStream out = new FileOutputStream("D:\\"+multi.getOriginalFilename());
out.write(bytes);
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
AjaxResponse ajax = new AjaxResponse();
ajax.setSuccess(true);
ajax.setMessages("文件上传成功!");
return new ModelAndView("ajax","ajax",ajax);
}
分享到:
相关推荐
综上所述,"android_springrestful工具包"旨在帮助开发者在Android应用中高效、稳定地使用Spring框架进行RESTful服务的开发和调用。通过熟练掌握这些知识点,开发者可以构建出强大且灵活的Android应用。
在本项目中,Spring Boot将作为后端的核心框架,用于提供RESTful API、数据持久化、安全控制等功能。Spring Boot与Spring Cloud结合,还可以实现微服务架构,提高系统的可扩展性和可维护性。 3. 全栈开发: 全栈...
1. **Spring Android REST Template**:这是Spring for Android的核心组件,它提供了处理RESTful API调用的简单方法。REST Template允许开发者以声明式的方式定义HTTP请求,并处理响应,极大地简化了网络数据的获取...
"基于SpringCloud与Vue前后端分离,分布式架构的在线测评平台OJ",这个标题揭示了该在线测评平台的核心技术栈。SpringCloud是微服务框架,用于构建分布式系统,Vue则是一个前端JavaScript框架,实现用户界面的交互。...
以下是一个简单的Spring RESTful JSON服务示例,展示如何保存一个对象: ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; ...
Spring for Android提供了`RestTemplate`类,用于简化与RESTful服务的交互。它可以处理HTTP请求,如GET、POST、PUT等,同时支持JSON、XML等多种数据格式的序列化和反序列化,使得与远程API的通信变得更加简单。 3....
在实际项目中,一个常见的流程可能是这样的:Android客户端通过RESTful API发送请求,Jersey接收并解析请求,然后调用由Spring管理的服务层方法,这些方法内部利用Hibernate与数据库进行交互。整个过程中,注解起到...
4. **Android REST Client**:Spring-android提供了对RESTful API的客户端支持,可以通过简单的API调用来处理HTTP请求,如GET、POST等,同时支持处理JSON和XML数据格式,简化了与服务器端的交互。 5. **Spring ...
这是一个基于Android、Java、MySQL和Vue.js技术栈构建的评论系统的源码项目。这个项目涵盖了移动应用开发和后端服务的多个重要知识点,下面将详细阐述这些技术在系统中的应用和相关概念。 首先,Android是Google...
《人人都玩开心网:Ext+JS+Android+SSH整合开发Web与移动SNS》这本书主要聚焦于构建社交网络服务(SNS)平台,通过结合多种技术实现Web端和移动端的应用开发。以下是书中涉及的主要知识点: 1. **EXT.JS**: EXT....
在众多的技术栈中,ExtJS、Android以及SSH(Struts2 + Spring + Hibernate)是构建高质量Web与移动应用的重要工具。本文将围绕“ExtJS+Android+SSH整合开发Web与移动SNS”这一主题展开讨论,旨在为开发者提供一种...
2. **框架**:例如 Spring Boot、Django、Express.js 等,提供了快速构建 RESTful 服务的能力。 3. **数据库**:MySQL、MongoDB、Redis 等可以作为数据存储。 4. **前端框架**:React、Vue.js 等可以与 RESTful API ...
Apache CXF是一个开源的Web服务框架,它支持SOAP、RESTful(基于HTTP的简单交互)以及多种协议。CXF使得开发和部署Web服务变得简单,它提供了全面的工具集,包括代码生成器、WS-*协议支持和强大的客户端API。 **WSS...
它提供了一种简单的API来创建和消费WebService,使得开发者可以快速地实现服务的发布和调用。 【Spring】:Spring是Java企业级应用开发中最广泛使用的框架之一,它提供了一个全面的编程和配置模型,简化了企业级...
**Spring MVC RESTful接口...以上就是关于Spring MVC实现RESTful接口和Android客户端进行测试的基本知识,这涵盖了从服务器端接口设计到客户端调用的整个流程。理解并掌握这些内容,有助于构建高效、灵活的分布式系统。
开发者可以从中学习到如何在Android中设计和实现UI,处理网络请求,以及在Java后端构建RESTful API,实现数据库操作。同时,了解如何在实际项目中应用这些技术,对于提升移动端和服务器端的开发能力有着重要的实践...
### JAVA+JSP+Servlet+Android+SSH视频教程全集+项目视频知识点解析 #### Java基础知识及应用 Java作为一门跨平台的高级编程语言,在软件开发领域占据着重要的地位。本教程将涵盖Java基础语法、面向对象编程(OOP)...
在构建Android互联网应用时,Spring框架的引入可以极大地提升应用的开发效率和可维护性。Spring,最初设计为Java企业级应用的框架,现在也扩展到了Android领域,提供了丰富的功能来帮助开发者处理网络通信、数据管理...
在本项目"Android-SpringBoot-MyBatis-RESTful-登录注册修改密码Demo"中,我们探讨了如何构建一个完整的后端与移动端交互的系统,涵盖了多种技术栈的使用,包括Android、SpringBoot、MyBatis以及RESTful API的设计。...
该项目是一个集成Android客户端和基于Spring框架...综上所述,这个项目涵盖了Android客户端开发、Spring框架的后端实现、MySQL数据库操作、RESTful API设计等多个关键知识点,是学习和实践移动互联网应用开发的好例子。