对Struts的理解
1、struts是一个按MVC模式设计的Web层框架,其实他就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。
2、ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个java类,这个类中的每个属性对应一个请求参数),封装成一个什么样formbeand对象呢?看配置文件。
3、要说明的是,ActionServlet把formbean对象传递给action的execute方法之前,可能会调用formbean的vaildate方法进行校验,只有校验通过后才将这个formbean对象传递给action的execute方法,否则,它将返回一个错误页面,这个错误页面有input属性指定,(看配置文件)为什么将这里命名为input属性,而不是error属性。
4、action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名,这样可以实现action程序代码与返回的jsp页面的解耦。
5、Struts的优缺点
优点:(1)实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现。
(2)有丰富的tag可以用,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。
(3)页面导航——使系统的脉络更加清晰。通过一个配置文件,即可把我整个系统各部分之间的联系,这对于后期的维护有着莫大的好处,尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
(4)提供Exception处理机制
(5)数据库连接池管理
(6)支持l18N
缺点:(1)转到展示层,需要配置forward,如果又是个展示层的jsp,组要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward。注意,每次修改配置之后,要求重新部署整个项目,而tomcat这样的服务器,还必须冲洗启动服务器。
(2)Struts的Action必需是thread-safe方式,它仅仅允许一个势力去处理所有的请求。所以action用到的所有的资源都必需同一同步,这个就引起了线程安全的问题。
(3)测试不方便。Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试页很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。
(4)类型的转换。Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化,但它的转化都是在Class级别,而且转化的类型是不可以配置的。类型转化时的错误信息返回给用户也是非常困难的。
(5)对Servlet的依赖性过程强。Struts处理Action时必需要依赖ServletRequest和ServletResponse,所以它摆脱不了Servlet容器。
(6)前端表达式语言方面。Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是JSTL的表达式语言在Collection和索引属性方面处理显得很弱。
(7)对Action执行的控制困难。Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重新去写Servlet来实现你的这个功能需求。
(8)对Action执行前和后的处理。Struts处理Action的时候是基于class的hierarchies,很难再action处理前和后进行操作。
(9)对时间支持不够。在Struts中,实际上是一个表单Form对应一个Action类(或DispatchAction),换句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式成为application event。application e。vent和component event相比是一种粗粒度的事件。
6、Struts的应用(如Struts架构)
Struts是采用Java Servlet/JavaServer Pages技术,开打Web应用程序的开放源码的framework。采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用框架。Struts有如下的主要功能:(1)包含一个controller servlet,能将用户的请求发送到相应的Action对象;(2)JSP来自tag库,并且在controller servlet中提供关联支持,帮助开发人员创建交互式表单应用;(3)提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。
对Struts的理解的更多相关文章
- Java面试题之谈谈你对Struts的理解
		
1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.x ...
 - struts的理解
		
1.struts是一个按MVC模式设计的Web层框架,其实他就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类.我们可以在web.xm ...
 - struts深入理解之登录示例的源码跟踪
		
废话不多,直接上图:(色泽比较重的是追踪的路径)
 - 谈谈你对 Struts 2 的理解
		
谈谈你对Struts的理解. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子 ...
 - 对Java框架spring、hibernate、Struts的粗浅理解
		
对 Struts 的理解:1. struts 是一个按 MVC 模式设计的 Web 层框架,其实它就是一个大大的 servlet,这个Servlet 名为 ActionServlet,或是 Actio ...
 - struts form表单提交action处理之后没有跳转页面
		
作为一个ssm新人,对struts的理解也仅仅是书本上一些简单的示例, 对如下这个form进行提交之后,执行完action,并return 一个字符串,在struts配置文件中配置了对应的jsp页面, ...
 - Struts框架----进度1
		
一.Struts的理解 1.struts是一个按MVC模式设计的web层框架,其实它就是一个大的Servlet:ActionServlet,或者是ActionServlet的子类.在web.xml文件 ...
 - 对SSH框架的理解
		
首先是对struts的理解.struts是把servlet.jsp以及众多标签库整合在一起的开源web框架,他实现了mvc设计模式.Struts实际上就是对MVC的各部件提供了现成的实现组件.Stru ...
 - SSH三大框架笔面试总结
		
Java工程师(程序员)面题 Struts,Spring,Hibernate三大框架 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建Sess ...
 
随机推荐
- 目标检测的图像特征提取之(二)LBP特征
			
LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像年提出,用于纹理特征提取.而且,提取的特征是图像的局部的纹理特征: 1.LBP特征的描述 原始的LBP算子定义为在3* ...
 - ThreadLocal类的理解
			
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的.各 ...
 - React使用rAF动画介绍
			
一. <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF ...
 - OpenCV源码阅读(1)---matx.h---mat类与vec类
			
matx.h matx类是opencv中的一个基础类,其位于core模块中,所执行的操作时opencv矩阵和向量的运算.如果熟悉基于matlab的图像处理,那么很容易想到,所有对图像的操作归根结底都是 ...
 - Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\xx'
			
1.清了C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files 2.给上述文件夹EveryOne和IIS_Use ...
 - struts2中token防止重复提交表单
			
struts2中token防止重复提交表单 >>>>>>>>>>>>>>>>>>>&g ...
 - C# App.config   详解
			
读语句: String str = ConfigurationManager.AppSettings["DemoKey"]; 写语句: Configuration cfa = ...
 - 宏HASH_GET_NEXT
			
/*******************************************************************//** Gets the next struct in a h ...
 - tomcat部署两个相同的项目报错不能访问
			
需要在同一个tomcat上搭建一个项目的两个版本,都要能跑起来 直接复制两个项目部署,会出现两个错误: 1,webAppKey 冲突 2,tomcat启动会有内存溢出(OutOfMemoryErr ...
 - 真正解决ASP.NET每一个页面首次访问超级慢的问题 (转载)
			
原文:http://www.afuhao.com/article_articleId-219.shtml 摘要:ASP.NET页面首次打开很慢,但别的页面如果没有访问过,去访问也会慢.你也许认为它是在 ...