Grails-Java开发人员的圣杯
- 格式:ppt
- 大小:1.86 MB
- 文档页数:29
深入浅出JBoss Seam作者Michael Yuan译者包亮发布于 2007年11月2日上午1时3分社区Java主题Web框架标签JBoss Seam,JBoss,EJB,JSF本文节选了Michael Yuan和Thomas Heute所著的即将出版JBoss Seam: Power and Flexibility Beyond Java EE 5.0第一章和第二章,内容有所删减。
相关厂商内容免费迷你书下载:深入浅出Struts 2活动:体验基于OpenSolaris的Web/企业应用(8.30 杭州)SOY Framework:Java富客户端快速开发框架Hadoop中的集群配置和使用技巧免费迷你书下载:Grails入门指南相关赞助商InfoQ中文站Java社区,关注企业Java社区的变化与创新,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Java技术社区提供一流资讯。
什么是Seam?JBoss Seam是“Java EE 5.0的一个轻量级的框架”。
这是什么意思?难道Java EE(Enterprise Edition) 5.0本身不是一套“框架吗”?为什么在官方规范之外,还需要另外一个框架?好吧,我们就将seam看作是本应该被包括在Java EE 5.0中的一个“遗漏的框架”吧。
它在Java EE 5.0框架的上层,为所有的在企业Web应用中的组件提供了一个统一的、易于理解的编程模型。
它同样使基于状态的应用和业务流程驱动的应用的开发易如反掌。
换句话说,Seam致力于开发者生产力和应用扩展性。
1. 整合和强化Java EE框架Java EE5.0的核心框架是EJB(Enterprise JavaBeans)3.0和JSF(JavaServer Faces)1.2。
EJB 3.0(以下简称EJB3)是基于一个POJO(Plain Old Java Objects)的业务服务和数据库持久化的轻型框架。
Play Framework hotswap及源码分析reach your maximum productivity。
play! 允许开发人员修改java文件,保存,然后刷新浏览器,立马可以看到效果。
不需要编译,也不需要重启服务器。
play! 最大的卖点就在于 hot swap,正如它自己宣称的:reach your maximum productivity。
play! 允许开发人员修改java文件,保存,然后刷新浏览器,立马可以看到效果。
不需要编译,也不需要重启服务器。
Java 要想实现动态更新 class 文件,不外乎两种手段:替换 classloader、替换 JVM。
因为替换 JVM 引起的开销更大,需要维护 JVM 的堆、栈等运行信息,所以 hot swap 通常是选择替换 classloader。
比如 grails 里面就是选择替换 classloader,它会自己维护一个线程,定期轮询源文件是否发生修改,以替换原来的 classloader。
那么 play! 宣称的 hot swap 又是怎么实现的呢?让我们来看看play! 的内部流程:1. play! 使用了 Apache Mina 作为底层的 http server,然后使用了自己关于 Mina IoHandler 接口的实现——HttpHandler2. 当浏览器发起一个 request:2.1 Mina Server 生成一个 Mina Request,转发给 HttpHandler 的 messageReceived 方法2.2 play! 解析 Mina Request 和 Mina Session,包装成自己的 Request 对象1.Request request = parseRequest(minaRequest, session);2.3 play! 检测 Route 文件修改情况,根据 Route 配置信息将 Route/Action 的信息赋给 Request 对象1.Router.detectChanges();2.Router.route(request);2.4 play! 根据当前配置的开发模式来采用不同的策略调用 Action 来理 Request1.if (Play.mode == Play.Mode.DEV) {2.Invoker.invokeInThread(new MinaInvocation(session, minaRequest, minaResponse, request, response));3.} else {4.Invoker.invoke(new MinaInvocation(session, minaRequest, minaResponse, request,response));5.}2.5 如果 play! 当前是 DEV 模式,invokeInThread方法会让 invocation 对象代理 run() 方法1.public void run() {2.try {3.before();4.execute();5.after();6.} catch (Throwable e) {7.onException(e);8.} finally {9._finally();10.}11.}咱们来看看 before() 方法:1.public static void before() {2.Thread.currentThread().setContextClassLoader(Play.classloader);3.if(!Play.id.equals("test")) {4.Play.detectChanges();5.if (!Play.started) {6.Play.start();7.}8.}9.//10.}在 Play 类的 detectChanges() 方法里面,有这么一句:1.classloader.detectChanges();哈哈,play! 修改源文件后,刷新浏览器即见效的奥秘就在这里了。
第一章【思考题】1、请简述Spring框架的优点。
2、请简述什么是Spring的IoC和DI。
【答案】1、Spring框架的优点如下:(1)非侵入式设计:Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。
(2)方便解耦、简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大的降低了组件之间的耦合性。
(3)支持AOP:Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。
(4)支持声明式事务处理:只需要通过配置就可以完成对事务的管理,而无需手动编程。
(5)方便程序的测试:Spring提供了对Junit4的支持,可以通过注解方便的测试Spring 程序。
(6)方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。
(7)降低了Java EE API的使用难度:Spring对Java EE开发中非常难用的一些API (如:JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。
2、IoC的全称是Inversion of Control,中文名称为控制反转。
控制反转就是指在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring 容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。
这样,控制权由应用代码转移到了Spring容器,控制权发生了反转。
DI的全称是Dependency Injection,中文称之为依赖注入。
它与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。
从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。
ssm框架技术题库及答案交流SSM框架,即Spring、SpringMVC和MyBatis的组合,是Java开发中常用的轻量级企业应用开发框架。
下面我将提供一些SSM框架技术题库及答案,供大家学习和交流。
1. Spring框架的核心是什么?- 答案:Spring框架的核心是控制反转(IoC)和面向切面编程(AOP)。
2. SpringMVC是如何实现请求的映射的?- 答案:SpringMVC通过注解@Controller和@RequestMapping来实现请求的映射。
3. MyBatis与JDBC的区别是什么?- 答案:MyBatis是一个半自动的ORM框架,它允许开发者编写SQL语句并映射到Java对象,而JDBC是一个全手动的数据库访问API,需要手动编写SQL语句并处理结果集。
4. Spring框架中的Bean是什么?- 答案:Spring框架中的Bean是构成应用程序的主要组件,它们由Spring IoC容器进行管理。
5. SpringMVC中的DispatcherServlet的作用是什么?- 答案:DispatcherServlet是SpringMVC的前端控制器,它负责将请求路由到相应的处理器。
6. 什么是AOP?在Spring框架中如何使用?- 答案:AOP(面向切面编程)是一种编程范式,它允许开发者将横切关注点(如日志记录、事务管理等)与业务逻辑分离。
在Spring框架中,可以通过@Aspect注解和相关API来实现AOP。
7. MyBatis的配置文件有哪些?- 答案:MyBatis的配置文件主要包括mybatis-config.xml(全局配置文件)和映射文件(Mapper XML文件或注解)。
8. Spring框架的事务管理是如何实现的?- 答案:Spring框架通过声明式事务管理来实现事务控制,主要通过@Transactional注解来声明事务的边界和特性。
9. SpringMVC的视图解析器有哪些类型?- 答案:SpringMVC的视图解析器主要有InternalResourceViewResolver(用于解析JSP视图)、BeanNameViewResolver等。
1 1: grails222 Examples2 Grails2333 2: REST55 Examples5 grailsREST API5 REST5 HTTPSGrails Server6 3: 77 Examples778 GSP8 4: 9 Examples99911You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: grailsIt is an unofficial and free grails ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official grails.The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to ********************1: grailsGrailsRAD Java API 。
Grails 简介Grails 是搭建在动态语言Groovy 之上的一个开源MVC Web 开发框架,Grails 的一个显著特点在于“快”,这主要得益于Groovy 脚本语言的动态特性,也得益于其“一栈式”的设计。
与传统的Java/C# Web 开发框架相比,它可以使用极少的代码和配置实现诸如表单提交、数据库读写等常见的Web 应用功能,实现了开发效率的成倍提高。
Grails 是一个遵循MVC 设计模式的Web 开发框架。
它分别用Domain Class、View、Controller 对应于MVC 的模型、视图和控制器。
可以简单的把一个Domain Class 理解为数据库中的一张表,Grails 在底层通过Hibernate 将Domain Class 和数据库的表进行了映射。
View 在Grails 中指的是GSP 页面(注意是GSP 不是JSP),它用于显示用户界面。
GSP 与JSP 类似,既可以编写静态网页的元素,也可以嵌入Groovy 代码实现动态内容。
Controller 在Grails 中充当着重要的角色:它可以响应用户的请求,可以接收用户提交的表单,还可以访问模型的数据,并传递给View。
Grails 在MVC 三方面的具体内容,将在后面的例子中做详细介绍。
一.Grails开发环境搭建1.下载jdk、sts,同时在sts中安装Groovy和Grails插件2.配置Grails环境变量图一:GRAILS_HOME图二:path 3.sts配置Grails1.在STS中新建Grails Project,会自动生成如下目录其中domain文件夹就是用来存放模型层的Groovy类的,也即数据库持久层;controllers 即是存放控制层文件的;views就是视图层,是用来存放GSP文件的;taglib是用来存放自定义的G标签的文件;services是用来存放各种服务的文件;utils是用来存放工具类的;i18n 是用来支持国际化的;conf是存放配置文件的,其中数据库的配置文件便在这里;test/unit 是用来存放单元测试文件的;test/integration是用来存放集成测试文件的;plugin中为该项目中所用的插件;lib中用来存放java包;target中可以用来存放导出的war文件;web-app 中存放web服务的一些配置文件,还有js、图片、css等文件。
第1章初识MyBatis框架习题一、填空题1.MyBatis的删除操作在映射文件中是通过配置【<delete>】元素来实现的。
2.MyBatis映射文件中<mapper>元素是配置文件的根元素,它包含一个【namespace 】属性,该属性为这个<mapper>指定了唯一的命名空间。
3.使用MySQL中的【concat()】函数进行字符串拼接,可以有效防止模糊查询时可能出现的SQL注入问题。
4.mybatis-config.xml作为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,其中主要内容是获取【数据库连接】。
5.【MyBatis 】是当前主流的Java持久层框架之一,它与Hibernate一样,也是一种ORM框架。
二、判断题1.MyBatis映射文件中<mappers>元素是配置文件的根元素,它包含一个namespace属性,该属性为这个<mapper>指定了唯一的命名空间。
(x)2.使用MyBatis框架非常简单,只需在应用程序中引入MyBatis框架lib目录中的全部JAR包以及数据库驱动包即可进行项目运行。
(X )3.ORM就是一种为了解决面向对象与关系型数据库中数据类型不匹配的技术,它通过描述Java对象与数据库表之间的映射关系,自动将Java应用程序中的对象持久化到关系型数据库的表中。
(v )4.MyBatis的更新操作也需要进行事务提交。
(v )5.创建的映射文件中的SQL语句要以面向对象的写法进行书写。
(x )三、选择题1.MyBatis的删除操作有关说发错误的是。
(D )A: MyBatis的删除操作在映射文件中是通过配置<delete>元素来实现的。
B: MyBatis的删除操作也需要进行事务提交。
C: MyBatis的删除操作执行了SqlSession的delete()方法。
D: MyBatis的删除操作和添加操作时,也需要封装整个实体类。
Gradle 入门到精通(一)前言Gradle详解内容将分篇介绍,这里首先介绍Gradle的基础知识和项目结构。
1、Gradle 安装gradle的网站是/。
我们可以通过相关的网站获取到相应的gradle的版本。
也可以在这个网站上面获取相应的资料。
1.1 下载相应的版本https:///releases在上面的网站下载最新gradle的版本1.2 配置将下载的文档解压,解压完成后,将路径添加到系统变量Path内部。
1.3 校验安装在命令行下输入如果有相对应的输出代表安装成功2 Groovy语法入门2.1 why Groovy?为什么我们学习gradle需要学习groovy? groovy是google推出的一款基于java的脚本语言。
只要简单几句代码就可以完成java程序。
虽然groovy看起来是脚本编程语言,但是究其更本也是运行在jvm上面的java语言,知识groovy对java进行了二层的封装。
因为这个语言的灵活性,gradle选择了groovy。
2.2 helloWorld让我们使用最简单的helloWorld代码来入门。
首先要确保gradle安装正确,安装正确后,我们新建一个文件夹,在这个文件夹内部新建一个build.gradle文件。
接着我们在命令行执行gradle 后就可以看到相应的结果了。
2.3 基础语法上面是gradle如何定义一个变量的写法。
注意gradle没有要求每行必须以;结尾,一行就是一句代码上面是定义方法的写法,如果是无返回的方法。
需使用def定义。
如果指定了相应的返回类型的话,可不使用def关键字。
注意如果有返回值的话,需在最后一行将需要返回的值返回。
2.4 字符串字符串有三种格式●‘’代表完全按照符号内部的内容●“”如果内部有$变量值的话,先取变量值●‘’’‘’’代表文本支持换行2.5 容器类型在Java里提供了多种的容器类型,常见的有List Map Set。
他们分别适合不同场景。