创建服务详解

  1. Magician.createHttpServer()
  2. .bind(8080, 100)// 设置端口号和最大连接数,必填
  3. .fileSizeMax(100*1024*1024)// 设置单个文件上传大小限制,非必填,默认 2*1024*1024
  4. .sizeMax(100*1024*1024)// 设置上传文件总大小限制,非必填,默认 10*1024*1024
  5. .readSize(1024) // 设置读取数据的缓冲区大小,非必填,默认 1024
  6. .readTimeout(10000)// 设置读取数据的超时时间,非必填,默认 10000
  7. .writeTimeout(1000)// 设置写入数据的超时时间,非必填, 默认 10000
  8. .threadPool(DemoThreadPool.getThreadPoolExecutor())// 设置一个线程池,非必填,默认 Executors.newFixedThreadPool(20)
  9. .httpHandler("/",new DemoHandler()) // 设置http的handler,必填
  10. .start();
  • bind方法有两个重载,一个只需要传端口号就行,一个就是示例中的这个:传端口号和最大连接数

Handler详解

  1. public class DemoHandler implements MagicianHandler {
  2. @Override
  3. public void request(MagicianRequest magicianRequest) {
  4. // 这样可以获取到单个请求头
  5. String head = magicianRequest.getRequestHeader("请求头name");、
  6. // 这样可以获取到全部的请求头
  7. HttpHeaders headers = magicianRequest.getRequestHeaders();
  8. // 如果是json格式提交的,就用这个方法获取json字符串
  9. String jsonStr = magicianRequest.getJsonParam();
  10. /* *********如果是其他方式提交的,就用这个方法获取参数********* */
  11. String list = magicianRequest.getParam("参数的name");
  12. /* *********如果是文件上传就用这个方法获取文件们********* */
  13. Map<String, MagicianFileUpLoad> fileUpLoadMap = magicianRequest.getFiles();
  14. // 可以这样获取到文件
  15. MagicianFileUpLoad magicianFileUpLoad = fileUpLoadMap.get("参数的name");
  16. magicianFileUpLoad.getFileName();// 文件名
  17. magicianFileUpLoad.getInputStream(); // 文件流
  18. magicianFileUpLoad.getName();// 参数的name
  19. // 设置响应数据
  20. magicianRequest.getResponse().sendText(200, "ok");
  21. }
  22. }

响应数据有这么几种方式

  1. // 响应纯文本
  2. magicianRequest.getResponse().sendText(200, "ok");
  3. // 响应html格式的文本
  4. magicianRequest.getResponse().sendHtml(200, "ok");
  5. // 响应json格式的文本
  6. magicianRequest.getResponse().sendJson(200, "ok");
  7. // 响应其他格式的文本,需要自己在响应头里设置content-type
  8. magicianRequest.getResponse().sendData(200, "ok");
  9. // 响应二进制流
  10. magicianRequest.getResponse().sendStream("文件名", 传入一个byte数组);
  11. // 响应输入流
  12. magicianRequest.getResponse().sendStream("文件名", 传入一个InputStream);