当前位置: 首页 > news >正文

云南城乡建设厅网站苏州建设工程信息网站

云南城乡建设厅网站,苏州建设工程信息网站,外贸wordpress模板,3d溜溜网装修效果图目录 一. 案例1二. 案例2三. 案例3四. 案例4 枚举类聚合封装消息 一. 案例1 涉及到EnumMap的实际使用 ⏹定义一个枚举类,用来表示日本的各种支付方法对应的code import com.fasterxml.jackson.annotation.JsonFormat;// 让jackson将前台的数据封装数据到枚举类中 J…

目录

  • 一. 案例1
  • 二. 案例2
  • 三. 案例3
  • 四. 案例4 枚举类聚合封装消息


一. 案例1

涉及到EnumMap的实际使用

⏹定义一个枚举类,用来表示日本的各种支付方法对应的code

import com.fasterxml.jackson.annotation.JsonFormat;// 让jackson将前台的数据封装数据到枚举类中
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum PayEnum {RAKUTEN_PAY("1"),PAY_PAY("2"),ID_PAY("3");private String code;PayEnum(String code) {this.code = code;}public String getCode() {return code;}
}

⏹用来接收前台的数据的form实体类

import lombok.Data;@Data
public class PayForm {// 自定义的枚举类private PayEnum payMethod;private String msg;
}

⏹支付接口以及其实现类

// 支付接口
public interface IPay {void pay();
}// ID支付
public class IdPay implements IPay {@Overridepublic void pay() {System.out.println("ID支付...");}
}// paypay支付
public class PayPay implements IPay {@Overridepublic void pay() {System.out.println("paypay支付...");}
}// 乐天支付
public class RakuTenPay implements IPay {@Overridepublic void pay() {System.out.println("乐天pay支付...");}
}

⏹后台的实际应用

  • EnumMap的key是枚举类
  • 通过EnumMap将枚举类与枚举类对应的支付接口进行聚合
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import java.util.EnumMap;@Controller
@RequestMapping("/test35")
public class Test35Controller {// 使用EnumMap对枚举类和枚举类对应的支付方式进行映射聚合private static final EnumMap<PayEnum, IPay> commandMap = new EnumMap<PayEnum, IPay>(PayEnum.class){{put(PayEnum.ID_PAY, new IdPay());put(PayEnum.PAY_PAY, new PayPay());put(PayEnum.RAKUTEN_PAY, new RakuTenPay());}};@GetMapping("/init")public ModelAndView init() {ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("test35");return  modelAndView;}@PostMapping("/pay")public ResponseEntity<Void> pay(@RequestBody PayForm payForm) {System.out.println(payForm);// 判断支付方式是否存在if (!commandMap.containsKey(payForm.getPayMethod())) {System.out.println("支付方式不存在......");return ResponseEntity.noContent().build();}// 支付方式存在的话,调用支付接口进行支付IPay payMethod = commandMap.get(payForm.getPayMethod());payMethod.pay();return ResponseEntity.noContent().build();}
}

