Java后台接口开发实战演练
文章目录
- 前言
- 实战演练
- POST请求
- GET请求
- 接收PC端上传文件
- 接收Android端上传文件
- 问题
- 源码
前言
作为一名普通的Android开发者,想要独立开发一个App,最头疼的地方在于后台接口没人写,正常来说会有以下两种解决方案:
- 用第三方服务
- 自己搭建服务器
第一种方案我之前试过,使用的是bmob后端云,还别说,当时用的还挺顺手,以致于最后成功的把我的App上架到应用市场,然鹅,好景不长,慢慢的,bmob开始各种收费了,一个是短信没法正常使用,后来我换成了mob的短信SDK,觉得用着不顺手,又换回了bmob的邮件登陆,再后来邮件又收费了,直到最后图片服务无法使用才导致我不想再用第三方服务,改为自己搭建服务
以上是背景介绍,下面进入实战
实战演练
这是一个java webapp项目,以下是开发环境
开发工具:intellij idea ultimate 2018.1
数据库:mysql 5.7.19
服务器:tomcat 7.0.75
开发框架:springmvc + mybatis
以下只放出一些关键代码,这些代码都是经过本人实际测试成功的,详细源码可移步文末的github链接查看
POST请求
代码:
/*** 用户登陆,Post方式** @param param* @return*/@RequestMapping(value = "login", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> login(@RequestParam("param") String param) {out.println("welcome to login on post,param=" + param);ObjectMapper objectMapper = new ObjectMapper(); //转换器Map<String, Object> map = new HashMap<>();try {LoginBean loginBean = objectMapper.readValue(param, LoginBean.class); //json转换成mapResultBean result = onLogin(loginBean.getName(), loginBean.getPassword());out.println("result==>" + result);map.put("code", result.getCode());map.put("reason", result.getReason());map.put("success", result.isSuccess());} catch (IOException e) {e.printStackTrace();}return map;}
模拟post请求测试地址:http://coolaf.com/
此处我把本地的localhost通过内网穿透转换成一个外网地址,这样方便调用,具体如何调用可参考 Java web项目使用【内网穿透】来实现对外访问
测试效果如下:
数据库记录
GET请求
代码:
/*** 获取数据库中的列表,get方式** @return*/@RequestMapping(value = "userList", method = RequestMethod.GET)@ResponseBodypublic Map<String, Object> userList() {out.println("welcome to userList");Map<String, Object> map = new HashMap<>();ResultBean result = onUserList();out.println("result==>" + result);map.put("code", result.getCode());map.put("reason", result.getReason());map.put("success", result.isSuccess());map.put("records", result.getRecords());return map;}
截图效果:
接收PC端上传文件
Spring MVC文件上传教程 commons-io/commons-uploadfile
@RequestMapping(value = "/do", method = RequestMethod.POST)public String uploadDo(HttpServletRequest request, Model model, @RequestParam("file") MultipartFile[] files) {//获取目录/创建路径
// String uploadRootPath = request.getServletContext().getRealPath("upload");String uploadRootPath = "/Users/liuxunming/Documents/AppService/Images/";//获取路径File uploadRootDir = new File(uploadRootPath);if (!uploadRootDir.exists()) {uploadRootDir.mkdirs();}//用来存放上传后的路径地址的变量List<File> uploadFiles = new ArrayList<File>();for (int i = 0; i < files.length; i++) {MultipartFile file = files[i];//原文件名String name = file.getOriginalFilename();System.out.print(name);if (name != null && name.length() > 0) {try {//获取文件字节流byte[] bytes = file.getBytes();//新文件路径File serverFile = new File(uploadRootDir.getAbsolutePath() + File.separator + name);//将文件字节流输出到刚创建的文件上BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));stream.write(bytes);stream.close();//将文件路径添加到uploadFiles中uploadFiles.add(serverFile);System.out.println(serverFile);} catch (IOException e) {// TODO Auto-generated catch block//e.printStackTrace();System.out.println("error to file:" + name);}}}model.addAttribute("uploadFiles", uploadFiles);return "uploadResult";}
接收Android端上传文件
springmvc服务端+android客户端的文件上传,此参考博文中不仅包括java端接收上传的代码,还包括Android端上传文件的代码
/*** 手机端上传文件* */@Resourceprivate MobileResult mobileResult;@RequestMapping("/mobile/uploadfile")@ResponseBodypublic MobileResult uploadPhone(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request)throws IllegalStateException, IOException {String path = uploadFile(file, request);mobileResult.setCode("200");mobileResult.setPath(path);mobileResult.setMessage("上传成功");return mobileResult;}private String uploadFile(MultipartFile file, HttpServletRequest request) throws IOException {// String path = request.getSession().getServletContext().getRealPath("upload");String path = "/Users/liuxunming/Documents/AppService/Images/";String fileName = file.getOriginalFilename();File targetFile = new File(path, fileName);if (!targetFile.exists()) {targetFile.mkdirs();}file.transferTo(targetFile);return targetFile.getAbsolutePath();}
问题
1、把项目代码导入到Intelj Idea里无法正常运行,一堆报错,都是程序包xxx不存在,根本原因就是maven本地库的配置有误
这里的local repository的目录一定要选择实际存在的,笔者之前是填的E:/MavenRepository,然而其实mac上根本没有E盘,后来直接改成默认的就好了
源码
https://github.com/xmliu/app-service-demo
各位在对该源码测试运行时,如果有什么问题,欢迎在博文留下评论或者在github提出issue
Java后台接口开发实战演练相关推荐
- AliPay - Java支付宝接口开发(三)
一.前言 AliPay - Java支付宝接口开发(一) AliPay - Java支付宝接口开发(二) 二.支付宝沙箱环境集成Web项目 1.将支付宝Demo中的相关文件复制到我们的项目中 1.1 ...
- Java后台项目开发规范
Java后台项目开发规范 写在前边 1.目标 2. 原则 一.命名规范 1.包命名规范 2.类命名规范[**UpperCamelCase命名法**] 2.1==如果在模块或者接口,类,方法中使用了设计 ...
- 分享一个JAVA专业接口开发利器,牛牛牛新鲜出炉!!!
分享一个JAVA专业接口开发利器,集成在线接口文档 Swagger-ui,采用Jwt Token验证机制,最牛在于业务restful接口代码自动生成,更更牛的在接口可以做细化权限控制(例如:不同开发商 ...
- java小程序详解_微信小程序登录Java后台接口(详解,附示例代码)
首先看一下官方文档 地址:微信小程序官方文档API登录接口 我们先对官方给的时序图进行简单的分析 1.当小程序调用wx.login()时,会获得一个code(临时登录凭证),然后我们需要用wx.req ...
- 亚马逊电商数据自动化管理接口平台JAVA SP-API接口开发(下)
亚马逊电商数据自动化管理接口平台JAVA SP-API接口开发(下) 重要说明 本文章为亚马逊系列其中的一篇,具体详见 主页 中亚马逊分类 该系列项目均为[CSDN轻夏]原创,未经允许禁止转载 如有疑 ...
- 亚马逊电商数据自动化管理接口平台JAVA SP-API接口开发(中)
亚马逊电商数据自动化管理接口平台JAVA SP-API接口开发(中) 重要说明 本文章为亚马逊系列其中的一篇,具体详见 主页 中亚马逊分类 该系列项目均为[CSDN轻夏]原创,未经允许禁止转载 如有疑 ...
- 微信小程序登录Java后台接口
微信小程序登录java后台接口 首先看一下微信小程序的开发文档: 微信小程序开发文档 步骤: 小程序端向微信接口服务发送请求--wx.login():获取到登录临时凭证code 小程序端拿着获取到的c ...
- java微信接口开发java SpringMVC mybatis 后台框架
获取[下载地址] QQ: 313596790 [免费支持更新] 支持三大数据库 mysql oracle sqlsever 更专业.更强悍.适合不同用户群体 [ 新录针对本系统的视频教 ...
- 基于SpringBoot+Vue开发的前后端分离博客项目-Java后端接口开发
文章目录 1. 前言 2. 新建Springboot项目 3. 整合mybatis plus 第一步:导依赖 第二步:写配置文件 第三步:mapper扫描+分页插件 第四步:代码生成配置 第五步:执行 ...
- java 微信自定义菜单 java微信接口开发 公众平台 SSM
1. 权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限 角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限. 按钮权限: 给角色分配按钮权 ...
最新文章
- 基于图像的三维模型重建——相机模型与对极几何
- 一张图看Windows Store有多混乱 微软现在开始整治
- Oracle11g创建表空间
- 22_2D函数优化实例
- 关于百度地图 BMap.InfoWindow 只显示最后一条信息解决方法
- 软件测试 学习之路 linux 基础命令 (三)
- IPC 进程间通信方式——管道
- 5月16日亮相!华硕ZenFone 6新旗舰曝光:无刘海全面屏加持
- MongoDB 复制集节点增加移除及节点属性配置
- php漏洞书籍,PHP漏洞全解(一)-PHP网站的安全性问题
- Python + ElasticSearch:有了这个超级武器,你也可以报名参加诗词大会了!
- 网管警惕:能突破网关限制的七大软件(转)
- 怎么打开优酷的kux格式?教你把kux转换成mp4的方法
- 贪心科技机器学习训练营(九)
- 调用Android原生裁剪方式裁剪图片并保存
- Github年度百大框架排行榜
- PDF文件如何修改,PDF如何旋转页面方向
- 测试iphone硬件好坏的软件,如何检测Apple手机硬件是否损坏
- 重磅!22张深度学习精炼图笔记总结!
- Android10的GPU呈现模式分析在哪?