[置顶] java web开发(五) 接口开发补坑2
2017-08-07 13:56
609 查看
这里主要是接上篇java web开发(四) 接口开发补坑1文章的。如果你还未了解接口开发方面的文章,请先看这篇文章,
java web开发(二) 接口开发!今天这篇文章继续来细说,demo项目中的代码!
一、cn.xinxing.json 这个包中是处理有关json操作的。博文中留言有关响应状态码问题的小伙伴们,请仔细看这部分!
1.1 .cn.xinxing.json.core 这个包中定义了响应对象。下面具体看看这几个类。
1.1.1 AbstractJsonObject 这个类是所有响应对象的基类,定义了响应状态码、响应状态描述以及时间戳!
1.1.2 SingleObject ,这个对象中定了一个对象。主要是用来在返回单个对象时使用!
1.1.3 ListObject,这个对象中定了一个列表对象。是用来返回列表对象!
这里我只给出了以上这两种返回结果!当然还有其他的返回结果,例如分页形式的!这些规则都需要在项目开发时制定好,在开发时,才会顺利便捷!
1.2 cn.xinxing.json.responseUtils 这个包中是响应处理,有一个类ResponseUtils,看具体实现,
1.3 cn.xinxing.json.status 这个包定义响应状态有关的。
1.3.1 StatusCode ,定义响应状态码
1.3.2 StatusHouse,将code和msg组装到一起,在使用时更加方便!
1.4.1 JackJsonUtils ,因为项目中使用的是jackjson来处理json。
好了,有关响应以及json这么多。有疑问的,请多看几遍!
二、cn.xinxing.model 这个包定义实体类。只有一个Students类,类中定义了几个属性,以及实现了get()和set()方法。此处就不展开了!
三、 cn.xinxing.service.student 定义一个服务层,用于提供数据以及封装下层实现。
3.1 StudentService 这是接口,定义了获取学生数据相关的方法。
3.2 cn.xinxing.service.student.impl 这个包实现了上文中定义的接口,只有一个实现类StudentServiceImpl ,看具体实现,
至此,项目中的全部代码都已经展示完了!相信仔细阅读这两篇文章后,大家应该对java web 接口开发有了更深的了解!如果,还有其他疑问,欢迎指出!
最后补上,例子下载地址。
PS: 这里还想再多说几句!java接口开发,这个在正式项目中,需要涉及很多方面的知识,例如,数据库使用框架来维护,整个服务部署至云服务上等等!想要掌握这些东西,需要花费很多的时间和精力!我自己是一直做Android应用,接口开发是自己的自学的。java 接口开发这几篇博文呢,都只是初级的入门级的,在正式项目中呢,肯定不能这样做。目前的还有需要学习很多东西,希望和大家一块学习!
java web开发(二) 接口开发!今天这篇文章继续来细说,demo项目中的代码!
一、cn.xinxing.json 这个包中是处理有关json操作的。博文中留言有关响应状态码问题的小伙伴们,请仔细看这部分!
1.1 .cn.xinxing.json.core 这个包中定义了响应对象。下面具体看看这几个类。
1.1.1 AbstractJsonObject 这个类是所有响应对象的基类,定义了响应状态码、响应状态描述以及时间戳!
package cn.xinxing.json.core; import java.util.Date; import cn.xinxing.json.status.StatusObject; /** * 响应基类 */ public class AbstractJsonObject { private String code;//响应状态码 // private String msg;//响应状态描述 private Long time = new Date().getTime();//时间戳 public String getCode() { return code; } public void setCode(String code) { this.code = code; } /** * @return the time */ public Long getTime() { return time; } /** * @param time * the time to set */ public void setTime(Long time) { this.time = time; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public void setContent(String code, String msg) { this.code = code; this.msg = msg; } public void setStatusObject(StatusObject statusObject) { this.code = statusObject.getCode(); this.msg = statusObject.getMsg(); } }其中 code 是响应状态码,msg是响应状态描述,time 是时间戳。code之前也一直提到过,这里再次强调,code的值是项目中接口的运行状态!例如当接口运行运行成功,会设置code为‘ok’。具体code值是多少,这个要接口自己定义一个规范,当调用者拿到这个code时,就知道如何处理了!下面会给出这个项目中定义的code!
1.1.2 SingleObject ,这个对象中定了一个对象。主要是用来在返回单个对象时使用!
package cn.xinxing.json.core; /** *单个对象 */ public class SingleObject extends AbstractJsonObject { private Object object;//单个对象 public Object getObject() { return object; } public void setObject(Object object) { this.object = object; } }当响应的内容是一个对象时,就定义这个SingleObject类,将对象设置给SingleObject类,然后返回SingleObject即可!
1.1.3 ListObject,这个对象中定了一个列表对象。是用来返回列表对象!
package cn.xinxing.json.core; import java.util.List; /** * 列表对象 */ public class ListObject extends AbstractJsonObject { private List<?> items;// 列表对象 public List<?> getItems() { return items; } public void setItems(List<?> items) { this.items = items; } }当响应的内容是一个列表时,我们就可以使用这个ListObject,将列表放置到items属性中,然后返回ListObject就可以了!
这里我只给出了以上这两种返回结果!当然还有其他的返回结果,例如分页形式的!这些规则都需要在项目开发时制定好,在开发时,才会顺利便捷!
1.2 cn.xinxing.json.responseUtils 这个包中是响应处理,有一个类ResponseUtils,看具体实现,
package cn.xinxing.json.responseUtils; import java.io.IOException; import javax.servlet.http.HttpServletResponse; /** * 响应处理 */ public class ResponseUtils { /** * 返回json 串 * * @param response * @param text */ public static void renderJson(HttpServletResponse response, String text) { // System.out.print(text); render(response, "text/plain;charset=UTF-8", text); } /** * 发送内容。使用UTF-8编码。 * * @param response * @param contentType * @param text */ public static void render(HttpServletResponse response, String contentType, String text) { response.setContentType(contentType); response.setCharacterEncoding("utf-8"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); try { response.getWriter().write(text); } catch (IOException e) { } } }将结果串设置到response中,返回给调用者!
1.3 cn.xinxing.json.status 这个包定义响应状态有关的。
1.3.1 StatusCode ,定义响应状态码
package cn.xinxing.json.status; /** * * 返回code */ public class StatusCode { public static String CODE_SUCCESS = "ok";//访问成功 public static String CODE_ERROR = "0001"; //访问错误 public static String CODE_ERROR_PARAMETER = "0002";//参数错误 public static String CODE_ERROR_PROGRAM = "0003";//程序异常 public static String CODE_ERROR_NO_LOGIN_OR_TIMEOUT = "0004";//未登录或登录超时,请重新登录 public static String CODE_ERROR_EXIST_OPERATION = "0005";//已操作 }这个类中定义了接口中使用到的所有响应状态码。具体的定义规则,都是开发者定义的!没有什么标准规范!
1.3.2 StatusHouse,将code和msg组装到一起,在使用时更加方便!
package cn.xinxing.json.status; /** * 状态封装类 * 将code和msg组合到一起,方便使用 */ public class StatusHouse { public static StatusObject COMMON_STATUS_OK = new StatusObject(StatusCode.CODE_SUCCESS, "访问成功"); public static StatusObject COMMON_STATUS_ERROR = new StatusObject(StatusCode.CODE_ERROR, "访问错误,错误码:(" + StatusCode.CODE_ERROR + ")"); public static StatusObject COMMON_STATUS_NO_LOGIN_OR_TIMEOUT = new StatusObject(StatusCode.CODE_ERROR_NO_LOGIN_OR_TIMEOUT, "未登录或登录超时,请重新登录,错误码:(" + StatusCode.CODE_ERROR_NO_LOGIN_OR_TIMEOUT + ")"); public static StatusObject COMMON_STATUS_ERROR_PROGRAM = new StatusObject(StatusCode.CODE_ERROR_PROGRAM, "程序异常,错误码:(" + StatusCode.CODE_ERROR_PROGRAM + ")"); public static StatusObject COMMON_STATUS_ERROR_PARAMETER = new StatusObject(StatusCode.CODE_ERROR_PARAMETER, "参数错误,错误码:(" + StatusCode.CODE_ERROR_PARAMETER + ")"); public static StatusObject COMMON_STATUS_EXIST_OPERATION = new StatusObject(StatusCode.CODE_ERROR_EXIST_OPERATION, "已操作,错误码:(" + StatusCode.CODE_ERROR_EXIST_OPERATION + ")"); }1.3.3 StatusObject 定义了拥有code和msg属性的对象,在上面的StatusHouse类中使用到!
package cn.xinxing.json.status; /** * 状态对象 */ public class StatusObject { // 状态码 private String code; // 状态信息 private String msg; public StatusObject(String code, String msg) { super(); this.code = code; this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }1.4 cn.xinxing.json.utils 这个包是有关json解析的,只有一个JackJsonUtils 类。
1.4.1 JackJsonUtils ,因为项目中使用的是jackjson来处理json。
package cn.xinxing.json.utils; import com.fasterxml.jackson.databind.ObjectMapper; /** * jackjson */ public class JackJsonUtils { static ObjectMapper objectMapper; /** * 解析json * * @param content * @param valueType * @return */ public static <T> T fromJson(String content, Class<T> valueType) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { return objectMapper.readValue(content, valueType); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 生成json * * @param object * @return */ public static String toJson(Object object) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { return objectMapper.writeValueAsString(object); } catch (Exception e) { e.printStackTrace(); } return null; } }这个类有两个方法,fromJson()和toJson(),他们分别是解析json和生成json字符串的!
好了,有关响应以及json这么多。有疑问的,请多看几遍!
二、cn.xinxing.model 这个包定义实体类。只有一个Students类,类中定义了几个属性,以及实现了get()和set()方法。此处就不展开了!
三、 cn.xinxing.service.student 定义一个服务层,用于提供数据以及封装下层实现。
3.1 StudentService 这是接口,定义了获取学生数据相关的方法。
package cn.xinxing.service.student; import java.util.List; import cn.xinxing.model.Students; /** * 获取学生数据接口 */ public interface StudentService { public List<Students> getAllStudents();//获取所有的学生数据 }
3.2 cn.xinxing.service.student.impl 这个包实现了上文中定义的接口,只有一个实现类StudentServiceImpl ,看具体实现,
package cn.xinxing.service.student.impl; import java.util.List; import cn.xinxing.business.StudentBusiness; import cn.xinxing.model.Students; import cn.xinxing.service.student.StudentService; /** * 接口实现 */ public class StudentServiceImpl implements StudentService{ @Override public List<Students> getAllStudents() { // TODO Auto-generated method stub return StudentBusiness.getAllStudents(); //调用具体的获取学生数据方法 } }getAllStudents()方法只是调用了其他地方的获取数据的方法。这个地方就是这么简单!
至此,项目中的全部代码都已经展示完了!相信仔细阅读这两篇文章后,大家应该对java web 接口开发有了更深的了解!如果,还有其他疑问,欢迎指出!
最后补上,例子下载地址。
PS: 这里还想再多说几句!java接口开发,这个在正式项目中,需要涉及很多方面的知识,例如,数据库使用框架来维护,整个服务部署至云服务上等等!想要掌握这些东西,需要花费很多的时间和精力!我自己是一直做Android应用,接口开发是自己的自学的。java 接口开发这几篇博文呢,都只是初级的入门级的,在正式项目中呢,肯定不能这样做。目前的还有需要学习很多东西,希望和大家一块学习!
相关文章推荐
- [置顶] java web开发(四) 接口开发补坑1
- [置顶] Java WebService接口生成和调用 图文详解
- java web开发(四) 接口开发补坑1
- java webservice接口开发
- [置顶] 微信JSSDK开发(分享接口和上传图片接口)
- java web开发(五) 接口开发补坑2
- [置顶] iOS流媒体开发之一:总结系统提供的接口
- java web开发(二) 接口开发
- [置顶] Java Web 应用开发技术概述
- [置顶] 微信小程序支付demo, php开发小程序支付接口实例
- [置顶] 【python 接口开发】如何用python开发自己的接口
- [置顶] SpringMVC 开发接口
- 如何在java Web项目中开发WebService接口
- [置顶] 微信公众号开发---微信接口素材管理
- JAVA WEB接口开发简述
- [置顶] java web开发(一) 环境搭建
- 微信公众平台开发(一) 配置接口
- [置顶] ios开发常用技巧汇总 + 小功能代码
- Java Web开发3___Servlet与JSP的区别