zoukankan      html  css  js  c++  java
  • Summer Project

    Summer Project

    Summer是一个用于学习交流,基于Netty4.x的简单mvc库。

    使用

    • 快速开始
    public class Application {
    
        public static void main(String[] args) {
            Summer.me()
                    .before("/example/*", (request, response) -> {
                        log.debug("path: {}", request.path());
                        // pass
                        return true;
                    })
                    .get("/example", (request, response) -> response.json(Result.of("summer *_*!!!")))
                    .get("/example/:id", (request, response) -> response.text(request.paths().get("id")))
                    .post("/example/:id", (request, response) -> response.text(request.paths().get("id")))
                    .put("/example/:id", (request, response) -> response.text(request.paths().get("id")))
                    .delete("/example/:id", (request, response) -> response.text(request.paths().get("id")))
                    .listen(9000)
                    .serve();
        }
    
    }
    
    • 自定义
    public class Application {
    
        public static void main(String[] args) {
            ExampleController controller = new ExampleController();
    
            // 获取一个summer实例
            Summer summer = Summer.me();
    
            Router router = summer.router();
    
            // 自定义notFound处理
            router.notFound((request, response) -> response.text("404"));
    
            // 自定义错误处理
            router.failureHandler((request, response, t) -> response.text("500"));
    
            // 注册路由
            router.get("/example/text", controller::text);
            router.get("/example/json", controller::json);
    
            // http服务监听9000端口,并启动服务
            summer.listen(9000).serve();
        }
    
    }
    

    关于

    Request

    命名参数

    显然,:name就是一个命名参数,可以通过request.paths().get("name")方法获取命名参数。

    模式匹配: /user/:name
    
    /user/zhangsan             匹配
    /user/lisi                 匹配
    /user/wangwu/zhaoliu       不匹配
    /user/                     不匹配
    

    注意: :name name 必须为字母[a-zA-Z], 否则视为精确匹配!

    前置钩子

    Ant风格:

    • ? 匹配一个字符
    • * 匹配一个或多个字符
    • ** 匹配一个或多个目录

    请求体

    request.body()方法支持下列Content-Type:

    • multipart/form-data
    • application/x-www-form-urlencoded

    对于application/json请求头, 使用request.json()方法即可。

    文件上传

    • request.files()
    • request.file(name)

    拿到FileUpload对象,操作文件。

    Response

    写响应

    • response.text(text)
    • response.json(json)

    Content-Type(text/plainapplication/json)分别会被添加到响应头。

    文件下载

    使用下面的方法:

    • response.sendFile(file)

    重定向

    response.redirect(targetUrl)将会设置http状态码为302,并添加Location到响应头。

    静态资源

    Summers.summer()
            // 静态资源
            .staticFile("/static", "/developer/Code/summer")
            .listen(9000)
            .serve();
    

    例如,http://ip:9000/static/some.txt将会被映射为本地文件路径/developer/Code/summer/some.txt

    例子

    这里

    特别感谢

  • 相关阅读:
    【转】网页窗口DIV自定义拖动
    【转】js获取当前日期时间“yyyy-MM-dd HH:MM:SS”
    JQuery基本知识、选择器、事件、DOM操作、动画
    LinQ高级查询、组合查询、IQueryable集合类型
    使用LinQ进行增删改查
    【转】html之file标签 --- 图片上传前预览 -- FileReader
    钢城干洗中心智能管理系统
    HTTP状态码
    HTTP报文内的HTTP信息
    HTTP协议中概念
  • 原文地址:https://www.cnblogs.com/bener/p/9174727.html
Copyright © 2011-2022 走看看