更多内容可参考：[@Mapping 用法说明](/article/327)

### 1、主要注解

|   注解 | 说明 | 
| -------- | -------- | 
| @Controller     | 控制器注解（只有一个注解，会自动通过不同的返回值做不同的处理）     |
| @Param     | 注入请求参数（包括：QueryString、Form、Path）。起到指定名字、默认值等作用     |
| @Header     | 注入请求 header     |
| @Cookie     | 注入请求 cookie    |
| @Path | 注入请求 path 变量（因为框架会自动处理，所以这个只是标识下方便文档生成用） |
| @Body     | 注入请求体（一般会自动处理。仅在主体的 String, Steam, Map 时才需要）     |
| | 
| @Mapping     | 路由关系映射注解     |
| @Get     | @Mapping 的辅助注解，便于 RESTful 开发     |
| @Post     | @Mapping 的辅助注解，便于 RESTful 开发     |
| @Put     | @Mapping 的辅助注解，便于 RESTful 开发     |
| @Delete     | @Mapping 的辅助注解，便于 RESTful 开发     |
| @Patch     | @Mapping 的辅助注解，便于 RESTful 开发     |
| | |
| @Produces  | 输出内容类型声明 |
| @Consumes | 输入内容类型声明（当输出内容类型未包函 @Consumes，则响应为 415 状态码） |
| @Multipart   | 显式声明支持 Multipart 输入 |

### 2、组合效果

```java
@Controller
public class DemoController{
    @Get
    @Mapping("/test1/")
    public void test1(){
        //没返回
    }
    
    @Produces(MimeType.APPLICATION_JSON_VALUE)
    @Get
    @Mapping("/test2/")
    public String test2(){
        return "{\"message\":\"返回字符串并输出\"}";
    }
    
    @Mapping("/test3/")
    public UseModel test3(@Param(defaultValue="world") String name){ //接收请求name参数
        //返回个模型，默认会渲染为json格式输出
        return new UseModel(2, name); 
    }
    
    @Mapping("/test4/{qb_dp}")
    public ModelAndView test4(String qb_dp, @Body String bodyStr){//接收路径变量和主体字符串
        //返回模型与视图，会被视图引擎渲染后再输出，默认是html格式
        Map<String,String> map = new HashMap<>();
        map.put("name", qb_dp);
        map.put("body", bodyStr);
        
        return new ModelAndView("view path", map); 
    }
    
    @Mapping("/test5/")
    public void test5(int id, String name, Context ctx){ //可自动接收：get, post, json body 参数
        ModelAndView vm = new ModelAndView("view path");  
        vm.put("id", id);
        vm.put("name", name);
        
        //渲染拼直接返回（不输出）
        String html = ctx.renderAndReturn(vm);
        
        db.table("test").set("html", html).insert();
    }
}
```