说下Struts的设计模式 这是一道面试题 请大家帮帮忙 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 struts怎么能和设计模式貌似不搭边吧一个是思想,一个是具体应用的工具. struts就是典型的MVC模式啊,model-view-control。你看看mvc吧 Struts 中所使用的是命令模式 Action 接口就是一个命令接口。 struts2是在WEB层应用了MVC模式的一个框架!里面充满了AOP IOC等流行思想!其中如果要套用的设计模式的话,什么模式都有,比如动态代理,工厂,模板,结合ACTION,interceptor等等具体可以参考源码实现! struts 完整的MVC设计模式 如楼上 struts是MVC设计模式的体现 M-model V-view C-controlStruts体系结构视图:一组jsp文件。这组jsp文件中既没有业务逻辑,也没有模型信息,只有标签。模型:表示应用程序的状态和业务逻辑,struts没有提供特定的模型组件,在大型分布式应用程序开发中,业务逻辑通常由JavaBean或ejb组件实现。控制器:Struts的中枢,由ActionServlet类和Action类实现。ActionServlet在MVc模型中扮演中央控 制器的角色,接收所有客户端得请求,并把请求委派到指定的Action类。Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。 struts只是一个框架,不是设计模式,mvc才是设计模式,struts只是mvc设计模式的一种体现。 总体框架是mvc。但里边还有很多其它模式结合在一起。 struts实现了策略模式,在数据类型转换中应用!struts还实现了Memento模式,在表单校验失败时会保存actionform对象的前一个状态! 个人感觉Struts就是mvc的一个实现,如果非要说设计模式的话,就讲讲mvc吧 Struts 是一组相互协作的类、servlet 和 JSP 标记组成的一个可重用的 MVC 2 设计,这个定义表示Struts是一个框架. 简单层面看就是MVC模式,可是一个框架包含太多模式了,基本上都有代理;是面试的话就说说MVC,和代理、反射这些吧 struts 不就是mvc模式吗? struts是MVC的一个具本实现,MVC是设计模式,在不同平台都有不同的实现。 Struts1.2 控制流程关键还是要自己了解透彻。现总结如下。供参考: Struts1.2依然是应用很广的框架,熟悉其基本的控制流程是必要的:一、ActionServlet的初始化ActionServlet作为Struts组件的前端控制器,由于web.xml的相应配置:<load-on-startup>0</load-on-startup>在应用一加载时即会被实例化并调用其init方法,init方法所做的主要工作有二:1. 加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象 2. 加载资源文件,并创建用于封装资源文件的MessageResources对象 需要注意两点:如果web.xml有多模块配置,将创建多个ModuleConfig对象和MessageResources对象分别用于封装各个模块的struts配置文件和资源文件。 针对各个模块所创建的ModuleConfig对象和MessageResources对象将存储在ServletContext中,对应的属性名中有该模块名称的相应标识。 另外,如果有相应配置的话,init方法还将初始化数据源和PlugIn二、ActionServlet的process所有形如*.do的请求(根据web.xml中的相关配置)将提交给ActionServlet,最终将调用其process方法。process方法的主要工作有三:1. 根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的ModuleConfig对象,并存储到request中。 2. 根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig对象。 3. 调用RequestProcessor对象的process方法,将request和response作为参数传递给它。 三、RequestProcessor的processRequestProcessor对象的process方法的主要工作有五步:1. 调用自己的 processPreprocess(request, response)方法,该方法不进行任何操作,用于子类重写扩展其功能。 2. 获得与请求地址所匹配的ActionMapping对象,AcionMapping对象用于封装一个特定acion的配置信息。 3. 根据ActionMapping中的配置信息获得ActionForm对象(该对象将缓存到request或session中),并将表单数据填充到ActionForm中,然后根据ActionMapping的配置决定是否验证ActionForm,如果验证,将调用ActionForm的validate方法,若其返回的ActionErros对象中包含ActionMessage对象则表示验证失败,将转向action配置信息input属性所指示的地址。 4. 如果ActionForm无需验证或验证通过将创建并缓存与请求地址匹配的Action对象,将ActionMapping对象、ActionForm对象、request和response作为参数调用其execute方法。 5. 根据Action对象的execute方法返回的ActionForward对象,将请求转发或重定向到该ActionForward所封装的地址。 struts 是一种框架思想 简化编程 sturts 是 mvc 模式的一种实现了 首先STRUTS是三层架构,这个无需怀疑,然后你说下典型的三层架构是怎样的,然后再说struts是如果控制的,struts2。0开始就是webwork的翻版,降低了和JDK的耦合,然后view自然可以理解成JSP(也可以是别的),页面action配置提交struts的控制器(这里用XML文档进行控制)转到后台的JAVA类代码,进行后台的判断及数据库查询,然后再通过XML配置转到想显示的页面就可以了 .do---->contextServlet--->context-struts.xml--->action-->jspmodel<---->viewmodel<---->controller 应该是要问java中有哪些设计模式吧有23中,最简单的就是单例模式 mvc属于架构模式,大家就不要误导LZ啦 java-扭曲验证码 我的外键一对一,为何不能同时保存呢?,请大家帮忙看看 询问下这个东西的思路 ireport中如何求总记录数? 如何在servlet中利用jacob调用com组件 jsp和mysql的问题,关于权限 在struts中,有没有用过frame的 ??? 请求一个最简单的javabean的例子 CSDN论坛助手 重出江湖!!!!爽!爽!!爽!!知道什么是极速吗?快来体验一下了。[周一早8:00发布] 求大神关于云资源审核的需求 hibernate 实例保存出错~~急急急急急~~ jquery中json如何用?
一个是思想,一个是具体应用的工具.
Struts体系结构
视图:一组jsp文件。这组jsp文件中既没有业务逻辑,也没有模型信息,只有标签。
模型:表示应用程序的状态和业务逻辑,struts没有提供特定的模型组件,在大型分布式应用程序开发中,业务逻辑通常由JavaBean或ejb组件实现。
控制器:Struts的中枢,由ActionServlet类和Action类实现。ActionServlet在MVc模型中扮演中央控 制器的角色,接收所有客户端得请求,并把请求委派到指定的Action类。Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。
但里边还有很多其它模式结合在一起。
struts还实现了Memento模式,在表单校验失败时会保存actionform对象的前一个状态!
一、ActionServlet的初始化ActionServlet作为Struts组件的前端控制器,由于web.xml的相应配置:<load-on-startup>0</load-on-startup>在应用一加载时即会被实例化并调用其init方法,init方法所做的主要工作有二:1. 加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象
2. 加载资源文件,并创建用于封装资源文件的MessageResources对象
需要注意两点:如果web.xml有多模块配置,将创建多个ModuleConfig对象和MessageResources对象分别用于封装各个模块的struts配置文件和资源文件。
针对各个模块所创建的ModuleConfig对象和MessageResources对象将存储在ServletContext中,对应的属性名中有该模块名称的相应标识。
另外,如果有相应配置的话,init方法还将初始化数据源和PlugIn
二、ActionServlet的process所有形如*.do的请求(根据web.xml中的相关配置)将提交给ActionServlet,最终将调用其process方法。process方法的主要工作有三:1. 根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的ModuleConfig对象,并存储到request中。
2. 根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig对象。
3. 调用RequestProcessor对象的process方法,将request和response作为参数传递给它。
三、RequestProcessor的processRequestProcessor对象的process方法的主要工作有五步:1. 调用自己的 processPreprocess(request, response)方法,该方法不进行任何操作,用于子类重写扩展其功能。
2. 获得与请求地址所匹配的ActionMapping对象,AcionMapping对象用于封装一个特定acion的配置信息。
3. 根据ActionMapping中的配置信息获得ActionForm对象(该对象将缓存到request或session中),并将表单数据填充到ActionForm中,然后根据ActionMapping的配置决定是否验证ActionForm,如果验证,将调用ActionForm的validate方法,若其返回的ActionErros对象中包含ActionMessage对象则表示验证失败,将转向action配置信息input属性所指示的地址。
4. 如果ActionForm无需验证或验证通过将创建并缓存与请求地址匹配的Action对象,将ActionMapping对象、ActionForm对象、request和response作为参数调用其execute方法。
5. 根据Action对象的execute方法返回的ActionForward对象,将请求转发或重定向到该ActionForward所封装的地址。
model<---->view
model<---->controller
有23中,最简单的就是单例模式