A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

超前学习的同学请浅谈一下Struts的设计模式

3 个回复

倒序浏览
黑马网友  发表于 2011-7-28 18:12:51
沙发
1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。
一个扩展知识点:struts的配置文件可以有多个,可以按模块配置各自的配置文件,这样可以防止配置文件的过度膨胀;
2. ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个java类,这个类中的每个属性对应一个请求参数),封装成一个什么样的formbean对象呢?看配置文件。
3.要说明的是, ActionServlet把formbean对象传递给action的execute方法之前,可能会调用formbean的validate方法进行校验,只有校验通过后才将这个formbean对象传递给action的execute方法,否则,它将返回一个错误页面,这个错误页面由input属性指定,(看配置文件)作者为什么将这里命名为input属性,而不是error属性,我们后面结合实际的运行效果进行分析。
4.action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名,这样可以实现action程序代码与返回的jsp页面名称的解耦。
回复 使用道具 举报
黑马网友  发表于 2011-7-28 18:13:16
藤椅
struts是MVC设计模式的体现  M-model V-view C-control
Struts体系结构
视图:一组jsp文件。这组jsp文件中既没有业务逻辑,也没有模型信息,只有标签。
模型:表示应用程序的状态和业务逻辑,struts没有提供特定的模型组件,在大型分布式应用程序开发中,业务逻辑通常由JavaBean或ejb组件实现。
控制器:Struts的中枢,由ActionServlet类和Action类实现。ActionServlet在MVc模型中扮演中央控 制器的角色,接收所有客户端得请求,并把请求委派到指定的Action类。Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。
回复 使用道具 举报
黑马网友  发表于 2011-7-28 18:19:21
板凳
首先明确 struts2是在WEB层应用了MVC模式的一个框架。
MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的 Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用 Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马