`
seemoon
  • 浏览: 159226 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

简单比较rails与javaee框架的路由配置

阅读更多
==1.路由
简单来说,路由就是连接两点通路的查找机制,它不是指静态的两点间的通路,而是指获得通路的一种机制。

==2.web路由
web路由是解析url请求并找到相应处理者的机制。

==3.rails的路由机制
实现:ActionController::Routing::Routes
配置文件:config/routes.rb
ActionController::Routing::Routes.draw do |map|
  map.connect "/:controller/:action/:id"
end


  • map.connect声明了外部url和内部代码的一个路由连接。
  • map.connect支持正则表达式


除了map.connect声明方法外,rails还提供了对相关路由以组形式创建的高级方式,这种方式跟REST相关,即Representationl State Transfer,表述状态转移。

map.resources :articles


这个声明声明了对articles资源的CRUD等操作路由
  • 请求创建:/articles/:id/new (get协议)
  • 创建:/articles (post协议)
  • 请求更改:/articles/:id;edit (get协议)
  • 提交更改:/articles/:id (put协议)
  • 删除:/articles/:id (delete协议)
  • 列表:/articles (get协议)


也可以用conllection和member来声明新的操作方法

引用
map.resources :articles, collection=>{:query=>:get}, :member=>{:comment=>:post}


resources也可以是嵌套的

引用
map.resources :articles do |article|
  article.resources :comments
end


还可以指定命名空间:
map.namespace :sport do |sport|
  sport.resources :articles
end


映射了/sport/articles这个路由

==4.routes.rb的配置机制
ruby的config有两种模式,一种是yaml方式,第二种就是代码模式,routes.rb属于后者。

ActionController::Routing::Routes.draw do |map|
  map.xx
end


Routes是Routing这个module中的一个类变量:

module ActionController
  module Routing
    class << self
      Routes=RoutSet.new
    end
  end
end



而RoutSet是路由具体实现者,它通过一个map内部类来封装了路由配置(config)部分,并且曝露给(yield)外部进行运行时配置:

module ActionController
  module Routing
    class RouteSet
       class Mapper
          def connect
          end
          def namespace
          end
       end
    end
  end
end


RoutSet的draw方法是配置的入口点
ActionController::Routing::Routes.draw do |map|
 map.connect xxx
 map. resources xxx
end


RouteSet的draw方法:
def draw
  ...
  yield Mapper.new(self) #self is RoutSet
end


==5.与javaee框架的路由比较:

===struts2:

	<package name="pkg" extends="fatherpkg" namespace="/administrator/xx">
    	
    	<action name="action1" class="xxx.xx.xx">
    	    <result name="success">/administrator/xx/yy.ftl</result>
    	</action>
        ...
	</package>


struts2用package对action(rails叫controller)进行逻辑组合,通常一个功能模块由多个action来实现,对每个action进行具体配置,
<action name="action1" class="xxx.xxx.xx">
  <result name="success"/>
</action>


  • name是url中action的影射url
  • class是对应的java action类
  • result是render的目标,如ftl模板


===java faces:
与struts2类似的,struts2要声明action class,faces则要声明bean
 <managed-bean>
  <managed-bean-name>oneBean</managed-bean-name>
  <managed-bean-class>xx.xxx.xxBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>


并声明导航规则:
 <navigation-rule>
  <from-view-id>/pages/administrator/xx.jsp</from-view-id>
  <navigation-case>
   <from-outcome>outCome1</from-outcome>
   <to-view-id>/pages/administrator/yy.jsp</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>


总结:
1. coc和REST使得rails的路由配置更为简单,并且表达能力更为丰富
2. rails对result或者说to-view的处理直接放在controller中,完整性和可读性好
3. 可以在struts2配置文件中使用package继承的方式降低路由配置的复杂度
4. struts2配置文件可以配置拦截器栈(intercepter),应用到package中,实现是以接口、类为粒度,rails只需要在controller中声明before_filter :method,并实现相应过滤方法,粒度更细,实现也更简单。
分享到:
评论

相关推荐

    rails路由之图文解释

    让你知道在rails中如何使用路由,路由与URL是如何对应的。

    ruby on rails与MySql的环境配置——支持rails 2.3.5以上版本

    《Ruby on Rails与MySQL环境配置详解》 在开发基于Web的应用程序时,Ruby on Rails(简称Rails)框架和MySQL数据库的结合是常见的选择。本文将详细介绍如何在Windows环境下配置Ruby on Rails以支持Rails 2.3.5及...

    rails3.1安装与mysql配置 windows

    标题 "rails3.1安装与mysql配置 windows" 涉及到的是在Windows操作系统上安装Ruby on Rails 3.1框架并配置MySQL数据库的过程。这是一个关键的开发环境设置步骤,对于使用Rails进行Web开发的程序员来说至关重要。Ruby...

    rails框架介绍分享

    介绍rails框架,版本是rails2点几的,不过思路差不多,具体区别可以去看官网

    Ruby-Annotate注释Rails类模式和路由信息

    Ruby是一种面向对象的编程语言,尤其在Web开发领域中,由于其强大的框架Rails的存在,它变得非常流行。本文将深入探讨"Ruby-Annotate"工具,这是一个用于Rails项目的实用程序,能够自动为你的模型添加注释,显示有关...

    Ruby on Rails:Rails框架入门.docx

    Ruby on Rails:Rails框架入门.docx

    rails框架指南.pdf

    Rails与Java框架(如Spring)的比较,主要在于Rails的易用性和开发效率。Rails的自动配置和约定优于配置的设计原则,使得开发过程更加直观。而Java框架通常更加复杂,需要更多的配置,对于新入门的开发者来说可能...

    配置高可用的rails

    总结上述知识点,在构建高可用的rails应用时,需要综合考虑多个组件的配置,以及对性能的持续监控与优化。整个架构需要确保在单点故障情况下应用的持续可用,同时还要有良好的扩展性和维护性。对于有一定Ruby基础的...

    rails版本区别

    标题与描述概述的知识点主要集中在Rails 2与Rails 3之间的关键差异,这些差异涉及到脚本命令、配置文件以及路由的处理方式。以下是对这些知识点的详细解释与扩展: ### 脚本命令的变化 在Rails 2中,开发者通过一...

    Ruby on Rails安装及MySQL数据库配置指南

    Ruby on Rails 安装及 MySQL 数据库配置指南 本文详细介绍了 Ruby on Rails 的安装步骤,以及 MySQL 数据库的配置方法,并提供了一些官方阅读资源。 一、Ruby on Rails 安装 Ruby on Rails 的安装可以分为以下几...

    Rails项目源代码

    5. **路由配置**: Rails的路由系统将URL映射到控制器的行动上,如`/sign_up`可能对应`users#new`,用于创建新用户。`config/routes.rb`文件定义了所有路由规则,包括资源路由、命名路由和自定义路由。 6. **视图...

    配置rails环境

    在Ruby on Rails开发环境中,配置过程是至关重要的第一步。Rails是一个基于Ruby的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)架构模式。在安装完Ruby之后,配置Rails环境通常包括以下几个关键步骤: 1. **...

    rails框架1111111111

    在描述中提到的“使用rails是你的网站发布更容易,简单,快捷”,这揭示了Rails框架的主要优点。Rails通过提供一系列内置功能和约定优于配置(Convention over Configuration, CoC)的原则,大大简化了开发流程。...

    rails_layout, 为各种前端框架生成 Rails 应用程序布局文件.zip

    rails_layout, 为各种前端框架生成 Rails 应用程序布局文件 RailsLayout gem使用这里 gem 可以设置你选择的前端框架的布局文件:Zurb基础 5.3Bootstrap 4.0Bootstrap 3.3它还将为 Bootstrap 或者基础设置设计视图。...

    The Rails 4 Way

    - **routes.rb文件**:这是Rails应用程序中配置路由规则的地方,通过编写不同的路由规则可以实现复杂的应用逻辑。 - **命名路由**:允许开发者通过名字引用路由,使得代码更具可读性,并且可以在路由规则改变时自动...

    RSepc rails 测试框架介绍

    RSepc 是一款基于 Ruby 的行为驱动开发(BDD)测试框架,它被广泛应用于 Rails 应用程序的测试。RSpec 提供了一种清晰且简洁的方式来编写可读性强的测试代码,使得测试用例更像是对软件行为的规范描述,而不是简单的...

Global site tag (gtag.js) - Google Analytics