看了《Agile Web Development with Rails》前面四章,觉得RoR确实是比较简捷。其实,ROR的应用领域也就是在WEB应用开发上,而在这个领域上,我用JAVA已经有很长时间了。MVC模式,ORM在JAVA领域已经是耳熟能祥的常识了。
唉,图插不近来,不爽。
下面主要比较JAVA基于Struts, Hibernate和ROR的MVC框架在实现上有何异同。
相同点有很多:
对于一个请求URL,在JAVA当中,有Servlet来处理URL的请求,Struts经过定义actionmapping的配置文件,Action,ActionForm来找到正确的处理请求的Action。
而在ROR中,有一个Router来控制对于URL的请求。对于用户的URL请求,它的组织形式固定。http://localhost:3000/say/hello,那么RoR会实例化SayController,调用Controller中的hello方法来处理URL的请求。
这里的Controller相当于我们的Action。应该进一步讲,Controller中的method相当于我们的Action。在JAVA中,Action不是线程安全的,我想在ROR中,Controller肯定也不会是线程安全的(may be,这个不确认,如果这样的话,那么在Controller类中就不能含有任何Controller的实例变量)。
控制器的作用是处理请求,调用Model完成数据库操作,然后把得到的结果传给VIEW端进行显示。我们平时在Action中已经做过了很多这样的事情。只不过,我们在Action和ORM之间加了一层,叫做业务逻辑层。一般,Action -> ××Service -> ××Dao 完成业务逻辑操作,同时,还需要向即将显示的View中设置很多显示页面所需要的变量。
因此,我们会在Action当中向Request,Session中设置很多值。所以,在咱们的程序中会经常出现这样的语句。request.setAttribute("a", objectA); request.getSession.setAttribute("b", objectB),络绎不绝。其实很讨厌,但是没有办法,必须要设置,不然就显示不了。
那么,ROR也是需要向View设置值的。只不过它在Controller中的Method中设置传递给View的变量
ruby 代码
- def methodA
- @time = Time.now;
- end
这样子,在View所对应的rhtml中,就可以输出这个@time的值。
rhtml 代码
其实就是取得刚才设置进去的变量。这个变量放在什么地方呢?无非就是在request,session,或者application上。只是现在我不知道具体放在什么地方而已
对于View,我就不用说什么了。人家用的是rhtml,JAVA用的是JSP,两者都是在html上迁入表达式。其根本,还是要转换为HTML这个标准形式。因此,对于javascript这样的页面客户端脚本语言都没有影响,应该js以前你怎么用,现在还怎么用就ok。
下面说几个我觉得ROR简单的:
- ror的开发用web server可是自动重载的哦,不像在java中,改动一下java代码,必须重新编译,然后部署到application server当中,然后运行。在我的机器上,ant之后,启动tomcat,一般时间在4分钟左右。相当的不爽。一直以来,提高开发效率是我们做开发的最为关注的事情。
- ROR相关的工具真是好。建立一个项目,rails demo,然后程序结构就出来了。启动服务器,ruby script/server;自动生成Controller, ruby script/generator Controller Say。你看看,简单嘛,一下子给你生成你要完成的小工作集。至少不用向我们在java中一样,首先去创建一个Action,然后去创建ActionForm,然后去修改Struts-config.xml,然后去新建JSP,然后去ant,然后去启动server,然后等着,然后在启动浏览器,然后http://, 然后如果有错,又得重新ant,server,等,启动浏览器,这样的日子何时是个尽头啊。
因此,两者相较,确实ROR方便。对于我来说,有这两点,足以让我选择好好学习ROR了。
分享到:
相关推荐
RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为必不可少的环节。在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在...
NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696
3. **方法和块**:Ruby中的方法定义简单,可以接受参数,并通过return语句返回值。块是Ruby的一个重要特性,类似于匿名函数,可以用在循环、筛选、映射等操作中。 4. **对象和类**:Ruby是纯面向对象的语言,每个值...
基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。
**神经网络Ror ResNet模型详解** 在深度学习领域,ResNet(残差网络)模型是具有里程碑意义的创新,由He et al.在2015年提出。该模型解决了深度神经网络训练中的梯度消失问题,允许构建非常深的网络结构。而“Ror”...
1. ActiveRecord:Ruby on Rails的ORM框架,通过简单的Ruby代码即可完成复杂的数据库操作。 2. Active Record查询接口:提供了丰富的查询语法,如链式查询和条件查询。 3. Testing:Rails内置测试框架,包括Unit ...
Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...
在Ruby on Rails(ROR)开发环境中,安装和配置正确的依赖包是至关重要的。这个压缩包包含了一系列用于ROR框架的基础组件,但不包括Ruby本身。让我们深入了解一下这些包的作用和重要性。 首先,`actionpack`是Rails...
Ruby on Rails(RoR)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程。在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是...
- **安装过程**:Ruby的安装相对简单,只需访问官方提供的下载页面,选择适合Windows系统的安装包进行下载。安装过程中,默认选项即可,如有特殊需求可自行调整。 ##### 2. 安装DevKit - **DevKit作用**:DevKit是...
### ROR 文件的上传与下载:深入解析与实践 在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails...
ROR环境 Ruby version 1.9.3 (java) RubyGems version 1.8.24 Rack version 1.4 Rails version 3.2.12 JavaScript Runtime therubyrhino (Rhino) Active Record version 3.2.12 Action Pack version 3.2.12 ...
- **实战项目**:通过实际构建项目来加深对理论知识的理解,推荐尝试开发一个简单的博客系统或电子商务平台。 #### 四、结语 通过这五天的培训课程,学员将能够熟练掌握RoR的基本开发技能,并具备独立构建完整Web...
破解版本的JAR包,放到本地磁盘,ECLIPUS直接用,到JVM设置直接加 -noverify -javaagent:D:\javarebel.jar
《机遇ROR的图书管理系统》是一份以Ruby on Rails(简称ROR)技术为核心,旨在构建高效、便捷的图书管理解决方案的学习资料。Ruby on Rails,是基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-...
FreeMIS是一个基于Ruby on Rails(RoR)框架构建的管理信息系统(MIS)。RoR是由David Heinemeier Hansson开发的一个开源Web应用程序框架,它遵循“Don't Repeat Yourself”(DRY)原则,强调简洁和生产力。RoR使用...
**敏捷开发第二版ROR必看** 在编程领域,Ruby on Rails(简称ROR)是一个深受开发者喜爱的开源Web应用程序框架,它基于Ruby语言,强调简洁、高效的代码编写。"敏捷开发第二版ROR必看"这个主题,指的是对敏捷开发...
在IT行业中,Ruby on Rails(简称ROR)是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发过程,提高开发效率。本文将深入探讨如何配置ROR开发环境,以及...
"ror留言板程序"是一个基于Ruby on Rails框架开发的简单应用,它主要用于实现用户在网站上留言和查看他人留言的功能。Ruby on Rails(简称RoR)是用Ruby语言编写的开源Web应用程序框架,遵循MVC(Model-View-...