创建服务详解
Magician.createHttpServer()
.bind(8080, 100)// 设置端口号和最大连接数,必填
.fileSizeMax(100*1024*1024)// 设置单个文件上传大小限制,非必填,默认 2*1024*1024
.sizeMax(100*1024*1024)// 设置上传文件总大小限制,非必填,默认 10*1024*1024
.readSize(1024) // 设置读取数据的缓冲区大小,非必填,默认 1024
.readTimeout(10000)// 设置读取数据的超时时间,非必填,默认 10000
.writeTimeout(1000)// 设置写入数据的超时时间,非必填, 默认 10000
.threadPool(DemoThreadPool.getThreadPoolExecutor())// 设置一个线程池,非必填,默认 Executors.newFixedThreadPool(20)
.httpHandler("/",new DemoHandler()) // 设置http的handler,必填
.start();
- bind方法有两个重载,一个只需要传端口号就行,一个就是示例中的这个:传端口号和最大连接数
Handler详解
public class DemoHandler implements MagicianHandler {
@Override
public void request(MagicianRequest magicianRequest) {
// 这样可以获取到单个请求头
String head = magicianRequest.getRequestHeader("请求头name");、
// 这样可以获取到全部的请求头
HttpHeaders headers = magicianRequest.getRequestHeaders();
// 如果是json格式提交的,就用这个方法获取json字符串
String jsonStr = magicianRequest.getJsonParam();
/* *********如果是其他方式提交的,就用这个方法获取参数********* */
String list = magicianRequest.getParam("参数的name");
/* *********如果是文件上传就用这个方法获取文件们********* */
Map<String, MagicianFileUpLoad> fileUpLoadMap = magicianRequest.getFiles();
// 可以这样获取到文件
MagicianFileUpLoad magicianFileUpLoad = fileUpLoadMap.get("参数的name");
magicianFileUpLoad.getFileName();// 文件名
magicianFileUpLoad.getInputStream(); // 文件流
magicianFileUpLoad.getName();// 参数的name
// 设置响应数据
magicianRequest.getResponse().sendText(200, "ok");
}
}
响应数据有这么几种方式
// 响应纯文本
magicianRequest.getResponse().sendText(200, "ok");
// 响应html格式的文本
magicianRequest.getResponse().sendHtml(200, "ok");
// 响应json格式的文本
magicianRequest.getResponse().sendJson(200, "ok");
// 响应其他格式的文本,需要自己在响应头里设置content-type
magicianRequest.getResponse().sendData(200, "ok");
// 响应二进制流
magicianRequest.getResponse().sendStream("文件名", 传入一个byte数组);
// 响应输入流
magicianRequest.getResponse().sendStream("文件名", 传入一个InputStream);