(1)支持的表现层技术单一
Struts 1只支持JSP作为表现层技术,不提供与其他表现层技术,例如Velocity、FreeMarker等技术的整合。这一点严重制约了
Struts 1框架的使用,对于目前的很多Java EE应用而言,并不一定使用JSP作为表现层技术。
虽然Struts 1处理完用户请求后,并没有直接转到特定的视图资源,而是返回一个ActionForward对象(可以理解ActionForward
是一个逻辑视图名),在struts-config.xml文件中定义了逻辑视图名和视图资源之间的对应关系,当ActionServlet得到处理器
返回的ActionForword对象后,可以根据逻辑视图名和视图资源之间的对应关系,将视图资源呈现给用户。
从上面的设计来看,不得不佩服Struts 1的设计者高度解耦的设计:控制器并没有直接执行转发请求,而仅仅返回一个逻辑视图
名——实际的转发放在配置文件中进行管理。但因为Struts 1框架出现的年代太早了,那时候还没有FreeMarker、Velocity等技
术,因而没有考虑与这些FreeMarker、Velocity等视图技术的整合。
虽然Struts 1有非常优秀的设计,但由于历史原因,它没有提供与更多视图技术的整合,这严重限制了Struts 1的使用。
(2)与Servlet API严重耦合,难于测试
因为Struts 1框架是在Model 2的基础上发展起来的,因此它完全是基于Servlet API的,所以在Struts 1的业务逻辑控制器内,
充满了大量的Servlet API。
当我们需要测试上面Action类的execute方法时,该方法有4个参数:ActionMapping、ActionForm、HttpServletRequest和
HttpServletResponse,初始化这4个参数比较困难,尤其是HttpServletRequest和HttpServletResponse两个参数,通常由Web容
器负责实例化。
因为HttpServletRequest和HttpServletResponse两个参数是Servlet API,严重依赖于Web服务器。因此,一旦脱离了Web服务器
,Action的测试非常困难。
(3)代码严重依赖于Struts 1 API,属于侵入式设计
正如从上面代码片段中所看到的,Struts 1的Action类必须继承Struts 1的Action基类,实现处理方法时,又包含了大量Struts
1 API:如ActionMapping、ActionForm和ActionForward类。这种侵入式设计的最大弱点在于,一旦系统需要重构时,这些Action
类将完全没有利用价值,成为一堆废品。
可见,Struts 1的Action类这种侵入式设计导致了较低的代码复用。
分享到:
相关推荐
struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别...
Struts2框架安全缺陷1
struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签struts1标签
Struts1中怎样实现DispatchAction配置多个input属性\Struts1中怎样实现DispatchAction配置多个input属性
通过阅读此pdf格式文档,您可以了解struts2的安全缺陷
struts1 struts2 Struts1和Struts2区别
3 Servlet依赖方面的对比:Struts 1 Action依赖于Servlet API,因为Struts 1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts 2 Action不再依赖于Servlet API,从而允许Action脱离Web...
struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1struts1
05 转换器(Converter)——Struts 2.0中的魔术师 06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现IoC 09 在Struts 2中实现文件上传 10 在Struts...
包含Struts1中文和英文的API和帮助文档
详细说明了 struts2的一些安全缺陷,可以让开发者,在学习和开发时,避免安全的漏洞。
Struts2框架安全缺陷.pdf
struts1.x和struts2.0电子书
struts1核心包,整个框架所需要的jar包都有
struts1和struts2中文教程..................
struts1 和 struts2所需jar包。主要包含以下内容: struts-1.3.10-all.zip struts-1.3.10-apps.zip struts-1.3.10-lib.zip struts-1.3.10-src.zip struts-2.3.4.1-all.zip struts.rar
struts标签库struts标签库struts标签库struts标签库struts标签库struts标签库struts标签库struts标签库
struts1 web.xml struts1配置
struts1_详解 struts1框架实例详解