PHPmailer发送邮件demo

开发系统的时候,我们避免不了要发送邮件,在php中使用phpmailer可以快速的实现邮件的发送 `请自行引用phpmailer模块,放下面这个文件和phpmailer同级 配置号里面的发送邮箱内容,执行php sendMail.php文件就可以测试发送邮件了 这个文件名称为sendMail.php <?php use phpmailer\phpmailer\PHPMailer; use phpmailer\phpmailer\Exception; //引入项目 require './phpmailer/src/Exception.php'; require './phpmailer/src/PHPMailer.php'; require './phpmailer/src/SMTP.php'; //实例化PHPMail类 <span class="katex math inline">mail = new PHPMailer(true); try { //Server settings</span>mail->SMTPDebug = 2; <span class="katex math inline">mail->isSMTP();</span>mail->Host = 'smtp.163.com'; <span class="katex math inline">mail->SMTPAuth = true;</span>mail->Username = 'hn_zhangdl@163.com'; <span class="katex math inline">mail->Password = 'xxxx';#跟上边一样的授权码</span>mail->SMTPSecure = 'ssl'; <span class="katex math inline">mail->Port = 994;</span>mail->CharSet='UTF-8'; //发件人 <span class="katex math inline">mail->setFrom('hn_zhangdl@163.com', 'Mailer'); //收件人。多收件人可设置多个addAddress</span>mail->addAddress('411437734@qq.com', 'zhangdl');//收件人邮箱地址,收件人姓名(选填) //发送附件 //#<span class="katex math inline">mail->addAttachment('/var/tmp/file.tar.gz'); // 添加附件 //#</span>mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // 设置附件以及附件名称 //邮件内容 <span class="katex math inline">mail->isHTML(true); // 发送html格式邮件</span>mail->Subject = '标题'; //邮件标题 <span class="katex math inline">mail->Body = '邮件测试内容 hello.';</span>mail->send(); echo 'Message has been sent'; } catch (Exception <span class="katex math inline">e) { echo 'Message could not be sent. Mailer Error: ',</span>mail->ErrorInfo; } ?>`

2020年2月2日 · 1 分钟 · 天边的星星

thymeleaf 解决字符串太长显示问题(截取显示部分字符串)

