为什么要用Structs,Struts为程序员带来哪些好处?

CodeTrailblazerX
• 阅读 94

Structs是对MVC2模型的实现,于是许多讲解Struts的书用Servlet做了个符合MVC2要求的Web应用,再用Struts做了个同样功能的Web应用。但是在对两种方式的对比中,我发现Struts似乎并没有为开发者带来很大的方便。以下是我的对比:
视图:两者一样
控制器:利用Struts并不能完全摆脱这一层,开发者还是需要写Action.使用Servlet方式,也是写一个同Action一样的Servlet充当控制器。两者在代码量上没有区别,在程序逻辑上也一样;
模型:两者一样
两者的主要差别:Struts多了一个ActionServlet
既然编写一个类似Acition的Servlet就可以充当控制器,那么Struts在提供Action后,ActionServlet的意义何在?
ActionServlet的作用是拦截用户请求,并将用户请求转发给合适的Action,而自己的Web应用是将用户请求直接发送给功能等同于 Action的自定义Servlet.ActionServlet在拦截过程中注入了一个ActionForm对象和一个ActionMapping对象。经过这个过程后,Struts为开发者带来了如下实际的好处:
通过ActionMapping,Action在转发时,并不是转发给一个实际的页面。而是转发给在strus-config.xml中已经配置的对象。这意味着,在不改变Action代码的情况下就可以更换其转发的页面;如果没有ActionMapping,当有100个Action都要更换转发页面时,我们不得不在庞大的Web应用中找出这100个Action,修改其转发页面,然后再重新编译它们。有了ActionMapping后,只需要在 struts-config.xml中修改相应的配置即可,这样既查找方便,又不用重新编译。
现在的一个主要问题是:Web应用一旦投入使用之后,更换转发页面的可能性有多大?Action转发的页面,一般都是直接向用户展示的JSP页面。软件工程中,一切和用户直接打交道的部分都是极易发生变化的。
当然Struts肯定还有其它方面的便利之处,但是这些还并不足以打动我去使用Struts,即便它还提供了丰富的标签库。
最终一个重要的原因让我认为我的确需要采用像Struts这样的框架。当然,首先我一直是相信MVC模型所倡导的理念的:将视图和模型分开。把和用户交互的部分独立出来的好处是明显的。
首先如前面所述,和用户交互的部分是最易发生变化的,视图的独立意味着变化的隔离;然后是将视图分离出去后,开发者可以将精力集中在对业务流程的处理上。一个大型的系统,最复杂的最核心的部分就是处理业务流程。可是实际的情况是,繁琐地界面处理占用了程序员大量甚至是大部分的时间。
我相信了MVC模型带来的好处,所以开发Web应用时我一定会采用这种模式,但是我并不需要Struts,因为Servlet就可以让我实现MVC模型。我的这种想法似乎很自然,但是这里面隐含着一个前提是:我每次开发Web应用,都必须有意识的严格按照MVC规范来写。这看起来不是很困难,但是做起来却很难。因为有时候在业务处理过程中嵌入几行关于界面的代码似乎是非常自然而且简单的,于是我就真的这样做了。一段时间之后,我突然发现我的业务处理过程和界面显示部分又混杂在一起了。至此我才真正相信我要使用Struts.
因为Struts可以规范程序员的行为。也许Struts并不能降低实际的代码量,甚至有时候不使用Struts的代码可能更简洁,但是按照Struts 写出来的Web应用却一定是符合MVC模型的。就我认为,这是采用Struts的最大好处。规范程序员的行为,让程序在不知不觉中写出符合优秀架构的代码,这应该是所有框架的共同目的,也应该是根本目的。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
SSH框架和SSM框架
(一)SSH框架是Struts2Spring Hibernate  而SSM框架指的是SpringMVCSpringMybatis区别:1\.主要区别就是Struts2和SpringMVC的区别。【各种框架的对比】类中已经写了2\.Hibernate和Mybatis的区别Mybatis优势
Easter79 Easter79
3年前
springmvc详解
spring和struts2的区别:1.springmvc是方法级别的拦截器,struts是类级别的拦截器,springmvc一个方法对应一个request上下文而struts2一个对象对应一个request上下文。springmvc无限接近于0配置,而struts需要大量的配置2.springmvc支持单例开发,二struts最好使用多例开发
Easter79 Easter79
3年前
ssh框架介绍
SSH为strutsspringhibernate的一个集成框架,是目前较流行的一种JAVAWeb应用程序开源框架。 Struts  Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Strut
Easter79 Easter79
3年前
ssh 框架搭建汇总
1、作为菜鸟,先理解自己理解:spring是用来实例化struts中的类和hibernate的类struts用的是mvc,包括url路由器匹配等。hibernate用的是数据库操作。参考如下:1.struts就是一个mvc的架构,在控制器,视图和模型方面都有其特定的组件,所以我们在SSH组合中,更多的是利用了contr
Wesley13 Wesley13
3年前
JAVA SSH 框架介绍
SSH为strutsspringhibernate的一个集成框架,是目前较流行的一种JAVAWeb应用程序开源框架。 Struts  Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Stru
Easter79 Easter79
3年前
Struts2+Spring3.0+MyBatis3.0平台搭建
Struts2采用的版本是2.2.3Spring采用的版本是3.0.5MyBatis,即是以前的iBatis。采用的版本是3.0.5我的习惯呢是一个一个来,先让struts在系统上跑起来,Struts2的文档让偶有点生气了,因为在以前的Struts2版本中!(http://static.oschina.net/uploads/img/2
Easter79 Easter79
3年前
SpringBoot学习之路:08.Spring Boot中添加Servlet应用
   在web应用中Servlet的应用比较多,最开始的web应用就是全部以servlet来实现的,后来出现了Struts、Struts2,到今天应用非常广泛的SpringMvc,这些webmvc框架比原来的servlet功能更加强大,开发效率而更高,但是实际上这些框架底层都是servlet在做支撑。今天我们学习如何在SpringBoot添加Servl
Wesley13 Wesley13
3年前
Java 核心内容相关面试题【4】
spingmvc和structs的区别我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。spring3mvc可以认为已经100%零配置了(除了配置springmvcservlet.xml外)。SpringMVC和Struts2的区别:1.机制:sp
Stella981 Stella981
3年前
SpringBoot学习之路:08.Spring Boot中添加Servlet应用
   在web应用中Servlet的应用比较多,最开始的web应用就是全部以servlet来实现的,后来出现了Struts、Struts2,到今天应用非常广泛的SpringMvc,这些webmvc框架比原来的servlet功能更加强大,开发效率而更高,但是实际上这些框架底层都是servlet在做支撑。今天我们学习如何在SpringBoot添加Servl
Wesley13 Wesley13
3年前
Java三大框架是什么,有什么作用
三大框架:StrutsHibernateSpringJava三大框架主要用来做WEN应用。Struts主要负责表示层的显示Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作)Hibernate主要是数据持久化到数据库再用jsp的servlet做网页开发的时候有个web.xml的映射文件,里面有一个mapping的标
Easter79 Easter79
3年前
Struts2常量的配置
    struts.xml配置文件最大的作用就是配置Action和请求之间的对应关系,并配置逻辑视图名和物理视图资源之间的对应关系。除此之外,struts.xml文件还有一些额外的功能,例如Bean配置、配置常量、导入其他配置文件等。Struts2除了可使用struts.xml文件来管理配置之外,还可使用struts.properties晚间来管理常
CodeTrailblazerX
CodeTrailblazerX
Lv1
期待生活有惊喜,盼望事事有回应。
文章
5
粉丝
0
获赞
0