在我眼里,struts还有几个关键的缺点,所以我用了3-5个项目后就不用了。
主要的缺点有这么些:
1、输入输出变量范围定义不清晰。在一个action中,所有输入输出变量都是作为对象变量存在的,既无法区分某个变量是属于哪个方法的,也不能区分哪个变量是输入变量还是输出变量。有人说,我每个请求都用单独的action来处理不就行了。这个办法的确可以区分每个请求之间的输入输出,但是你会面临action数量急剧膨胀的问题。
输入输出变量定义不清晰的带来的问题是代码可读性比较差。使用struts的时候,极端情况下,你得把jsp+action+js结合起来看才能确定某个请求有哪些输入输出。这对项目的维护者来说实在是件很痛苦的事情。
2、struts在处理ajax请求的时候太不方便了,虽然你可以配置一个插件让strus具备返回json result的功能。但是目前的插件距离我的实际需要还是有差距的。主要的问题在于,struts现有的json插件不能定义java对象序列化到json对象时的映射策略。就拿User对象来说吧,假如我目前设计的是订单界面,订单又引用了User对象作为订单的制单人属性。那么在序列化Order对象到前端的时候,我只需要序列化User对象的id,name就够了,user对象的其他属性可以统统不要。但我如果在维护用户的模块中,显示用户列表的时候,通常要显示用户对象的大部分属性。因此java对象到json对象的序列化策略应该是运行时动态设定的,不可能用annotation来申明。但struts以及struts插件并没有提供运行时根据请求为某个类选择不同映射策略的功能。
struts2,学习成本不可谓不高,功能不可谓不强大,但不符合我的需求。
学习strus2,假如不花个把月时间静下心来学习和实践,估计没人敢说自己精通strus2了。但mvc真的有必要那么复杂么?
mvc是什么?他应该能干什么?他的核心价值在哪?最小的mvc应该包含哪些功能?我们自己写一个mvc如何?自己写一个mvc框架需要超过一个月时间么?
分享到:
相关推荐
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
2. **学习Struts2基础知识**:熟悉Struts2的基本概念、架构设计和核心组件,如Action、配置文件等。 3. **重构Action类**:将Struts1中的ActionForm类重构为Struts2的Action接口实现。需要注意的是,Struts2的Action...
Struts2 OGNL语言学习笔记 OGNL(Object-Graph Navigation Language)是 Struts 2 中的一种表达式语言,主要用于简化 JSP 页面中的编码,使页面与后台代码分离。下面是 OGNL 语言的主要特点和用法: 1. 支持对象...
Struts2是一个非常流行的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。FCKeditor则是一款强大的在线文本...同时,学习并理解Struts2的拦截器机制和FCKeditor的工作原理,对于解决这类问题非常重要。
Struts2被期待的原因在于它的稳定性、性能以及易于进行单元测试的能力。通过这种方式,Struts2试图解决Struts1存在的编写过多代码和单元测试困难等缺点。 标签:“Struts2教程” 知识点: Struts2教程一般会从MVC...
### 知识点一:Struts2入门(MVC HelloWorld) #### 1.1 Struts2简介 ...以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习这些内容,开发者可以更好地掌握Struts2框架的核心技术和实践技巧。
Struts2 UI标签是Struts2框架中的一部分,主要用于简化Web应用中的视图层开发,提升开发效率。...在Struts2框架中,UI标签库包括了一系列与表单...通过学习和实践,开发者可以更好地掌握Struts2框架,提高开发质量和效率。
4. **解决Struts2配置文件无提示问题:** 如果在开发环境中遇到配置文件无提示的问题,通常是由于网络原因导致无法下载DTD文件。解决办法是在IDE的首选项中,手动指定DTD文件的本地路径,从而避免网络依赖,提高开发...
Struts2框架是一款基于Model-View-Controller(MVC)设计模式的开源...然而,随着Spring Boot和其他现代框架的兴起,Struts2的使用逐渐减少,但其设计理念和核心概念仍然对理解MVC模式和Web开发有着重要的学习价值。
Struts2是一个流行的Java web应用程序框架,用于构建和维护可扩展、高效且易于维护的MVC(模型-视图-控制器)架构的应用程序。它的核心是基于Action和Result的设计模式,提供了一种组织业务逻辑和表示层的方式。在这...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-...在实践中不断探索和学习,掌握Struts2的更多高级特性和最佳实践,将使你在开发复杂的Java Web应用时更加得心应手。
通过这个HelloWorld实例,读者不仅可以了解到Struts2的基本工作原理,还可以学习到如何在Glassfish2上部署和运行Struts2应用。这个简单的实例将为后续更复杂的Struts2应用开发打下坚实的基础。在实践中,随着对...
深入源码阅读,我们可以学习到Struts2如何优雅地处理HTTP请求,如何通过拦截器实现业务逻辑的分层,以及如何利用OGNL进行数据绑定。同时,这也有助于我们了解框架的设计思想,提高编程技艺,为将来定制化开发或者...
在IT行业中,SSH(Struts2、Spring、Hibernate)是一个常见的企业级开发框架组合,用于构建高效、可扩展的Web应用程序。在这个特定的项目中,我们关注的是"SH",即Struts2和Hibernate 3的整合应用,来实现一个简单的...
总之,“struts2+easyui+uploadfye文件上传”项目是一个结合了后端处理、前端展示和异步上传功能的典型示例,它展示了如何利用现有技术解决实际开发中的问题,对于学习和理解这些技术的集成应用具有很高的参考价值。
整合Struts2和Spring的主要原因是利用两者的互补性,提升应用的可维护性和可扩展性。Spring可以作为业务层的容器,管理Action和Service的生命周期,实现依赖注入,而Struts2则专注于处理HTTP请求,控制页面流转。 ...
1. Hibernate产生的原因:Hibernate的出现主要是为了解决JDBC编程中的一些问题,如代码和SQL混杂,不利于维护;SQL语句使得程序失去面向对象的特性;数据模型变化需要手动修改大量SQL;以及SQL错误在编译时无法检查...