Solon Web 开发,七、视图模板与Mvc注解
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>
具体内容可参考 国际化的章节。
Solon Web 开发,七、视图模板与Mvc注解的更多相关文章
- Solon Web 开发
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Solon Web 开发,一、开始
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Solon Web 开发,二、开发知识准备
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Solon Web 开发,四、请求上下文
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Solon Web 开发,五、数据访问、事务与缓存应用
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Solon Web 开发,六、过滤器、处理、拦截器
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Solon Web 开发,八、校验、及定制与扩展
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Solon Web 开发,九、跨域处理
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Solon Web 开发,十一、国际化
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
随机推荐
- 对ORM的理解
1. 在面试中可能会问到这个问题,什么是ORM? ORM是对象关系映射(Object Relational Mapping),简称ORM,或O/RM,或O/R mapping,是一种程序技术. 白话理 ...
- .net 程序通过 crontab 无法启动,手动执行脚本可以启动
一.问题描述 .net 网关程序需要设置定时重启,按照日常操作先把正在运行的 PID kill 掉后,再执行启动服务. 把脚本放到 crontab 计划任务上,可以把服务 PID kill 掉,但无法 ...
- Linux使用docker部署nacos
官网地址:https://nacos.io/zh-cn/docs/quick-start-docker.html 先把sql文件导入到mysql中 我也放了基础的sql /* * Copyright ...
- FastAPI(六十五)实战开发《在线课程学习系统》基础架构的搭建
在之前三篇,我们分享的就是需求的分析,基本接口的整理,数据库链接的配置.这次我们分享项目的基本框架,目录结构如下: common目录 通用的目录,一些通用的处理放在这里 models目录 数据库相关的 ...
- cmake配置MFC项目属性
MFC的使用 使用下面的代码设置为: # 设置MFC的使用 SET(CMAKE_MFC_FLAG 2) 这里的 2 代表: 在共享 DLL 中使用 MFC, 1代表在静态库中使用 MFC 设置字符集 ...
- 【机器学习】决策树(Decision Tree) 学习笔记
[机器学习]决策树(decision tree) 学习笔记 标签(空格分隔): 机器学习 决策树简介 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).其每个非叶节点表示一个 ...
- 【LeetCode】707. Design Linked List 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 1048 - Conquering Keokradong
1048 - Conquering Keokradong PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: ...
- sql注入 —sqli-labs/Less-5 逻辑注入
逻辑注入: 1.尝试查询数据库: (1)判断数据长度 -- 构造逻辑判断:and length(database())=8 当长度等于"8 "时回显正常,所以数据库长度为" ...
- toString()、String.valueOf、(String)强转
1.基本类型 (1)基本类型没有toString()方法 (2)推荐使用String.valueOf(); (3)无法强转 =========补========= (String)是标准的类型转换,将 ...