`
tianxinet
  • 浏览: 266929 次
  • 性别: Icon_minigender_1
  • 来自: Net
社区版块
存档分类
最新评论

Struts 2-Struts Ti,基于Java的RoR?

阅读更多
今天看了一下Struts2的release计划,有如下描述:

“Struts 2.0 的发布遵循  Struts Ti 计划书。包括两个阶段: Struts 2.0 是第一阶段,第二阶段是后续的 Struts发布系列 (Struts 2.1 或 Struts 3.0) 。

Struts Ti是一个简单化的Model 2(MVC)框架,面向不希望服务端组件有额外的复杂性和繁琐配置,但是具备最新web框架特性的的web应用。它定位于合并Ruby on Rails 和 NanoWeb的简单性、WebWork2的精巧性、Beehive的友好性。

Struts Ti的关键词是简单、完美。Struts Ti应该有Ruby on Rails级的易用性,并为大型应用提供向JSF的平滑过渡(如果需要)。”

Ruby on Rails级的易用性--Struts Ti实现了基于java的RoR框架?其实也没关系,只要简单易用就行了。现在Struts文档还没有完成,2.0.0版8月份才能发布,到时候看看吧。

另:
“目前struts2正在开发中,如果现在就想升级到struts2,开发组推荐webwork2作为切入点。当然你也可以等一等,struts2预计今年3季度发布,不管是使用webwork2或struts1,都不用担心,struts2发布的时候,会包含webwork2、struts1的移植机制。”
分享到:
评论
16 楼 zkj_beyond 2006-11-12  
buaawhl 写道
thanks robbin.
webwork的 package name 和 namespace config,这个功能,在我以前用webwork的时候,已经有了,我看到过这部分。
不过,和struts module config 差不多。属于一种简单的helper。
module (namespace) 之间不存在层次关系,是一个 flat 结构。
和简单的 url -> action 并没有本质不同。

我指的是,zope, RoR, webwork, struts等的简单url mapping convention无法达到类似 xlink + xpointer 那样的丰富的分层分级别的寻址和mapping。

/model1/submodule3/actionName/methodName/paramters..

这里其实是一个分级module 。上一层module包括下一层module。
每一层module有自己的 dispatcher,而不是都定义在一个或几个统一的 mapping config file中。
这样的好处是,几乎不需要config, 只需要很少的convention pattern config。增加一个或这个多个,一级或者多级module 的时候,也不需要重新刷新读取整个 config part。


springMVC可以达到效果

http://www.redsaga.com/spring_ref/2.0/html/mvc.html#mvc-handlermapping
http://www.redsaga.com/spring_ref/2.0/html/mvc.html#mvc-controller-multiaction
http://www.redsaga.com/spring_ref/2.0/html/mvc.html#mvc-coc
扩展处理器映射(handler mapping)+MultiActionController+正则表达式
15 楼 tianxinet 2006-11-11  
struts2已经发布,并开始走入实际应用,现在可能很多人有开始关注它,所以翻翻老贴,增添一些信息,看看大家的讨论,也会获取一些有益的信息。
14 楼 tianxinet 2006-07-31  
robbin 写道
Webwork的Lead老兄Pat Lightboy在n年前就在自己的blog上面宣称,webwork2.2和RoR没有啥区别,只不过一个是Java实现,一个是Ruby实现。

你相信他的话吗?

其实更重要的是:开发者看到了其他框架的优点,并试图采纳和改进自己的设计,这对用户是好事。毕竟“完美”的东西是不可想象的。
至于Pat Lightboy老兄的话嘛,他姑妄说之,咱姑妄听之,哈哈
13 楼 buaawhl 2006-07-31  
welllove53 写道
继续跑题
我觉得一个"每一级映射又自己的 dispatcher"这个做法不是太好.
大的项目这样的dispatcher太多了.


分dispatcher比较适合大项目。
比如,第1级有10个module, 其中的(第2级)每个module又有10个module,这些module下面每个又有 10个class。

那么共有 2 级module,  1000 个 class。
如果这 1000 个class,统一配置的话,或者统一定制映射规则的话,比较难以管理。里面需要考虑 100 个pacakge 分组。

如果分成dispatcher.
那么需要  1 + 10 + 100 = 111 个 dispatcher。
这 111 个 dispatcher 之间都没有关系,都是独立管理自己的 modules or classes。都可以分别进行部署。

一般的应用都用不到这个功能。
什么样的网站比较适合?
就是那种多了一套业务,就需要增加一套代码的那种业务。
12 楼 welllove53 2006-07-31  
继续跑题

我觉得一个"每一级映射又自己的 dispatcher"这个做法不是太好.
大的项目这样的dispatcher太多了.

如果composeClassFullName( ..package, action, method. )="一个字符串",这个字符串作为URL中的"一个字符串.action",这样,你的URL中其他的模块随意定义就可以了.
虽然这个时候URL的语义不清楚,但是我们可以给个工具,很容易的找到package, action, method.
11 楼 buaawhl 2006-07-31  
welllove53 写道
能不能写一种方法,把/package/actionName/methodName生成URL
如:
***/model1/*add*.action = org.javaeye.**.model1.**Action.add


可以直接在html上声明你调要的actionName.methodName

主要还是为了减少配置


这种一级的 url -> class full name mapping 做起来比较容易。
只需要定义一条映射规则就可以了。

// module, action, method is from url
composeClassFullName( ..module, action, method. ){
return org.javaeye.{module}.{action}Action.{method}
}

多级的module 映射比较难做。
我现在的做法是,每一级映射又自己的 dispatcher 和独立的 mapping rule。

比如,
/module1/submodule3/subsubmodule2/...

module1 就映射到一个 dispatcher。
这个dispatch继续处理 submodule3/subsubmodule2/...
发现 submodule3, 根据mapping rule,映射到下一个dispatcher。

下一个dispatcher继续处理subsubmodule2/...

就可以获得一个  full class name, 找到对应的 action,调用method。

总结来说,就是,前几个module都找到的是 dispatcher class,最后一个module找到的是 action class。

----

跑题了。:D
10 楼 welllove53 2006-07-31  
能不能写一种方法,把/package/actionName/methodName生成URL
如:
***/model1/*add*.action = org.javaeye.**.model1.**Action.add


可以直接在html上声明你调要的actionName.methodName

主要还是为了减少配置
9 楼 buaawhl 2006-07-30  
thanks robbin.
webwork的 package name 和 namespace config,这个功能,在我以前用webwork的时候,已经有了,我看到过这部分。
不过,和struts module config 差不多。属于一种简单的helper。
module (namespace) 之间不存在层次关系,是一个 flat 结构。
和简单的 url -> action 并没有本质不同。

我指的是,zope, RoR, webwork, struts等的简单url mapping convention无法达到类似 xlink + xpointer 那样的丰富的分层分级别的寻址和mapping。

/model1/submodule3/actionName/methodName/paramters..

这里其实是一个分级module 。上一层module包括下一层module。
每一层module有自己的 dispatcher,而不是都定义在一个或几个统一的 mapping config file中。
这样的好处是,几乎不需要config, 只需要很少的convention pattern config。增加一个或这个多个,一级或者多级module 的时候,也不需要重新刷新读取整个 config part。
8 楼 robbin 2006-07-30  
在webwork中,你所谓的module在webwork里面的术语叫做namespace,看一下webwork的文档,你想要的功能webwork都已经有了。
7 楼 buaawhl 2006-07-30  
tiyi 写道
引用
另外就是缺少了 url pattern -> action name, method name 的mapping convention。


public String doInput(){
        return INPUT ;
}


url  = testAction!input.action

这样不是吗?


thanks.

知识严重过时。
去年使用webwork的时候,还在网上讨论过如何实现这个convention。
现在已经有了。 convention over configuration。

这个url能够直接映射到 class name ? 不用config ?
待我查查,是如何处理class name 的 package name的。


-----------  题外话。

不过,这种url mapping convention(无论是RoR的,还是webwork的,还是 others)都是远远不够的。比如,对于多级module的支持。

/model1/submodule3/actionName/methodName/paramters...
6 楼 tiyi 2006-07-30  
引用
另外就是缺少了 url pattern -> action name, method name 的mapping convention。


public String doInput(){
        return INPUT ;
}


url  = testAction!input.action

这样不是吗?
5 楼 buaawhl 2006-07-29  
RoR是全套的,包括MVC, ORM。
WebWork是MVC。

如果只是从Controller来看,确实有些像。
WebWork也可以配制成不使用 action的 execute方法,而可以任意指定一个方法名。
另外就是缺少了 url pattern -> action name, method name 的mapping convention。
据说在 action interceptor里面做一个这样的 url pattern -> action method, 并不是很难。只是这么做和这么用的人不多。

如果 web work 的 view 只是采用 jsp ,那就更像了。:D
前后台的code都是同一种语言 java。正如 RoR的前后台语言都是ruby。
Just Kidding.

RoR的一些convention 可以学到,但里面更关键的特性是靠着语法能力支撑的,很难移植到java。
java 6 script,  java 7 dynamic, reflection enhancemeng之后,可能比较容易。
4 楼 robbin 2006-07-29  
Webwork的Lead老兄Pat Lightboy在n年前就在自己的blog上面宣称,webwork2.2和RoR没有啥区别,只不过一个是Java实现,一个是Ruby实现。

你相信他的话吗?
3 楼 bluemeteor 2006-07-29  
tianxinet 写道
bluemeteor 写道
从struts1移植?如果能实现ror的境界……我宁愿重写一次


建议老项目老办法,新项目新办法。移植是为了向下兼容,但很爽的移植不多见。既然宣称有Ruby on Rails 和 NanoWeb的简单性、WebWork2的精巧性、Beehive的友好性,新项目还是直接用Struts2比较爽。


为什么任何时候看到三个月以前写的代码....总觉得惨不忍睹
2 楼 tianxinet 2006-07-29  
bluemeteor 写道
从struts1移植?如果能实现ror的境界……我宁愿重写一次


建议老项目老办法,新项目新办法。移植是为了向下兼容,但很爽的移植不多见。既然宣称有Ruby on Rails 和 NanoWeb的简单性、WebWork2的精巧性、Beehive的友好性,新项目还是直接用Struts2比较爽。
1 楼 bluemeteor 2006-07-29  
从struts1移植?如果能实现ror的境界……我宁愿重写一次

相关推荐

    COMSOL激光增材制造技术:热流力三场耦合模型的构建与模拟研究,COMSOL激光增材制造中热-流-力三场耦合模型的研究与应用:基于固体传热、固体力学、层流和动网格技术的多物理场分析,comsol激光

    COMSOL激光增材制造技术:热流力三场耦合模型的构建与模拟研究,COMSOL激光增材制造中热-流-力三场耦合模型的研究与应用:基于固体传热、固体力学、层流和动网格技术的多物理场分析,comsol激光增材制造热-流-力三场偶合模型 选用固体传热,固体力学,层流和动网格,考虑热物性以及马兰戈尼效应、表面张力,相变潜热,热对流和热辐射等 【软件工具】COMSOL5.6 【备注】,comsol三维模型 ,核心关键词:comsol; 激光增材制造; 热-流-力三场偶合模型; 固体传热; 固体力学; 层流; 动网格; 热物性; 马兰戈尼效应; 表面张力; 相变潜热; 热对流; 热辐射; COMSOL5.6; 三维模型。,COMSOL 5.6激光增材制造三场耦合模型

    基于PLL的SMO滑模观测器算法在永磁同步电机无传感器矢量控制中的应用及其与反正切SMO的对比:有效消除转速抖动,基于PLL的SMO滑模观测器算法在永磁同步电机无传感器矢量控制中的应用及其与反正切SM

    基于PLL的SMO滑模观测器算法在永磁同步电机无传感器矢量控制中的应用及其与反正切SMO的对比:有效消除转速抖动,基于PLL的SMO滑模观测器算法在永磁同步电机无传感器矢量控制中的应用及其与反正切SMO的对比:有效消除转速抖动,基于PLL的SMO滑模观测器算法,永磁同步电机无传感器矢量控制,跟基于反正切的SMO做对比,可以有效消除转速的抖动。 ,基于PLL的SMO滑模观测器算法; 永磁同步电机无传感器矢量控制; 反正切SMO; 转速抖动消除。,基于PLL SMO滑模观测器:永磁同步电机无传感器矢量控制新算法,优化抖动消除效能

    【毕业设计】java-springboot+vue个人云盘管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip

    【毕业设计】java-springboot+vue个人云盘管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip

    【语音识别】基于matlab自适应滤波器LMS算法鸟类物种识别【含Matlab源码 9977期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【毕业设计】java-springboot-vue电影推荐系统实现源码(完整前后端-mysql-说明文档-LunW).zip

    【毕业设计】java-springboot-vue电影推荐系统实现源码(完整前后端-mysql-说明文档-LunW).zip

    基于OpenCV和Python的实时口罩识别系统:支持摄像头与图片检测,界面简洁操作便捷,基于OpenCV的口罩识别系统 相关技.

    基于OpenCV和Python的实时口罩识别系统:支持摄像头与图片检测,界面简洁操作便捷,基于OpenCV的口罩识别系统 相关技术:python,opencv,pyqt (请自行安装向日葵远程软件,以便提供远程帮助) 软件说明:读取用户设备的摄像头,可实时检测画面中的人的口罩佩戴情况,并给予提示。 有基础的同学,可稍作修改,检测图片。 第一张为运行主界面。 第二张为部分代码截图。 第三和第四张为运行界面。 ,基于OpenCV的口罩识别系统; Python; OpenCV; PyQt; 远程协助; 摄像头读取; 实时检测; 口罩佩戴情况提示; 代码截图; 运行界面。,"基于OpenCV与Python的口罩识别系统:实时检测与提醒"

    Git与GitHub入门指南:版本控制、协作开发及基础命令教程

    内容概要:本文是一份关于 Git 和 GitHub 的入门指南,详细介绍了一整套从安装到进阶使用的完整流程。文章首先阐述了版本控制的重要性,并解释了 Git 的特点和优势。接着逐步介绍了 Git 和 GitHub 的使用方法,包括安装设置 Git、创建和管理 GitHub 账户、创建和克隆仓库,以及日常操作如提交、推送、拉取、分支管理和处理冲突的具体指令和操作步骤。还涉及到高级主题如合并请求、持续集成等功能的介绍,帮助读者深入了解 Git 和 GitHub 的应用范围和最佳实践。 适用人群:适用于刚开始接触版本控制系统的初学者,特别是那些正在寻找 Git 和 GitHub 实际操作指导的学生和技术爱好者。 使用场景及目标:①为刚踏入软件开发领域的新人提供详尽的基础教学,使其能够快速理解和掌握必要的技能;②指导已有一定经验但仍想进一步深化理解的开发人员如何优化日常工作流程;③促进团队合作效率提升,通过具体的实例演示如何利用版本控制系统协调多人协作。 其他说明:随着 Git 和 GitHub 成为现代软件开发的标准工具之一,这份资料不仅涵盖了关键知识点,而且配有多图例解析和实操练习,确保每个阶段的学习都能得到良好反馈和支持。读者可以通过动手实践来巩固所学知识,在实践中遇到困难也能及时参考本文获得解决方案。

    python安装-16. 使用指定序列和数值创建一个字典-分配伴侣.py

    python安装-16. 使用指定序列和数值创建一个字典——分配伴侣.py

    Python+OpenCV魔方识别系

    本研究的目的是基于Python和OpenCV开发一个魔方识别系统,并提供相应的源码和部署教程。通过该系统,用户可以将魔方的图像输入,系统可以自动识别魔方的状态,并给出相应的还原方案。具体来说,本研究的主要内容包括以下几个方面: 图像预处理:通过使用OpenCV提供的图像处理算法,对输入的魔方图像进行预处理,包括图像去噪、边缘检测、图像分割等操作,以提高后续的识别准确率。 特征提取与模式识别:通过使用OpenCV提供的特征提取算法,对预处理后的图像进行特征提取,以获取魔方的状态信息。然后,通过机器学习算法,对提取到的特征进行模式识别,以确定魔方的状态。 还原方案生成:根据识别到的魔方状态,使用经典的还原算法,生成相应的还原方案。通过该方案,用户可以轻松地还原魔方,提高解决效率。

    基于Springboot与Vue.js的WMS仓库管理系统源码详解:前后端分离架构下的Java实践与功能详述,基于Springboot和Vue的前后端分离WMS仓库管理系统源码,详细功能参考详情 ,S

    基于Springboot与Vue.js的WMS仓库管理系统源码详解:前后端分离架构下的Java实践与功能详述,基于Springboot和Vue的前后端分离WMS仓库管理系统源码,详细功能参考详情。,Springboot vue仓库管理系统源码Java 前后端分离 WMS仓库管理 BS 功能见详情 ,Springboot; Vue; 仓库管理系统; 源码; Java; 前后端分离; WMS仓库管理; BS; 功能详情,Springboot+Vue仓库管理系统源码:前后端分离的WMS管理BS应用

    用AI学安卓游戏开发1-控制小球上下左右移动2代码

    用AI学安卓游戏开发1——控制小球上下左右移动2代码, 初始化小球随机自有移动,遇到屏幕边缘反弹,摇杆介入后小球停止自有移动,按照摇杆控制方向移动。

    【图像融合】基于matlab拉普拉斯方法水下图像增强融合【含Matlab源码 9983期】复现.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像加密】基于matlab差分扩展缩略图保持加密【含Matlab源码 9692期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像重建】CT图像重建【含Matlab源码 8035期】.md

    CSDN Matlab武动乾坤上传的资料均是完整代码运行出的仿真结果图,可见完整代码亲测可用,适合小白; 1、完整的代码内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    基于ATP-EMTP的110kV海底电缆与架空线雷击过电压仿真分析与研究,基于ATP-EMTP的110kV海底电缆与架空线雷击过电压仿真分析与研究,110kV海底电缆-架空线雷击过电压ATP-EMTP

    基于ATP-EMTP的110kV海底电缆与架空线雷击过电压仿真分析与研究,基于ATP-EMTP的110kV海底电缆与架空线雷击过电压仿真分析与研究,110kV海底电缆-架空线雷击过电压ATP-EMTP仿真分析 ,核心关键词: 110kV海底电缆; 架空线; 雷击过电压; ATP-EMTP仿真分析; 分析。 关键词用分号分隔,如上所示。,雷击过电压仿真分析:110kV海底电缆及架空线ATP-EMTP研究

    基于800kV高压直流输电的VSC-HVDC仿真模型研究:控制策略与性能分析,基于800kV-VSC-HVDC的直流输电仿真模型研究:深入探讨控制结构与电压稳定性,800kV-VSC-HVDC直流输电

    基于800kV高压直流输电的VSC-HVDC仿真模型研究:控制策略与性能分析,基于800kV-VSC-HVDC的直流输电仿真模型研究:深入探讨控制结构与电压稳定性,800kV-VSC-HVDC直流输电仿真模型(Matlab) 流器拓扑:VSC两电平流器 电压等级:直流800kV,交流500kV 控制结构:逆变侧定有功控制与电流内环PI+前馈解耦,整流侧定直流电压与电流内环+PI前馈解耦; 输电距离:100km; 双端电压电流均为对称的三相电压电流; 直流电压稳定在800kV; 双端网侧THD<2% 电子资料, ,800kV; VSC HVDC; 直流输电仿真模型; Matlab; VSC两电平换流器; 直流电压稳定; 逆变侧定有功控制; 电流内环PI+前馈解耦; 整流侧定直流电压与电流内环; 输电距离; 双端电压电流对称; 双端网侧THD<2%。,Matlab仿真模型:800kV VSC两电平换流器HVDC输电系统

    【电池】基于matlab太阳能电池漂移扩散【含Matlab源码 11051期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【毕业设计】java-springboot-vue电商应用系统实现源码(完整前后端-mysql-说明文档-LunW).zip

    【毕业设计】java-springboot-vue电商应用系统实现源码(完整前后端-mysql-说明文档-LunW).zip

    【运动学】基于matlab追踪法导弹打飞机仿真【含Matlab源码 11016期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    uniapp使用蓝牙通信示例

    uniapp使用蓝牙通信示例

Global site tag (gtag.js) - Google Analytics