目录:

  • 1.导入依赖
  • 2. 配置“信息发送”工具类 和 配置第三方短信接口信息
  • 3. 配置第三方短信服务的 APIID 、APIKEY
    • 3.1 获得短信服务的 APIID 和 APIKEY
    • 3.2 APIID 、APIKEY的用处
  • 4. 配置后端代码 ( 来实现信息的发送 )
    • 4.1配置(controller层) 后端代码
    • 4.2配置(bean层) Msg对象
  • 5. 配置前端代码 ( 来实现信息的发送 )
    • 5.1配置配置(.jsp页面中) 前端代码
    • 5.2“信息发送页面”展示
  • 6.配置 DataResults工具类 和 ResultCode枚举
    • 6.1 配置 DataResults工具类
    • 6.2 配置 ResultCode 枚举
  • 7.输入数据,发送信息

1.导入依赖

pom.xml文件中导入依赖:

      <!-- 发送短信需要的依赖 --><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.3</version></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.0-rc4</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.0.4</version></dependency>

2. 配置“信息发送”工具类 和 配置第三方短信接口信息


ps: 此处用的互亿无线的短信接口服务,可自行注册使用该平台/其他平台的接口服务。package com.oa.util;//接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。
// 账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html
// 注意事项:
//(1)调试期间,请用默认的模板进行测试,默认模板详见接口文档;
//(2)请使用APIID(查看APIID请登录用户中心->验证码短信->产品总览->APIID)及 APIkey来调用接口;
//(3)该代码仅供接入互亿无线短信接口参考使用,客户可根据实际需要自行编写;import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;/*** 短信工具类*/
public class SendsMsgUtf8Utils {//请求地址private static String Url = "http://106.ihuyi.cn/webservice/sms.php?method=Submit";// contentInfo:前后端传进来的要发送的信息的内容public static String sengMessage(String phone,String contentInfo) throws Exception {HttpClient client = new HttpClient();PostMethod method = new PostMethod(Url);client.getParams().setContentCharset("UTF-8");method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8");/***  随机的验证码 -- 将该随机生成的"验证码"用在信息模板中, 当然也可以用 contentInfo(传进来的信息参数)用于信息模板中*/int mobile_code = (int)((Math.random()*9+1)*100000);/***  信息模板,按照此格式发送信息,只有“验证码”(mobile_code)处的变量可改, 可改成传进来的contentInfo 参数*  想要发其他的信息模板可上官网寻找、或上官网申请模板*/String content = new String("您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。");  //信息模板,按照此格式发送信息NameValuePair[] data = {//提交短信/*** 配置第三方短信接口信息:*  account :  登录 ---验证码通知短信 --- 产品总览 --- APIID*  password : 登录 ---验证码通知短信 --- 产品总览 --- APIKEY*/new NameValuePair("account", "123456"),   // APIIDnew NameValuePair("password", "123456789"), // APIKEY//手机号码new NameValuePair("mobile", phone),//要发送的短信模板内容new NameValuePair("content", content), //此处填的模板字符串,如content};method.setRequestBody(data);client.executeMethod(method);String SubmitResult =method.getResponseBodyAsString();//System.out.println(SubmitResult);Document doc = DocumentHelper.parseText(SubmitResult);Element root = doc.getRootElement();String code = root.elementText("code");  //状态码String msg = root.elementText("msg");String smsid = root.elementText("smsid");System.out.println("---------------------");System.out.println("操作状态码: "+code);System.out.println("msg为: "+msg);System.out.println("smsid为: "+smsid);if("2".equals(code)){System.out.println("短信提交成功-------");}return code;  //操作状态状态码 2:表示短信发送成功}
}

3. 配置第三方短信服务的 APIID 、APIKEY

ps:实际项目中,可通过第三方的短信服务商来帮助实现“短信发送”功能。

3.1 获得短信服务的 APIID 和 APIKEY

登录 —验证码通知短信 — 产品总览 — APIID

登录 —验证码通知短信 — 产品总览 — APIKEY

3.2 APIID 、APIKEY的用处

将获得的 “APIID ” 填入 new NameValuePair(“account”, "APIID "), 中 // APIID
将获得的 “APIKEY ” 填入
new NameValuePair(“password”, “APIKEY”), 中 // APIKEY


4. 配置后端代码 ( 来实现信息的发送 )