⏹前台

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><button id="btn">发送请求</button>
</body>
<script type="text/javascript" th:src="@{/js/public/jquery-3.6.0.min.js}"></script>
<script>$(function() {bindEvent();});function bindEvent() {$("#btn").click(() => {const jsonData = {msg: "110120119",// 代表paypay支付payMethod: "2"};$.ajax({url: `/test35/pay`,type: 'POST',data: JSON.stringify(jsonData),contentType: 'application/json;charset=utf-8',success: function (data, status, xhr) {console.log(data);}});});}
</script>
</html>

⏹效果

在这里插入图片描述


二. 案例2

定义一个接口

public interface RoleOperation {// 表示某个角色可以做哪些op操作String op();
}

定义一个枚举类实现接口

// 定義一個枚舉類實現接口
public enum RoleEnum implements RoleOperation {// 系统管理员(有A操作权限)ROLE_ROOT_ADMIN {@Overridepublic String op() {return "ROLE_ROOT_ADMIN:" + " has AAA permission";}},// 订单管理员(有B操作权限)ROLE_ORDER_ADMIN {@Overridepublic String op() {return "ROLE_ORDER_ADMIN:" + " has BBB permission";}},// 普通用户(有C操作权限)ROLE_NORMAL {@Overridepublic String op() {return "ROLE_NORMAL:" + " has CCC permission";}};}

调用

// 角色的名称
String role = "ROLE_ROOT_ADMIN";// 将枚举类中所有的角色都放到List中
List<RoleEnum> roleEnums = Arrays.asList(RoleEnum.values());
// 判断List中是否有相应的角色
if (roleEnums.contains(role)) {// 如果有的话,就执行该角色所对应的方法RoleEnum roleEnum = RoleEnum.valueOf(role);System.out.println(roleEnum.op());
} else {System.out.println("對應的角色不存在");
}

三. 案例3

public enum MessageEnum {SUCCESS(1, "成功"),FAIL(-1, "失败"),TIME_OUT(-2, "网络超时"),PARAM_ERROR(-3, "参数错误");private int code;private String message;MessageEnum(int code, String message) {this.code = code;this.message = message;}public int getCode() {return this.code;}public String getMessage() {return this.message;}// 根据code获取对应的value.如果没有对应的code,就返回一个nullpublic static MessageEnum getMessageEnum(int code) {return Arrays.stream(MessageEnum.values()).filter(x -> x.code == code).findFirst().orElse(null);}
}

调用

Optional<MessageEnum> messageEnum = Optional.ofNullable(MessageEnum.getMessageEnum(10));
if (messageEnum.isPresent()) {System.out.println(messageEnum.get().getMessage());
} else {System.out.println("對應的code不存在");
}

四. 案例4 枚举类聚合封装消息

import java.util.HashMap;
import java.util.Map;public final class AngConst {// 用于枚举类实现的接口public interface IAngConst {}// 枚举类实现接口public enum AngAliPay implements IAngConst {LOG_001,LOG_002,LOG_003}public enum AngPayPay implements IAngConst {LOG_001,LOG_002,LOG_003}public enum AngIDPay implements IAngConst {LOG_001,LOG_002,LOG_003}// 枚举类实现接口的妙处在此处体现// 或者可以使用EnumMap来进行聚合public static Map<IAngConst, String> dataMap = new HashMap<>(){{// 支付方式—AngAliPayput(AngAliPay.LOG_001, "AngAliPay处理开始...");put(AngAliPay.LOG_002, "AngAliPay处理被中断...");put(AngAliPay.LOG_003, "AngAliPay处理结束...");// 支付方式—AngPayPayput(AngPayPay.LOG_001, "AngPayPay处理开始...");put(AngPayPay.LOG_002, "AngPayPay处理被中断...");put(AngPayPay.LOG_003, "AngPayPay处理结束...");// 支付方式—AngIDPayput(AngIDPay.LOG_001, "AngIDPay处理开始...");put(AngIDPay.LOG_002, "AngIDPay处理被中断...");put(AngIDPay.LOG_003, "AngIDPay处理结束...");}};
}
http://www.yayakq.cn/news/211983/

相关文章:

  • 做移动网站快速做网站的把网站写成一行
  • 手机建站平台淘客怎么做线上营销
  • 天河网站建设优化网站ome系统怎么做
  • 北京怎样建设公司网站织梦做网站好不好
  • 代做网站灰色关键词专业网站设计公司地址
  • 给小孩做辅食的网站织梦网站图片代码
  • 网站抄袭我网站酒店网站开发
  • 网站托管 域名学校网站建设需求
  • 网站源码生成器wordpress 黑糖破解
  • 全网营销网站建设南京电商代运营
  • 单页面网站教程境外网站 备案
  • 用python做网站后台手机网址2021年免费不封
  • 怎么用思维导图做网站结构图网站建设公司建设
  • 答题网站怎么做软件商店安装下载
  • 网站建设 证书南昌网站建设招聘
  • seo站内优化最主要的是什么网站建设技术要求
  • 建设酒类产品网站的好处建筑网站设计
  • 广州开发区投资集团有限公司招聘网站seo月报
  • 网站推广方案整理途牛网站建设策划书
  • 厦门微网站建设公司ui设计技能就业培训
  • 嘉兴网站seo服务网站开发一般用哪种语言
  • 优质网站排名公司深圳公司宣传片制作
  • 一般网站海报做一张多久个人网站 空间 多少够
  • 电影院网站建设方案品牌设计有哪些
  • 网站的建设服务手机网站带后台源代码
  • 非小号是根据国外哪个网站做的wordpress 媒体文件发布
  • 肉多各种地方做的网站求个网站这么难吗2021年
  • 江苏网站备案流程图网站自然排名怎么
  • 张家界网站定制自己做游戏需要学什么
  • 良庆网站建设报考网页