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>

具体内容可参考 国际化的章节。

最新文章

  1. iOS 之消息推送(个推)---个人小结
  2. unity3d 扩展NGUI —— 限制UI点击响应间隔
  3. 3Sum Closest &amp; 3Sum Smaller
  4. [转]iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
  5. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~
  6. Bootstrap 3 How-To #3 布局
  7. Android里viewpager切换页面存在页面不相邻的页面被销毁的问题
  8. laravel实现数据库读写分离配置或者多读写分离配置
  9. MVC MVC 路由详解
  10. DynamicResource与StaticResource的区别
  11. Undefined symbols for architecture armv7错误解决方法
  12. android app demo
  13. VC++运行库 集32位/64位整合版
  14. 《Practical Vim》第五章:命令行模式
  15. django之Models和ORM
  16. 获取当前操作系统的ip
  17. suse 关于使用 /etc/init.d/boot.local的问题
  18. 使用Jsoup获取网页内容超时设置
  19. Qt、MVB
  20. java区分绝对路径和相对路径

热门文章

  1. CF934A A Compatible Pair 题解
  2. CentOS7下使用NFS文件共享给Window server 2012
  3. mysql导入文件 日期时间报错:[Err] 1067 - Invalid default value for &#39;active_time&#39;
  4. 【LeetCode】1024. Video Stitching 解题报告(Python)
  5. 【九度OJ】题目1180:对称矩阵 解题报告
  6. 【九度OJ】题目1192:回文字符串 解题报告
  7. 【LeetCode】416. Partition Equal Subset Sum 解题报告(Python & C++)
  8. Arm64架构下静态编译Nginx
  9. 『学了就忘』vim编辑器基础 — 95、命令模式中的相关命令
  10. Reliable evaluation of adversarial robustness with an ensemble of diverse parameter-free attacks