4.1配置(controller层) 后端代码
    /***  09-信息发送*/@PostMapping("/addMsg")@ResponseBodypublic DataResults addMsg(Msg msg){try {System.out.println("信息的内容为:"+msg);String code = SendsMsgUtf8Utils.sengMessage(msg.getPhone(), msg.getContent());//如果代码走到return这步,表示短信发送成功,自然返回SUCCESSreturn  DataResults.success(ResultCode.SUCCESS,code);} catch (Exception e) {e.printStackTrace();return DataResults.fail(ResultCode.FAIL);}}

4.2配置(bean层) Msg对象
package com.oa.bean;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Msg {private String phone;private String content;
}

5. 配置前端代码 ( 来实现信息的发送 )

5.1配置配置(.jsp页面中) 前端代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<html>
<head><title>人事管理系统</title><!--引入bootstrap --><link href="/css/bootstrap.min.css" rel="stylesheet"><!--引入layui --><link href="/layui/css/layui.css" rel="stylesheet">
</head>
<body>
<br/>
<br/>
<div class="layui-form"><!--接收方 --><div class="layui-form-item" style="margin-top: 5px;"><label class="layui-form-label" style="width: 100px;">接收手机号:</label><div class="layui-input-block" style="margin-right: 50px"><input class="form-control" name="phone" type="text" placeholder="请输入手机号" lay-verify="phone" id="phone"/></div></div><!--内容 --><div class="layui-form-item layui-form-text" style="margin-top: 5px;"><label class="layui-form-label" style="width: 100px">短信内容:</label><br><div class="layui-input-block" style="margin-right: 50px"><textarea class="form-control" placeholder="请输入短信内容" type="text" rows="5" cols="15" name="content"id="content"></textarea></div></div><!--按钮 --><div class="form-group" style="margin-left: 50px"><button class="btn-sm btn btn-primary" lay-submit="" lay-filter="send">发送</button>&nbsp;&nbsp;&nbsp;&nbsp;<button class="btn btn-sm btn-warning" type="reset">重置</button></div>
</div><!--引入jquery -->
<script src="/js/jquery-3.1.1.min.js" charset="UTF-8"></script>
<!--引入layui.js -->
<script src="/layui/layui.js" charset="UTF-8"></script><script type="text/javascript">layui.use(['form', 'layer'], function () {var form = layui.form,layer = layui.layer;form.verify({title: function (value) {if (value.length == 0) {return '标题不能为空哦';}}});//监听提交form.on('submit(send)', function () {var url = "/notice/addMsg";var param = {phone: $("#phone").val(),content: $("#content").val()};$.ajax({url: url,data: param,type: 'post',  //为post请求success: function (result) {  // 返回的DataResults数据对象if (result.code == 200) {if (result.data == 2) {layer.msg("短信发送成功", {icon: 1}, function () {$("#phone").val("");$("#content").val("");});} else {layer.msg("短信发送异常", {icon: 1}, function () {//获得信息的两个框置空$("#phone").val("");$("#content").val("");});}}},error: function () {layer.msg("发送失败", {icon: 2});}})})});
</script></body>

5.2“信息发送页面”展示

6.配置 DataResults工具类 和 ResultCode枚举

6.1 配置 DataResults工具类
package com.oa.util;
import lombok.Data;
/***  DataResults 配合 ResultCode 来使用,来为后端返回操作的状态/数据结果信息给前端*  DataResults中的方法的参数为ResultCode枚举中的内容*/
@Data
public class DataResults {   // DataResults: 数据结果/操作状态private int code;    //状态码private String msg;   //状态具体描述信息private Object data;  //返回的数据private DataResults(int code, String msg) {this.code = code;this.msg = msg;}public static DataResults success(ResultCode resultCode){// resultCode.getCode(), resultCode.getMsg() ---得到传入枚举的code 和 msg信息,并给DataResults类DataResults resultCommon = new DataResults(resultCode.getCode(), resultCode.getMsg());return resultCommon;  //返回这个对象}public static DataResults success(ResultCode resultCode, Object data){DataResults success = success(resultCode);success.setData(data);return success;}public static DataResults fail(ResultCode resultCode){return success(resultCode);}}

6.2 配置 ResultCode 枚举
package com.oa.util;/***  该枚举封装的是状态码,这些状态码,被 DataResults类 调用,作为其中的方法的参数*  如:*  success(ResultCode resultCode){}  //该方法为DataResults类的方法,方法的参数为枚举*  DataResults 和  ResultCode 相结合来回后端返回代码操作信息/操作状态给前端*/
public enum  ResultCode {   // ResultCode: 结果代码/状态码SUCCESS(200,"请求成功"),NO_DELETE(800,"数据在使用中,勿删除"),FAIL(500,"请求失败"),TIMEOUT(505,"支付超时"),REGISTER_SUCCESS(200,"注册成功"),USERNAME_NO_REPEAT(200,"用户名可用"),ADD_FAV_SUCCESS(200,"收藏成功!"),REMOVE_SUCCESS(200,"移除成功!"),CODE_FAIL(9001,"验证码错误"),LOGIN_FAIL(9002,"用户名或密码错误"),NO_LOGIN(9003,"请先登录"),NO_CHECK(9090,"验证失败"),REGISTER_FAIL(9005," 注册失败"),USERNAME_REPEAT(9006," 用户名重复"),LOGIN_FORBID(9007,"用户被禁用"),NO_RIGTHS(403,"暂无权限操作"),@SuppressWarnings("all")REPASSWORD_ERROR(9004,"两次密码不一致"),PASSWORD_ERROR(9008,"原密码错误"),PASSWORD_EMPTY(9009,"密码不能为空");private int code;private String msg;public int getCode() {return code;}public String getMsg() {return msg;}ResultCode(int code, String msg){this.code=code;this.msg=msg;}
}

7.输入数据,发送信息


SSM项目 “信息发送” 详细步骤相关推荐

  1. SSM项目spring配置文件详细步骤(分门别类、灵巧记忆)

    spring-dao.xml文件 1.配置外部db.property文件: <context:property-placeholder location="classpath:jdbc ...

  2. 瞬间心情愉悦,头发都少掉了几根!---Django+uwsgi+Nginx项目部署超详细步骤

    文章目录 瞬间心情愉悦,头发都少掉了几根!---Django+uwsgi+Nginx项目部署超详细步骤 先决条件 步骤 本地运行测试 上传服务器 环境安装 准备django程序 完美解决! 瞬间心情愉 ...

  3. spring项目打包发布详细步骤

    spring项目打包发布详细步骤 1.添加pom文件配置 <packaging>jar</packaging> 2.在IDEA中打开 Run - > Edit Confi ...

  4. express项目搭建 初始化详细步骤

    案例 一.对每一个POST请求都设置CSRF防护 实际上,不仅仅转账需要CSRF防护,每一个post请求都需要做csrf的防护措施. webA项目中的app.js: const router = ex ...

  5. 小菜鸟的SSM框架搭建【详细步骤】【SSM/IDEA/MAVEN】

    小菜鸟的SSM框架搭建 内容很长噢,一步步搭建 此框架是跟着b站上的黎曼的猜想所发布的视频搭建起来的,细节操作可以看视频.我只是在这里梳理一下ssm框架搭建的流程. 整合说明:SSM整合可以使用多种方 ...

  6. 第一个SpringBoot入门级项目(超详细步骤)

    开发环境: MyEcplise2017+Maven+SpringBoot+Tomcat 8.5 ① 创建一个新的Maven项目:File-->New-->Others-->Maven ...

  7. centos daemonize_手把手教你在centos上配置Django项目(超详细步骤)

    前言 关于Django的部署,本人也踩了很多坑,这篇文章一步一步教你怎么进行部署,只需要你按照我的步骤来就OK了!这里我们使用的服务器是一个全新的服务器,没有安装任何东西. 基础环境搭建步骤 ★ 注意 ...

  8. centos sokit_手把手教你在centos上配置Django项目(超详细步骤)

    前言 关于Django的部署,本人也踩了很多坑,这篇文章一步一步教你怎么进行部署,只需要你按照我的步骤来就OK了!这里我们使用的服务器是一个全新的服务器,没有安装任何东西. 基础环境搭建步骤 ★ 注意 ...

  9. 通用SSM项目环境搭建详细教程

    一.新建一个Maven项目 1. 2.不使用骨架,直接next 3.(项目名称.工作空间.分组Id设置.按照个人喜好即可,不推荐使用中文) -> 直接Finish 4.看到如下图的pom.xml ...

最新文章

  1. 12月北京CISA认证考试考前辅导会成功举办
  2. SNMPM 配置 [linux windows solaris]
  3. 51单片机(STC89C52RC) IO扩展实验
  4. Java内部类与静态内部类
  5. Safari 14.0 的功臣 Webp?
  6. SpringBoot的@SpringBootApplication注解和其他几个注解
  7. c语言怎样输入动态数组代码,求助~~ 如何把数组变成动态输入的?
  8. linux gcc延时怎么写,Clang / GCC是否真的支持延迟加载功能?
  9. 计算机安全覆盖的内容有哪些,计算机网络的分类有哪些
  10. Windows平台安装dlib方法汇总
  11. 第一章节 ASP.NET Web应用程序基础(二)
  12. 公司计算机 统一购买 补贴,全国农机购置补贴计算机管理系统开始全面启用
  13. wordpress自动采集插件wp-autopost-pro 3.7.8 完美绿色版
  14. 研究生阶段的英语学习
  15. MATLAB提取RGB三原色及识别形状(圆、三角、方)
  16. 学计算机要高智商吗,这7大高智商专业,很容易挂科,如果不是学霸级人物,最好不要报考...
  17. Win10系统如何显示文件夹中的照片缩略图
  18. 阿里云服务器部署学习笔记
  19. 等了15年,这本编程巨著终于出版了!
  20. 二叉搜索树的经典应用面试题(keykey-value模式)

热门文章

  1. Qt5.6.1移植海思Hi3521d(二)
  2. 自动载入实战---构造一个PSR-0的简易框架
  3. 面向气象灾害预警信息的5G网络切片技术研究
  4. echarts的中国地图去掉南海诸岛
  5. PostgreSQL数据库如何查询表的主键
  6. 目标检测经典论文——YOLOv2论文翻译(纯中文版):YOLO9000:更好、更快、更强
  7. 数据库概述01(基本数据类型)
  8. 小牛电动增收不增利:年度净利润下滑11%,外部竞争愈发激烈
  9. cas202268-34-6/苯酚,4,4‘-(10,20-二苯基-21H,23H-卟吩-5,15-二酰基)双酚/分子量:646.73/分子式:C44H30N4O2
  10. 其实,“把梳子卖给和尚”不是营销