前言
项目是基于javaFX的PC桌面项目,使用maven进行项目构建及依赖管理。因为需要对外发布web服务进行数据交换所以需要支持web服务。且项目正好使用了hutool工具,所以尝试使用它的SimpleServer功能。项目主要使用了GET,POST服务请求及文件服务器功能。
一、SimpleServer是什么?
SimpleServer是hutool对jdk自带服务器简单轻量封装的web服务器,可以支持Get和Post请求,特别适用javase项目对外提供简单的web服务。极大的降低了系统开发的难度。
二、使用步骤
1.引入maven库
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.0</version>
</dependency>
2.文件服务器功能
将D盘simple_server目录作为文件服务器根目录。对外提供文件服务可以通过http://ip:8082/文件名下载文件。
SimpleServer server = HttpUtil.createServer(8082);
String filePath = "D:/simple_server";
server.setRoot(filePath);
3.GET服务
server.addAction("/content", (request, response) -> {
try {
setCros(response);
String content = "需要返回的数据";
response.write(content, ContentType.JSON.toString());
} catch (Exception ex) {
System.out.println(ex.getCause());
}
}
4.POST服务
后端接收idList参数
server.addAction("/download",
(request, response) -> {
System.out.println("params:"+request.getParams());
List<String> idList = request.getParams().get("idList");
System.out.println("idList:"+idList);
……
}
);
前端发送post请求
ids = '1,2,3'
$.ajax({
url: urlPre + '/download',
type: 'POST',
data: {
'idList': ids
},
dateType: "json",
contentType: "application/json",
success: function (data) {
……
}
});
5.解决跨域问题
如果使用多个域提供的数据可能存在跨域问题。以下是后端解决跨域问题的思路。
private static void setCros(HttpServerResponse response) {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "*");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization,token, content-type");
response.setHeader("Access-Control-Allow-Credentials","true");
}
总结
以上就是今天要讲的内容,本文仅仅是记录自己使用SimpleServer中踩得坑,由于这方面资料不多所以记录一下,如有错误请指正。