下面的文章有thymeleaf 拼接字符串的写法和处理字符串太长显示部分的方法 下面的方法是显示指定的字符: ` th:text="${#strings.abbreviate(t.signTitle,25)}" ` 参考:[https://blog.csdn.net/qq_37599827/article/details/93362132](https://blog.csdn.net/qq_37599827/article/details/93362132)

2020年1月28日 · 1 分钟 · 天边的星星

表格标签css固定列的方案

html中表格标签css固定列方案,table固定最后一列,table固定第一列 CSS样式: <style> table { table-layout: auto !important; word-break: keep-all !important; } td,th{ padding: 0 5px; } table tr:nth-child(even){ background:white; } table tr th:nth-last-child(2), table tr td:nth-last-child(2){ padding-right: 170px; } table th:last-child, table tr td:last-child { background: inherit; border-left:1px solid #ddd; width:150px ; text-align: center; position: fixed; right: 0; z-index: 2; } table tr th:nth-child(2), table tr td:nth-child(2){ padding-left: 170px; } table th:first-child,table tr td:first-child{ background: red; border-left:1px solid #ddd; width:150px ; text-align: center; position: fixed; left: 0; z-index: 2; } </style> 所有HTML代码: ` <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link rel="stylesheet" href="/admin/css/common.css"> <link rel="stylesheet" href="/admin//css/news/news.css"> <link rel="stylesheet" href="/admin//css/font-awesome.min.css"> <script src="/admin//js/jquery.min.js"></script> <script src="/admin//js/news.js"></script> </head> <style> table { table-layout: auto !important; word-break: keep-all !important; } td,th{ padding: 0 5px; } table tr:nth-child(even){ background:white; } table tr th:nth-last-child(2), table tr td:nth-last-child(2){ padding-right: 170px; } table th:last-child, table tr td:last-child { background: inherit; border-left:1px solid #ddd; width:150px ; text-align: center; position: fixed; right: 0; z-index: 2; } table tr th:nth-child(2), table tr td:nth-child(2){ padding-left: 170px; } table th:first-child,table tr td:first-child{ background: red; border-left:1px solid #ddd; width:150px ; text-align: center; position: fixed; left: 0; z-index: 2; } </style> <body> <div class="list-content" style="overflow:auto;"> <table> <tr> <th width="50px">序号</th> <th>应用名</th> <th>app_id</th> <th>secret_key</th> <th>绑定学校</th> <th>教务系统</th> <th>联系人</th> <th>联系电话</th> <th>状态</th> <th>创建日期</th> <th>更新日期</th> <th width="200">操作</th> </tr> <tr> <td align="center">1</td> <td>请打的</td> <td>1542081125346835</td> <td>29f7a4edd04af7f558870636b6689781</td> <td>青岛大学</td> <td>URP综合教务</td> <td>水电费</td> <td></td> <td>1</td> <td>2018-11-13 11:52:05</td> <td>2018-11-13 11:52:05</td> <td> <span class="edit-btn" οnclick="parent.showUrlDialog('edit/id/8')"><li class="fa fa-edit"></li> 编辑</span> <span class="delete-btn" οnclick="delAppClient('8')"><li class="fa fa-ban"></li> 删除</span> </td> </tr> <tr> <td align="center">2</td> <td>看手机</td> <td>1542036973909802</td> <td>7ce5dc0272e2482acf8c37ef9f0d1582</td> <td>青岛大学</td> <td>URP综合教务</td> <td>万洲</td> <td></td> <td>0</td> <td>2018-11-12 23:36:13</td> <td>2018-11-13 00:14:13</td> <td> <span class="edit-btn" οnclick="parent.showUrlDialog('app_client/edit/id/7')"><li class="fa fa-edit"></li> 编辑</span> <span class="delete-btn" οnclick="delAppClient('7')"><li class="fa fa-ban"></li> 删除</span> </td> </tr> </table> </div> <div class="page"> </div> </body> </html>` 参考:[https://developer.mozilla.org/zh-CN/docs/Web/CSS/:nth-child](https://developer.mozilla.org/zh-CN/docs/Web/CSS/:nth-child) 了解更多属性 参考:[https://blog.csdn.net/veloi/article/details/84027505](https://blog.csdn.net/veloi/article/details/84027505)

2020年1月14日 · 2 分钟 · 天边的星星

LayUI实战之layui-layer.open使用

LayUI实战之layui.layer.open使用 有时候我们有这么一种需求,在开发表单界面的时候,有一行指定用户需求时,需要查询用户,由于用户是独立的表和模块,数据量大的时候, 我们不能一次查找所有数据,放到Select中供用户进行选择,这时候基本上都会需要弹出一个界面,让用户进行查询及选择,选择之后,把选择的数据在传递到上一个打开的界面; … 没错就是通过layui.layer.open进行实现 _layer_是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验。 接下来一步一步进行操作 第一步 创建工程 根据自己的爱好,选择顺手的开发工具,进行创建web项目。这里我创建一个空项目 第二步 添加Layui js和css 通过官网 进行下载 https://www.layui.com/ 下载之后进行解压 把layui文件夹添加到项目中(参考下图) 第三步 添加2个html文件 index.html `<!DOCTYPE html> <html lang=“en”> <head> <meta charset=“UTF-8”> <title>LayUI测试</title> <link href=“layui/css/layui.css”/> <script src=“layui/layui.all.js”></script> </head> <body> <div class=“layui-form-item " > <label class=“layui-form-label”>选择</label> <div class=“layui-input-block” > <button style=“width: 15%” class=“layui-btn layui-btn-radius layui-btn-warm” type=“button” id=“sel_good” lay-filter=“sel_good”>点击选择</button> </div> </div> <div class=“layui-form-item selectGood” > <label class=“layui-form-label”>所选</label> <div class=“layui-input-block” id=“good” > <input type=“text” id=“goodName” autocomplete=“off” class=“layui-input”> <input type=“hidden” id=“goodId” name=“goodId” autocomplete=“off” class=“layui-input”> </div> </div> <script src=“https://code.jquery.com/jquery-3.4.1.min.js"&gt;&lt;/script> <script> $("#sel_good”).on(“click”, function () { var e = layui.layer.open({ title: “选择”, type: 2, move: false, anim: 1, skin: “larry-green”, offset: '10px', area: [10240.9 + “px”, 8000.9 + “px”], content: “one.html”,//后台请求地址 success: function (layero, index) { console.log(layero, index); console.log("==============================================”); var body = layui.layer.getChildFrame('body', index); console.log(body); }, btn: ['按钮一', '按钮二', '按钮三'],//默认 按钮一 执行的yes btn2 是按钮2 btn3是按钮三 yes: function(index, layero){ console.log(layero, index); //do something layer.close(index); //如果设定了yes回调,需进行手工关闭 } }); }); //https://www.layui.com/doc/modules/layer.html#btn </script> </body> </html> ` ...

2020年1月3日 · 2 分钟 · 天边的星星

SpringBoot Controller接收参数的几种常用方式

 第一类:请求路径参数 1、@PathVariable 获取路径参数。即url/{id}这种形式。 2、@RequestParam 获取查询参数。即url?name=这种形式 例子 GET http://localhost:8080/demo/123?name=suki_rong 对应的java代码: @GetMapping("/demo/{id}") public void demo(@PathVariable(name = "id") String id, @RequestParam(name = "name") String name) { System.out.println("id="+id); System.out.println("name="+name); } 输出结果: id=123 name=suki_rong 第二类:Body参数 因为是POST请求,这里用Postman的截图结合代码说明 1、@RequestBody 例子: 对应的java代码: @PostMapping(path = "/demo1") public void demo1(@RequestBody Person person) { System.out.println(person.toString()); } 输出结果: name:suki_rong;age=18;hobby:programing 也可以是这样 @PostMapping(path = "/demo1") public void demo1(@RequestBody Map&lt;String, String&gt; person) { System.out.println(person.get("name")); } 输出结果: suki_rong ...

2019年12月15日 · 3 分钟 · 天边的星星

webpack 简单使用

webpack 简单使用 webpack是目前前端开发最流行的打包工具之一,今天就一步一步构建 初始化npm工程 npm init 创建npm 工程 根据自己的需求进行配置项目 添加webpack 依赖 npm i webpack –save-dev 安装webpack 安装成功之后,在package.json中在 devDependencies中有 webpack 使用webpack打包 js 创建js文件 创建module.js 创建app.js module.js 文件内容 export const log = function(){ ​ // document.write(‘module.js loaded’); ​ console.log(‘module.js loaded’); } app.js import moduleLog from ‘./module.js’; import ‘./style.css’; moduleLog(); document.write(‘app.js loaded’); 创建index.html <!DOCTYPE html> <script src="dist/bundle.js"></script> 创建完成之后,我们开始webpack打包 app.js ./node_modules/.bin/webpack app.js -o dist/bundle.js 执行完成 直接运行index.html 查看运行结果 app.js loadedmodule.js loaded 配置webpack.config.js 通常我们使用webpack命令行进行打包的时候,简单的话,还没有关系,要是想实现更多的功能的时候,我们不能一直添加很长很长的命令行吧,每次打包,你记得住吗?为此我们需要创建 webpack.config.js ...

2019年12月13日 · 2 分钟 · 天边的星星

Spring boot+mybatis+Sqlite环境配置

Spring boot+mybatis+Sqlite+mybatis-generator环境配置 有的时候 我们开发不需要一定要用到mysql、oracle等数据库,Sqlite也是我们的一种选择。 Sqlite使用场景 小型网站 SQLite适用于中小规模流量的网站. 日访问在10万以下的网站可以很好的支持,适用于读多写少的操作,如管理员在后台添加数据,其他访客多为浏览. 10万/天是一个临界值,事实上在100万的数据量之下,SQLite的表现还是可以的,在往上就不适合了. 使用它无需单独购买数据库服务,无需服务器进程,配置成本几乎为零,加上数据的导入导出都是复制文件,维护难度也几乎为零,迁移到别的服务器无需任何配置即可支持,加上其读取的速度非常快,省去了远程数据库的链接,能够极大提升网站访问速度. 嵌入式设备 SQLite适用于手机, PDA, 机顶盒, 以及其他嵌入式设备. 作为一个嵌入式数据库它也能够很好的应用于客户端程序. 因为其轻量,小巧,不怎么占用内存,数据的读写性能好,加上嵌入式设备数据量并不大,不需要频繁的维护,所以比较适合. 数据库教学 SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。 其无配置,无依赖,小巧,单一文件的特性让它的安装和使用非常简单,非常适合用来讲解SQL语句. 学生可以在很短的时候使用并操作SQLite,不受系统和商业限制等影响,学习的结果可以通过邮件或者云文件等形式发送给老师进行评分. 可以通过它快速实现一个最小化应用,适合学生快速了解SQLite,以及SQL语法,从而实现数据库的触类旁通,了解其他数据库系统的设计实现原则. 本地应用程序 其单一磁盘文件的特性,并且不支持远程连接,使其适用于本地的应用程序,如PC客户端软件. 常用的应用类型为金融分析工具、CAD 包、档案管理程序等等. (手机上的通讯录也是用此开发的) 没有远程,意味着适用于内部或者临时的数据库,用来处理一些数据,让程序更加灵活. 不适用场景 很明显其适合小型网站,相对的就不适合高流量网站.,也不适合超大的数据集,在其缺点也提到,不适合高并发访问. POM.xm配置 `<?xml version=“1.0” encoding=“UTF-8”?> <project xmlns=“http://maven.apache.org/POM/4.0.0" xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.1.RELEASE</version> <relativePath/> <!– lookup parent from repository –> </parent> <groupId>com.zdltech.test</groupId> <artifactId>sqlitetest</artifactId> <version>0.0.1-SNAPSHOT</version> <name>sqlitetest</name> <description>Demo project for Spring Boot</description> &lt;properties&gt; &lt;java.version&gt;1.8&lt;/java.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-jdbc&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;2.1.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;org.junit.vintage&lt;/groupId&gt; &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt; &lt;!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc --&gt; &lt;dependency&gt; &lt;groupId&gt;org.xerial&lt;/groupId&gt; &lt;artifactId&gt;sqlite-jdbc&lt;/artifactId&gt; &lt;version&gt;3.28.0&lt;/version&gt; &lt;/dependency&gt; &lt;!-- druid--&gt; &lt;dependency&gt; &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &lt;artifactId&gt;druid&lt;/artifactId&gt; &lt;version&gt;1.1.14&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.3.7&lt;/version&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; </project> ` ...

2019年11月28日 · 2 分钟 · 天边的星星

Element-UI 入门使用

Element-UI 入门使用 Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库 [Element UI官网][1] 如何在Html文件中使用ElementUI 在网页中引入element ui css和js ,由于Element是具有Vue的,所以需引入Vue的js > > - > > > <script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script> > > > <!-- 引入组件库 --> > > 在Script中创建Vue对象管理界面元素 > ``` &lt;script&gt; new Vue({ el: &#39;#app&#39;, data: function () { return { visible: false } }, }); &lt;/script&gt; 3. 接下来就可以使用Element中的元素了 > ``` `&lt;div id="app"&gt; &lt;el-button @click="visible = true"&gt;Button&lt;/el-button&gt; &lt;el-dialog :visible.sync="visible" title="Hello World"&gt; &lt;p&gt;Try Element&lt;/p&gt; &lt;/el-dialog&gt; &lt;/div&gt; ` 完整示例 > ``` `<!DOCTYPE html> <html lang=“en”> ...

2019年11月8日 · 3 分钟 · 天边的星星

Redis 安装及使用

Redis 安装及使用 Redis是一个开源的使用ANSI [C语言][1]编写、支持网络、可基于内存亦可持久化的日志型、Key-Value[数据库][2],并提供多种语言的API redis是一个key-value[存储系统][3]。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list([链表][4])、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些[数据类型][5]都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了[memcached][6]这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。 Redis应用场景 缓存(数据查询、短连接、新闻内容、商品内容等等)。(使用最多) 分布式集群架构中的session分离。 聊天室的在线好友列表。 任务队列。(秒杀、抢购、12306等等) 应用排行榜。 网站访问统计。 数据过期处理(可以精确到毫秒) 安装Redis 这里通过源码编译安装,大家也可以使用其他打包好的直接安装 进入服务器 wget 和tar要是没有 通过yum install wget tar来进行安装 执行下载源码命令 wget http://download.redis.io/releases/redis-5.0.5.tar.gz > > 解压 > > ``` `tar xzf redis-5.0.5.tar.gz ` 进入解压目录 cd redis-5.0.5 > > 编译 > > ``` `make ` make[1]: Entering directory `/opt/redis-5.0.5/src' CC Makefile.dep make[1]: Leaving directory`/opt/redis-5.0.5/src' ...

2019年9月26日 · 3 分钟 · 天边的星星

Shiro 简单入门

Shiro 简单入门 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。 三个核心组件:Subject, SecurityManager 和 Realms. Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。 Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。 SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。 Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。 从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。 Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。 第一步创建Springboot项目 通过自己熟悉的工具,创建一个Springboot项目 pom.xml `<?xml version=“1.0” encoding=“UTF-8”?> <project xmlns=“http://maven.apache.org/POM/4.0.0" xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.7.RELEASE</version> <relativePath/> <!– lookup parent from repository –> </parent> <groupId>com.zdltech.demo</groupId> <artifactId>shiro</artifactId> <version>0.0.1-SNAPSHOT</version> <name>shiro</name> <description>shiro demo</description> &lt;properties&gt; &lt;java.version&gt;1.8&lt;/java.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;!--shiro 依赖添加--&gt; &lt;!-- https://mvnrepository.com/artifact/org.apache.shiro/shiro-spring --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shiro&lt;/groupId&gt; &lt;artifactId&gt;shiro-spring&lt;/artifactId&gt; &lt;version&gt;1.4.1&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; </project> ` ...

2019年9月17日 · 4 分钟 · 天边的星星