精华内容
下载资源
问答
  • Java通用接口响应封装类

    万次阅读 2020-01-14 00:42:07
    Java接口响应封装类 Web开发中,前后分离是个趋势,现在大部分公司研发部门已经在走前后分离的路子了,前后分离开发各司其职能够有效的提高工作效率和开发质量。 REST接口会返回各种各样的数据,如果对接口的格式不...

    Java接口响应封装类

    Web开发中,前后分离是个趋势,现在大部分公司研发部门已经在走前后分离的路子了,前后分离开发各司其职能够有效的提高工作效率和开发质量。

    REST接口会返回各种各样的数据,如果对接口的格式不加约束,很容易造成混乱。

    在实际项目中,一般会把结果放在一个封装类中,封装类中包含http状态值,状态消息,以及实际的数据。

    个人总结一下工作中用到的接口响应类。😃

    • 状态枚举,接口响应状态码、消息,统一在此枚举类中定义,方便阅读、修改。
    /**
     * 响应状态码枚举
     * @author liuyang
     * 2020-01-13
     */
    public enum CodeEnum {
    
        SUCCESS(0, "成功"),
        FAIL(1, "失败"),
        ;
    
        private final Integer code;
    
        private final String msg;
      // 省略枚举构造方法、get、set方法
    }
    
    • 数据响应基类,方便以后扩展子类,也可用于增、删、改相关接口响应。
    /**
     * 响应数据基类
     * @author liuyang
     * 2020-01-13
     */
    public class BaseResponse {
    
        /**
         * 状态码
         */
        private Integer code;
    
        /**
         * 响应消息
         */
        private String msg;
    
        protected BaseResponse() {}
    
        protected BaseResponse(CodeEnum code) {
            this.code = code.getCode();
            this.msg = code.getMsg();
        }
      // 省略get/set方法
    }
    
    • 响应数据体,继承自 BaseResponse 类,增加了 范型 属性,方便响应各种数据。
    /**
     * 响应数据体
     * @author liuyang
     * 2020-01-13
     */
    public class ResponseData<T> extends BaseResponse {
    
        /**
         * 数据
         */
        private T data;
    
        private ResponseData(CodeEnum code) {
            super(code);
        }
    
        private ResponseData(CodeEnum code, T data) {
            super(code);
            this.data = data;
        }
    
        /**
         * 对外开放基础响应体已供调用,可用于增、删、改接口操作
         */
        public static BaseResponse out(CodeEnum code) {
            return new BaseResponse(code);
        }
    
        /**
         * 对外开放数据响应体已供调用,可用于查询数据实用,引用了范型设计,支持各种数据类型
         */
        public static <T> ResponseData<T> out(CodeEnum code, T data) {
            return new ResponseData<>(code, data);
        }
      // 省略get/set方法
    }
    

    以上三个类足可以满足日常开发,顺带说一句,CodeEnum枚举类也可用于定义处于业务异常逻辑,比如:抛出用户不存在的异常,然后配合Spring MVC的 @ControllerAdvice注解,统一响应异常信息。(如果不明白,可在评论区说明,可以考虑再出一篇针对异常处理的文章)

    进入测试------------------------

    • 基础响应,此处模拟删除
    @GetMapping("/user/del/{userId}")
    public BaseResponse delUser(@PathVariable Integer userId) {
    	return ResponseData.out(CodeEnum.FAIL);
    }
    

    访问:localhost:8080/user/del/1

    响应:

    {
        "code": 1,
        "msg": "失败"
    }
    
    • 数据体响应,此处模拟用户列表
    @GetMapping("/user-info")
    public ResponseData<List<String>> userInfo() {
      List<String> list = new ArrayList<>();
      list.add(UUID.randomUUID().toString());
      list.add(UUID.randomUUID().toString());
      list.add(UUID.randomUUID().toString());
      list.add(UUID.randomUUID().toString());
      return ResponseData.out(CodeEnum.SUCCESS, list);
    }
    

    访问:localhost:8080/user-info

    响应:

    {
        "code": 0,
        "msg": "成功",
        "data": [
            "003252cf-3361-43c4-8fdc-b9091f83ea05",
            "6320cd96-ae04-4885-ac78-76241f19ac95",
            "34cdd394-97d4-4e7d-993f-e4688b86d0e0",
            "bd293a9e-465b-4796-b8fa-17fc37de9bf7"
        ]
    }
    

    以上,测试成功。

    PS:可在此基础上加入一些符合自己需要的属性,比如:响应时间戳、响应标识等等…

    展开全文
  • java封装类(wrapper类)

    万次阅读 2018-03-15 19:59:50
    封装类的构造器:1.对基本数据类型:Integer i=new Integer(10);2.对字符型:Integer i=new Integer("10");二.封装类的3种方法:1.valueOf();//静态方法,返回的是一个指定类型的封装类实例(目前jdk支持...
    一.封装类的构造器:
    1.对基本数据类型:Integer i=new Integer(10);

    2.对字符型:Integer i=new Integer("10");


    二.封装类的3种方法:

    1.valueOf();//静态方法,返回的是一个指定类型的封装类实例(目前jdk支持自动装箱与拆箱)
    2.***Value();//把封装类对象转化成基本数据类型的值

    3.parse***();//把String的对象转化成封装类对象


    三.几点补充

    1.关于valueOf,例如Integer i=Integer.valueOf("10010")其将字符串转化成Integer类型的对象
    2.关于parseInt,例如Integer a=Integer.parseInt("12");
    3.关于IntValue,
    例如:我们可以使用4种方法创建一个Integer的对象(装箱);
    <1>Integer a=new Integer("100");//在cmd命令下编译时提示使用或覆盖了过时的API,但是eclipse就没问题(貌似是系统不推荐用户显式使用)
    <2>Integer a=100;//但是实际是调用1的方法
    <3>Integer a=Integer.valueOf("100");//调用封装类的方法
    <4>Integer a=parseInt("100");


    *封装类的另一个的方法:***Value();
    例如:
    Integer a=100;

    int val=a.IntValue();//记得import java.lang.*;(拆箱)


    四.其他说明

    &关于Integer的对象i的i++操作:
    1.先对i拆箱->val=i.intValue();
    2.再实现val的自加->val++;
    3.再装箱->i=new Integer(val)




    &关于常量池的概念
    如果有:
    Integer a=new integer(50);//a=50;
    Integer b=new Integer(50);//b=50;
    System.out.println(a==b);


    输出:
    True


    按照常理来说a、b都用了new,应该占用不同的内存单元,但是常量池(-128~127)的存在是的a、b同指向池中的同一单元

    //Wrapper
    import java.lang.*;
    public class Main {
    	public static void main(String args[]) {
    		int a=1;
    		//Integer b = new Integer(a);
    		Integer c = Integer.valueOf(a);//valueOf()将基本数据类型转化为封装类
    		Integer d = Integer.parseInt("1");
    		int e = c.intValue();
    		System.out.println(e);
    	}
    }
    


    展开全文
  • 用Spring的邮件封装类JavaMailSenderImpl发送邮件

    万次阅读 热门讨论 2016-03-31 18:04:09
    JavaMailSenderImpl是spring封装的邮件发送封装类,支持普通文本、附件、html。博主今天用到了用qq邮箱发送普通文本,以后若用到了其他,再补充在下面。 用qq邮箱的smtp邮件服务器,前提之一是关闭登录保护,开启...

           JavaMailSenderImpl是spring封装的邮件发送封装类,支持普通文本、附件、html。博主今天用到了用qq邮箱发送普通文本,以后若用到了其他,再补充在下面。

    1.导入mail的包

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
    </dependency>

    2.邮箱服务器设置

    用qq邮箱的smtp邮件服务器,前提之一是关闭登录保护,开启邮箱登录保护,无法使用smtp服务。若开启了,前往安全中心关闭。

    前提之二是开启smtp服务,在邮箱的设置-账号设置-开启服务里查看是否开启了POP3/SMTP服务。开启之后,会显示一个授权码。此授权码作为发件方的密码,qq邮箱可能作为安全考虑,防止邮箱密码泄露。

     修改邮箱密码之后,授权码会失效,要想获取新的授权码,开启服务的下方点击生成授权码链接,即可得到新的16位授权码。

    上面的前提步骤满足后,JavaMailSenderImpl就能正常使用。

    创建邮件服务器的时候,注意端口号不需要设置,邮件服务器会访问默认端口。博主试过加上端口号反而邮件发不出去,不加端口号却能正常发送。

    3.发送邮件关键代码

    	public void simpleMailSend(String email,String subject,String msg) {
    	 //创建邮件发送服务器
            JavaMailSenderImpl mailSender = new JavaMailSenderImpl();  
            mailSender.setHost("smtp.qq.com");
    //      mailSender.setPort(465);
            mailSender.setUsername("2118724165@qq.com");
            mailSender.setPassword("");
            //加认证机制
            Properties javaMailProperties = new Properties();
        	javaMailProperties.put("mail.smtp.auth", true); 
        	javaMailProperties.put("mail.smtp.starttls.enable", true); 
        	javaMailProperties.put("mail.smtp.timeout", 5000); 
            mailSender.setJavaMailProperties(javaMailProperties);
            //创建邮件内容
            SimpleMailMessage message=new SimpleMailMessage();
            message.setFrom("2118724165@qq.com");
            message.setTo(email);
            message.setSubject(subject);
            message.setText(msg);
            //发送邮件
            mailSender.send(message);
    	}

    JavaMailSenderImpl的几个属性设置说明如下:

    Host:邮箱服务器主机。

    Port:端口号。

    Username:发件方账户。

    Password:密码,qq邮箱的话此处设置16位授权码,不是邮箱密码,切记!

    mail.smtp.auth:认证机制开关,记得开启。

    mail.smtp.starttls.enable:TLS通讯协议开关,连接qq的SMTP服务器,需使用此通讯协议。

    mail.smtp.timeout :连接超时时间,单位毫秒。

    发送文本消息用SimpleMailMessage类

    它的几个重要属性说明如下:

    From发件方的账户,和Username的值相同

    To收件方

    Subject邮件主题

    Text邮件内容

    展开全文
  • Java数据封装类

    千次阅读 2017-07-27 17:21:45
    用户前端与后台的交互数据,这个封装类中包含分页、数据、错误码、状态码等信息!! 亲测好用哦!一个类DataWrapperpublic class DataWrapper<T>{ private CallStatusEnum callStatus; private ErrorCodeEnum ...

    项目中用到,比较好用!!
    用户前端与后台的交互数据,这个封装类中包含分页、数据、错误码、状态码等信息!!
    亲测好用哦!

    一个类DataWrapper

    public class DataWrapper<T>{
        private CallStatusEnum callStatus;
        private ErrorCodeEnum errorCode;
        private T data;
        private int numberPerPage; // 用于分页结果
        private int currentPage;
        private int totalNumber;
        private int totalPage;
        private String message ;
        private String recordUpdateTime ; //redis数据插入时间
    
        public DataWrapper() {
            callStatus = CallStatusEnum.SUCCEED;
            errorCode = ErrorCodeEnum.No_Error;
        }
    
        public static <T> DataWrapper<T> createInstance(){
            return new DataWrapper<T>() ;
        }
    
        public CallStatusEnum getCallStatus() {
            return callStatus;
        }
    
        public DataWrapper<T> setCallStatus(CallStatusEnum callStatus) {
            this.callStatus = callStatus;
            return this ; 
        }
    
        public ErrorCodeEnum getErrorCode() {
            return errorCode;
        }
    
        public void setErrorCode(ErrorCodeEnum errorCode) {
            this.errorCode = errorCode;
            if (!errorCode.equals(ErrorCodeEnum.No_Error)) {
                this.callStatus = CallStatusEnum.FAILED;
            }
        }
    
        public T getData() {
            return data;
        }
    
        public DataWrapper<T> setData(T data) {
            this.data = data;
            return this ;
        }
    
    
        public int getNumberPerPage() {
            return numberPerPage;
        }
    
        public void setNumberPerPage(int numberPerPage) {
            this.numberPerPage = numberPerPage;
        }
    
        public int getCurrentPage() {
            return currentPage;
        }
    
        public void setCurrentPage(int currentPage) {
            this.currentPage = currentPage;
        }
    
        public int getTotalNumber() {
            return totalNumber;
        }
    
        public void setTotalNumber(int totalNumber) {
            this.totalNumber = totalNumber;
        }
    
        public int getTotalPage() {
            return totalPage;
        }
    
        public void setTotalPage(int totalPage) {
            this.totalPage = totalPage;
        }
    
        public String getMessage() {
            return message;
        }
    
        public DataWrapper<T> setMessage(String message) {
            this.message = message;
            return this ;
        }
    
        public String getRecordUpdateTime() {
            return recordUpdateTime;
        }
    
        public DataWrapper<T>  setRecordUpdateTime(String recordUpdateTime) {
            this.recordUpdateTime = recordUpdateTime;
            return this ;
        }
    
        @Override
        public String toString() {
            return  JSONObject.toJSONString(this) ;
        }
    }

    两个枚举CallStatusEnum、ErrorCodeEnum

    public enum CallStatusEnum implements Serializable {
        SUCCEED,
        FAILED,;
    
        CallStatusEnum() {
        }
    }
    public enum ErrorCodeEnum implements Serializable {
        No_Error("No ERROE!", 0),
        Error("Unknown error!", 1),
        NO_SUCH_USER("Can't find username",2),
        IncorrectCredentials("IncorrectCredentialsException",3),
        LoginFailed("AuthenticationException",4),
        USER_EXIST("User already exist in db",5),
        PASSWORD_ERROR("Error is password",6),
        REGISTER_FAILED("Register failed",7),
        PARSE_DATE("Parse  Date error",8),
        ExcessiveAttempts("Try password more than 5 times",9) ,
        NO_ROLE("User has no role!" , 10) ,
        USER_STATE_ERROR("User state error! Disable Login" , 11),
        USER_IDENTITY_ERROR("User Identity error! Disable Login" , 12),
        DB_ERROR("database maybe error!" , 13) ,
        WEB_SP_ERROR("from webSp maybe error!" , 14) ,
        MFA_VERIFY_ERROR("mfa verify random code error!" , 15) ,
        MFA_SEND_ERROR("mfa send random code error!" , 16) ,
        MFA_SEND_EXCESSIVE("ask send random code excessive!" , 17),
        PHONE_NUMBER_ERROR("phone number is empty or error!" , 18),
        IMAGECODE_ERROR("image code error" , 19),
        VERIFYCODE_ERROR("telephone verify code incorrect",20);
    
        private String label;
        private Integer code;
    
        ErrorCodeEnum() {
        }
    
        ErrorCodeEnum(String label, Integer code) {
            this.label = label;
            this.code = code;
        }
    
        public String getLabel() {
            return label;
        }
    
        public void setLabel(String label) {
            this.label = label;
        }
    
        public int getCode() {
            return code;
        }
    
        @Override
        public String toString() {
            return code.toString();
        }
    
        public static ErrorCodeEnum parse(int code) {
            for (ErrorCodeEnum theEnum : ErrorCodeEnum.values()) {
                if (theEnum.getCode() == code) {
                    return theEnum;
                }
            }
            return No_Error;
        }
    }
    展开全文
  • [Java]封装类

    千次阅读 2019-06-13 18:49:04
    python中的int这样的数据类型已经是类的情况下,老牌...而是另外开辟炉灶,创建创建了一一对应的封装类实现 基本数据类型 封装类 构造方法1 构造方法2 int Integer Integer(int value) Intege...
  • java_封装类

    千次阅读 2018-09-10 19:15:50
    基本数据类型的封装类   序号 基本类型 封装类型 描述 1 byte Byte 字节型(-128~127) 2 short ...
  • response返回封装类

    千次阅读 2018-10-23 11:31:36
    response返回封装类 ServerResponse public class ServerResponse&lt;T&gt; implements Serializable { private int status; private String msg; private T data; private ServerResponse(int status) {...
  • JS封装类

    千次阅读 2014-07-03 17:06:13
    JS封装类或对象的最佳方案    面向对象强大的优点之一是能够创建自己专用的类或者对象,封装一组属性和行为。抛开性能来说,JS要比面向对象语言如JAVA要灵活好用的多,组装数据结构很灵活方便。那么我们如何...
  • 封装类和基本类型

    千次阅读 2018-11-11 21:37:00
    封装类和基本类型最大的区别就是:封装类可以调用属性和方法,而基本类型不能。 可以通过封装类实现把String类型转换成需要的基本类型。 例如: public static void a() { int a2 = Integer.parseInt(&amp;...
  • public class TestInteger{ /*知识点:封装类,自动装箱与自动拆箱,数据池*/ public static void main(String []args){ //实验1 int a=128; int b=128; System.out.println(a==b); //实验2
  • MySQL-C++封装类

    千次阅读 2017-01-24 22:10:54
    MySQL-C++封装类
  • Java - 封装类

    千次阅读 2013-08-20 14:32:55
    基本数据类型 封装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 基本概念 封装类功能 将基本数据类型封装当对
  • Android工具类之Gson封装类

    千次阅读 2015-09-21 10:46:22
    让JSON操作变得简单的 Gson 封装类 import java.util.List; import java.util.Map;import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class GsonUtil { private static Gson gson = ...
  • memcached 的c++封装类

    2015-03-06 01:09:16
    谁有memcached的c++封装类啊!能否给我一个呢?感谢!
  • springboot返回数据封装类

    千次阅读 2018-12-25 22:21:32
    封装类的代码实现 package com.example.demo.model; public class AjaxResult &lt;T&gt; { private static final int CODE_SUCCESS = 200; private static final int CODE_FAIL = 400; private ...
  • java 为什么要用封装类

    千次阅读 2017-05-20 10:34:28
    在网上看了很对人对基本类型提供封装类的说法。 我的理解就是:提供封装类是为了更好的对数据基本类型进行操作, 比如类型转换:不用封装类》》 int a=0; String result=Integer.toString(a); 用封装类: ...
  • ADO封装类详解

    千次阅读 2012-03-23 20:27:31
    用ADO编程有时候总觉得太...这个版本的ADO封装类一共有CConnection,CRecordset,CCommand三个类。这三个类是别人封装的,我觉得封装的还是比较好的。可以到点击打开链接下载。       CConnection类 数据成员
  • Java jdbc连接mysql 封装类

    千次阅读 2019-05-26 15:50:24
    Java jdbc连接mysql 封装类 开发工具与关键技术:java、 myelipse2017、jdk1.8 作者:Amewin 撰写时间:2019年5月26日 JDBC简介: JDBC全称为java database connectivity,是sun公司指定的java数据库连接技术的...
  • FFMPEG的C++封装类

    千次阅读 2016-03-13 18:14:52
    又看了JUVRTMPClient 这种漂亮的封装,就想做点事情,给FFMPEG做一个C++封装类。 定义 CFFMpeg 封装ffmpeg的初始化,打开流等操作。它包含 OpenInput 打开流 FindAV 查找Audio和Video流并获取相应的解码器 ...
  • SpringBoot 返回的参数封装类

    千次阅读 2018-10-16 10:54:15
    * 返回的参数封装类 */ public class APIResponse &lt;T&gt; { private static final String CODE_SUCCESS = "success"; private static final String CODE_FAIL = "fail"; ...
  • Java基本数据对应的封装类

    千次阅读 2014-02-24 14:11:09
    Java基本数据对应的封装类 在java中一切都是以类为基础的,并且java对基本的数据类型也进行了封装,如下所示,将介绍几个基本的数据类型及其封装类: 1 Boolean VS boolean public final class ...
  • Android Okhttp3了解及封装类使用

    千次阅读 2017-10-12 11:22:34
    Android Okhttp3了解及封装类使用
  • 3.1基本类型的封装类 1.封装类 Java语言认为一切皆为对象。 8个基本数据类型也应该具备对应的对象。 通过封装类可以把8个基本类型的值封装成对象进行使用。 从JDK1.5开始,java允许将基本类型的值直接赋值给...
  • Dll中封装类

    千次阅读 2012-01-04 17:40:58
    在DLL中封装类,如果要在外面调用其对象的话,要通过一个函数来返回该对象的值,创建过程和平时一样!   一、实验环境  本实例的编程工具及运行环境为:Windowsxp,visual studio 2008,Delphi 7 二、实验内容...
  • 一个对于UIAlertController的封装类,支持自定义 . 在项目中会用到提醒框,每次都是重复的代码,尤其是简单的提醒,更是重复工作.做了一个对UIAlertController的封装类,如果简单的提醒,仅仅在初始化show即可,iOS8中主推...
  • Integer是一个类,是int的封装类。 int是基本数据类型。 Integer就是把一个int类型的封装成一个类。 就可以用Integer打点来调用方法。       java提供了一组基本数据类型,包括boolean, byte, cha...
  • C#连接MySQL数据库的封装类

    千次阅读 2015-08-27 22:29:39
    C#连接MySQL数据库的封装类
  • freemarker获取封装类中对象的属性

    万次阅读 2014-05-27 22:16:14
    freemarker获取封装类中对象的属性 1、设计思路 (1)封装学生类 (2)创建数据模型 (3)新建student.ftl (4)运行Junit测试文件,生成HTML文件 2、封装学生类 Student.java: /** * @Title:Student.java *...
  • TCP SOCKET封装类

    千次阅读 2013-01-14 22:57:30
    聊天工具开发过程中,涉及到P2P技术。...书中简单介绍了TCP SOCKET操作的封装类,详细代码如下: TCPSocket.h // TCPSocket.h: interface for the CTCPSocket class. // /////////////////
  • 常用的JDBC封装类DBHelper

    千次阅读 2016-07-03 12:42:59
    常用的JDBC封装类DBHelperpackage com.yang;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,410
精华内容 69,764
关键字:

封装类