升级版自助快递查询系统,采用SpringBoot + Apache Shiro + Mybatis Plus + Thymeleaf 架构。kuaidi-cms致力于开发最精简、实用的快递CMS管理系统,完美自适应。 上篇文章一款精美的后台内容管理系统讲解了环境搭建。并添加了一些扩展功能。今天接着讲怎么在服务器部署快递查询系统。
CREATE DATABASE kuaidi_cms.sql;
docs/db/kuaidi_cms.sql
resources/application.yml
)配置文件datasource
)redis
)mvn -X clean package -Dmaven.test.skip=true
编译打包,然后执行java -jar target/kuaidi-cms.jar
mvn springboot:run
SpringbootApplication.java
http://localhost:8082
http://localhost:8082/admin
使用账号密码admin,123456登录系统后台。批量导出快递信息
项目引入hutools
工具,Excel
导入导出功能特别方便。直接看下面代码:
@GetMapping("/export")
@ResponseBody
public void exportDataByGet(String userName, String phone, HttpServletResponse response) throws Exception{
ArrayList<Map<String, Object>> excelRows = CollUtil.newArrayList();
List<KuaiDi> kuaiDiList = kuaiDiService.list(
new LambdaQueryWrapper<KuaiDi>()
.eq(StringUtils.isNotBlank(userName), KuaiDi::getUserName, userName)
.eq(StringUtils.isNotBlank(phone), KuaiDi::getPhone, phone)
);
if(CollUtil.isNotEmpty(kuaiDiList)){
kuaiDiList.stream().forEach(k -> {
Map<String, Object> tempRow = new LinkedHashMap<String, Object>(){{
put(Constants.EXCEL_HEADER_ALIAS_LIST.get(0), k.getKuaidiNo());
put(Constants.EXCEL_HEADER_ALIAS_LIST.get(1), k.getUserName());
put(Constants.EXCEL_HEADER_ALIAS_LIST.get(2), k.getPhone());
put(Constants.EXCEL_HEADER_ALIAS_LIST.get(3), k.getCompany());
}};
excelRows.add(tempRow);
});
}
// 通过工具类创建writer,默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter();
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(excelRows, true);
//out为OutputStream,需要写出到的目标流
//response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//kuaidi.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition","attachment;filename=kuaidi.xls");
ServletOutputStream out=response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
//此处记得关闭输出Servlet流
IoUtil.close(out);
}
这里说明一下:
项目前端 主要方便快速查询快递信息,下图是通过手机号一次查询它所有的快递信息。显示效果如下图:
项目后端 项目后端主要做人员管理,快递信息管理等功能,主要功能就是快递信息管理这块。快递信息管理页面效果如下图:
这里功能主要包括新增,修改,删除,批量导入,批量导入等功能。对于单条数据也支持快递信息查询。效果如下图:
测试环境 我也将环境部署在的服务器上,有兴趣的伙伴可以试试。 前端访问地址: https://www.restlessman.cn/ 后端访问地址: https://www.restlessman.cn/admin 测试账号: guest 123456789
SpringbootApplication修改 SpringbootApplication添加两个方法:
/*
* http重定向到https
* @return
**/
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(80);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(443);
return connector;
}
添加ssl
证书
阿里云、腾讯云等都有免费的证书,因为Springboot
项目是使用的内嵌式Tomcat
,所以我们下载Tomcat
证书即可。
下载后的证书有两个文件:
配置application-*.yml文件修改
因为需要在服务器上部署项目,所以这里修改application-prd.yml
文件,添加如下内容:
server:
port: 443
tomcat:
uri-encoding: utf-8
ssl:
key-store: classpath:restlessman.cn.pfx
key-store-password: R0nDaI1d
key-store-type: PKCS12
下载项目 执行如下命令下载项目到本地:
git clone https://gitee.com/huaairen/kuaidi-cms.git
项目打包
下载项目到本地磁盘路径,打开 cmd
窗口,执行命令:
mvn clean package -DskipTests
打包成功jar
包会生成在项目target
目录下。上传打包好的 *.jar
上传到服务器目录,这里我上传到/usr/software/kuaidi-cms
。如果没有此目录执行如下命令创建即可。
mkdir -p /usr/software/kuaidi-cms
创建start.sh
在服务器路径/usr/software/kuaidi-cms
创建脚本文件start.sh
vi start.sh
nohup java -jar kuaidi-cms.jar >kuaidi.log & #添加这个内容。
:wq #保存退出
chmod +x start.sh #添加执行权限
运行项目
执行start.sh
./start.sh #运行项目
tail 200 -f kuaidi.log #查看启动日志
前提
下载项目 执行如下命令下载项目:
cd /usr/myWorkSpace
git clone https://gitee.com/huaairen/kuaidi-cms.git
打包镜像
切换到项目本目录,执行如下命令打包docker
镜像
cd /usr/myWorkSpace/kuaidi-cms
mvn clean package dockerfile:build -DskipTests #docker镜像打包
打包成功输出如下信息:
Status: Image is up to date for daocloud.io/library/java:8u40-b22
[INFO] ---> 0a5e1e22983a
[INFO] Step 2/8 : VOLUME /tmp
[INFO] ---> Using cache
[INFO] ---> 9a1964ebbeca
[INFO] Step 3/8 : ARG JAR_FILE
[INFO] ---> Using cache
[INFO] ---> 168da3d9f3d9
[INFO] Step 4/8 : ADD ${JAR_FILE} /home/app.jar
[INFO] ---> 31dbf0216c31
[INFO] Removing intermediate container 49e5f7126807
[INFO] Step 5/8 : ADD src/main/resources/application-dev.yml /home/conf/application-dev.yml
[INFO] ---> aa77c181fcbf
[INFO] Removing intermediate container 1ad7028a9a11
[INFO] Step 6/8 : WORKDIR /home/
[INFO] ---> 54c9e19f600c
[INFO] Removing intermediate container 2624d1c88f00
[INFO] Step 7/8 : EXPOSE 8082
[INFO] ---> Running in 1fa25c75fca9
[INFO] ---> 7bd0f2decde2
[INFO] Removing intermediate container 1fa25c75fca9
[INFO] Step 8/8 : ENTRYPOINT java -jar -Dspring.config.location=conf/application-dev.yml ./app.jar
[INFO] ---> Running in 2756a2c83985
[INFO] ---> 2d15c707ae98
[INFO] Removing intermediate container 2756a2c83985
[INFO] Successfully built 2d15c707ae98
[INFO]
[INFO] Detected build of image with id 2d15c707ae98
[INFO] Building jar: /usr/myWorkSpace/kuaidi-cms/target/kuaidi-cms-docker-info.jar
[INFO] Successfully built kuaidi-cms/kuaidi-cms:1.0.0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 42.977 s
[INFO] Finished at: 2020-04-22T10:45:29+08:00
[INFO] Final Memory: 61M/189M
[INFO] ------------------------------------------------------------------------
运行项目
运行docker
容器执行如下命令:
docker run -d -p 80:8082 -v /usr/software/kuaidi-cms-docker/conf/application-dev.yml:/home/conf/application-dev.yml --name kuaidi-cms kuaidi-cms:1.0.0 指定配置文件