More Related Content Similar to Grails:下一代Java Web开发框架 Similar to Grails:下一代Java Web开发框架 (20) Grails:下一代Java Web开发框架1. 胡键 Grails:下一代Java Web开发框架 3. Java Web开发者之惑 开发低效: 配置文件多、语法繁琐(XML) 常见功能仍需大量手工操作 安全、国际化、Layout、过滤器/拦截器、验证、URL映射、声明性事务、基本CRUD、ORM、Ajax…… Java作为开发语言的低表现力严重地影响开发速度 4. Java Web开发者之惑 缺乏对项目构建过程的直接支持 借助外部工具:Ant/Maven/Gradle 从头手工编写构建脚本 没有统一标准的构建任务框架 编译、预处理、打包、测试、部署…… 外部构建脚本难以直接切入项目构建的生命周期,如: 编译前/后 对于外部依赖缺乏好的管理 11. Grails的优势 高生产率 Groovy的高表现力 CoC消除了80%的配置工作量 Scaffolding消除了大量的手工劳动 结合自动化脚本可进一步提高工作效率 大量企业应用中常见功能的DSL GORM、Job、Action、Validation、i18n、Filter、Interception、Layout、Template、TagLib、GSP…… 大量可用的Plugin 12. TDD不再是梦 直接支持DDD Web 2.0/REST 保护遗留资产 其他 商业友好的开源许可证:Apache License, 2.0 商业公司的支持:VMWare 活跃的社区 社区快报:This Week in Grails(中文版:Grails每周观察) Grails的优势 16. Grails剖析 M:Domain Class 基于Hibernate POGO 易于测试 运行时动态注入持久化方法:save/list/delete ORM DSL 约束:简化验证 查询:动态查找器、Criteria DSL、HQL 事件&自动时戳 锁机制 乐观锁(缺省) 悲观锁,手工调用lock 编程性事务:withTransaction 18. Grails剖析 C:Controller Action Interceptor before和after 设置拦截条件 数据绑定 Command Object XML & JSON响应 典型方法:render、redirect、chain 可限制允许访问的HTTP方法 内置REST支持 内容协商 内置对Web Flow的支持 19. 其他重要组件 Service 封装涉及多个Domain Class的业务逻辑 事务:声明性(缺省)和编程性 Filter 跨Controller拦截请求 3种类型: before、after和afterView URL Mapping 自定义URL映射规则 Grails剖析 20. Grails剖析 测试 支持 单元测试 集成测试 功能测试 create-*命令会自动创建测试类 运行测试:grails test-app 测试完毕将产生测试报告 21. Grails剖析 国际化 惯例简化i18n: default.null.message 消息保存于Message Bundle: messages(_Locale).properties 支持自动切换Locale: Request Header:Accept-Language 支持手动切换Locale用于测试: /book/list?lang=es 标签库:<g:message> 23. 配置 Groovy DSL,语法简洁 conf目录 环境 隔离不同运行环境的配置 在不同环境下执行命令: grails [environment] [command name] 缺省3个环境:dev、prod和test 自动化脚本 Grails剖析 24. 解决Web应用常见安全问题 SQL注入:通过Domain Class存取数据 DoS:返回少量数据 跨站脚本/HTML/URL注入: 缺省对页面进行HTML转义 内置的链接标签(link、form、createLink、createLinkTo等)为防止代码注入会自动转义。 提供了codec,允许在呈现HTML、JavaScript和URL等数据时进行细粒度的转义。 Grails应用实践 36. Matt Raible's JVM Web Framework Matrix https://spreadsheets.google.com/pub?key=0AtkkDCT2WDMXdC1HOEtnUHpCejJMbUhGeGJWUmh5dVE&hl=en&output=html