1、Solon的MVC注解
主要注解:
注解 | 说明 |
---|---|
@Controller | 控制器注解(只有一个注解,会自动通过不同的返回值做不同的处理) |
@Param | 请求参数注解(一般用不到,会自动处理) |
@Body | 请求主体注解(一般用不到,会自动处理) |
@Mapping | 路由关系印射注解 |
@Get | @Mapping 的辅助注解,便于 RESTful 开发 |
@Post | @Mapping 的辅助注解,便于 RESTful 开发 |
@Put | @Mapping 的辅助注解,便于 RESTful 开发 |
@Delete | @Mapping 的辅助注解,便于 RESTful 开发 |
@Patch | @Mapping 的辅助注解,便于 RESTful 开发 |
组合效果:
@Controller
public class DemoController{
@Get
@Mapping("/test1/")
public void test1(){
//没返回
}
@Get
@Mapping("/test2/")
public String test2(){
return "返回字符串并输出";
}
@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);
}
}
2、视图模板开发,支持6种视图模板引擎,可同时共用
模板引擎 | 适配的渲染器 | 默认视图后缀名 |
---|---|---|
freemarker | FreemarkerRender | .ftl |
jsp | JspRender | .jsp |
velocity | VelocityRender | .vm |
thymeleaf | ThymeleafRender | .html |
enjoy | EnjoyRender | .shtm |
beetl | BeetlRender | .htm |
以 freemaerker 视图为例,helloworld.ftl
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>${title}</title>
</head>
<body>
<div>
${message}
</div>
</body>
</html>
控制器
@Controller
public class HelloworldController {
@Mapping("/helloworld")
public Object helloworld(){
ModelAndView vm = new ModelAndView("helloworld.ftl");
vm.put("title","demo");
vm.put("message","hello world!");
return vm;
}
}
3、模板调试模式(即:模板修改后,浏览器刷新即可)
//调试模式:
启动参数添加:-deubg=1 或 --deubg=1
4、在模板中使用认证标签
以 freemaerker 视图为例:
<@authPermissions name="user:del">
我有user:del权限
</@authPermissions>
<@authRoles name="admin">
我有admin角色
</@authRoles>
5、在模板中使用国际化接口
以 freemaerker 视图为例:
<div>
i18n::${i18n["login.title"]}
i18n::${i18n.get("login.title")}
i18n::${i18n.getAndFormat("login.title",12,"a")}
</div>
具体内容可参考 国际化的章节。