ActFramework是一种简洁易用,具有强大表达力的Java mvc 全栈框架:
- 非Servlet架构,数秒之内启动项目。拷贝文件即部署
- 无与伦比的开发体验。即改即刷,开发过程无需重启
- 强劲的运行时性能
- 强大快捷的依赖注入,完全符合JSR330标准
- 内置了单页/移动应用支持
- 完美的RESTFul/ JSON 支持
- 内置CORS
- Session/Header映射可绕过Cookie无效情况
- 必须的安全性
- Session cookie是http only (javascript不可读写), secure(在产品模式下,只能用于https链接); payload有hash签名,还可以选择加密
- 在配置文件中加上` CSRF =true`来打开CSRF保护机制
- XSS保护: Rythm模板引擎默认 escape 变量输出
- AAA plugin提供最为方便 灵活的AAA(认证/授权/记账)机制
- 使用但不过分依赖注解
- 不同运行环境下的配置支持
- 方便而强大的数据库访问
- 内置多数据源支持
- 简单而强大的视图架构以及多模板引擎支持
- 内置多种工具以简便应用开发:
- 发送邮件
- 作业调度
- 事件处理
一个返回 helloworld 的请求处理器(演示视频 : 7分钟):
@GetAction(“/hello”)
public String sayHello() {
return “Hello World!”
}
一个完整的User RESTful服务应用(演示视频 : 7分钟):
package demo.helloworld; import act. controller .Controller; import act.db.morphia.MorphiaAdaptiveRecord; import act.db.morphia.MorphiaDao; import org. mongodb .morphia. annotation s.Entity; import org.osgl.mvc.annotation.*; import java.util.Map; import static act.controller.Controller.Util.notFoundIfNull; @Entity("user") public class User extends MorphiaAdaptiveRecord { @Controller("user") public static class Service extends MorphiaDao { @PostAction public User create(User user) { return save(user); } @GetAction public Iterable list() { return findAll(); } @GetAction("{id}") public User show(String id, Map data) { return findById(id); } @PutAction("{id}") public User update(String id, Map data) { User user = findById(id); notFoundIfNull(user); user.mergeValues(data); return save(user); } @DeleteAction("{id}") public void delete(String id) { deleteById(id); } } }
Act 1.8.22 更新内容
* 命令行命令 `route.print` 不能正确处理 keyword 匹配的路由 #1136
* 提供配置选项禁止 JSON body patch #1134
* API 文档 – 特殊标记 session 变量 #1133
* API 文档 – 字段上的 javadoc 被忽略了 #1132
* 增强 AdaptiveBean – 更好地支持继承 #1131
* 允许在某个 Bean 上指定 JSON 输出的字段命名方式 #1130
* 上传文件错误 #1128
* Act-Test 为 cache 关键字添加同义词 #1126
* Act-Test 增加 `startsIgnoreCase` 和 `endsIgnoreCase` 校验器 #1125
同步更新的插件:
* act-beetl – 更新 beetl 到 3.0.0.M2
* act-beetlsql – 更新 beetlsql 到 2.12.0.M1
获取软件下载地址: