当前位置:编程学习 > JAVA >>

请教高手java高手 Struts原理 (不要官方的说法 )

小弟是初学者 请高手帮忙说的明白点
答案:Struts是作为Apache Jakarta项目的组成部分。该项目的目标是为建立Java web 应用程序而提供的一个开源框架,目前大家一般使用的版本为1.1,但也出现了1.2。通过使用struts 框架可以改进和提高Java Server Pages (JSPs)、Servlet、标签库以及面向对象的技术在web应用程序中的应用。应用Struts框架可以减少应用MVC(Model- View -Controller)设计模式的开发时间,从而提高开发效率。 项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages (JSPs)、Servlet、标签库以及面向对象的技术水准(可以到 http://jakata.apache.org/Struts下载)。 J2EE体系包括JSP、Servlet、EJB、WEB SERVICE等多项技术。这些技术的出现给电子商务时代的WEB应用开发提供了一个非常有竞争力的选择。怎样把这些技术组合起来,形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。此步骤一般主要由架构设计师完成,设计师将根据项目需求,对J2EE体系中的各种技术进行筛选取舍,并考虑到开发过程中的角色分工、后期的运行维护,以及系统扩展性等诸多因素,建立系统的架构。一个成功的软件需要有一个成功的架构,但软件架构的建立是一个复杂而又持续改进的过程,软件开发者们不可能对每个不同的项目做不同的架构,而总是尽量重用以前的架构,或开发出尽量通用的架构方案,Struts就是其中之一,Struts是流行的基于J2EE的架构方案,其他常用的基于J2EE的架构方案还有Turbine、RealMothods等。 谈到Struts,就不得不提到MVC设计模式。MVC即Model-View-Controller的缩写,它是web应用当中的常用的设计模式。MVC减弱了业务逻辑接口和数据接口之间的耦合,同时让视图层更富于变化。Struts是MVC的一种实现,它很好的结合了Jsp,Java Servlet,Java Bean,Taglib等技术。 1.控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充 Action Form(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。动作类访问核心商业逻辑,即访问Java Bean或调用EJB。最后动作类把控制权传给后续的JSP文件,由JSP文件生成视图。所有这些控制逻辑利用Struts-config.xml文件来配置。 2.视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。 3.模型:模型以一个或多个Java Bean的形式存在;在Struts中,主要存在三种Bean,分别是:Action,ActionForm,EJB或者Java Bean。Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。 了解了Struts的各个部分的职责,其工作流程就清晰可见了。在Struts中,用户的请求一般以*.do(这个后缀是可以自由配置的)作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。希望能帮到你
说的简单点  struts就是JSP+SERVLET的高级应用!!!  他不过是把常用的东西封成了标记!!!你要是想你也可以封几个自已的标记.他的回显还有点用!!!呵呵!!  不过还是喜欢JSTL很方便!!!
原理就是,在web中配置一个所有以.do结尾的都转到ActionServelet里去处理,ActionServlet会自动把表单数据填充到相应的ActionForm中,当然这是根据配置文件struts-config.xml中的配置信息去处理的,ActionServlet根据请求的路径到struts-config.xml找到相应的配置信息,并根据这些信息new一个Action出来,当然他们先看这个Action存不存在,如果不存在才会new,存在的话就返回已存在的对像,然后执行Action里的excute方法,最好后过excute返回的ActionForword取得跳转路径,跳转到相应的页面,以上就是一个简单的原理说明,基本上知道这些就够了,如果想详细了解就看一下ActionServlet的源代码。
个人感觉: 在jsp页面上提交表单,然后通过xml配置,找到对应的java文件,对接收到的表单数据进行处理,再通过xml找到返回的页面 ok~ 
要解释的很清楚,我觉得从struts-config.xml的 6个属性来解释
path是对应的是页面请求字段 type是根据path的来找到对应的action来处理
name属性是对应表单bean的位置 对应到上面的actionForm属性里面的form
scope是吧表单存入的位置 是session 还是request?
valildate是否进行表单验证 如果有表单验证 就涉及到input属性 她表示验证失败之后跳转的页面
还有forward属性 是在action中处理之后 返回的findForward(“”)对应的值

上一个:用Java写一个计算机的程序怎么写啊
下一个:求Java连接SQL和Oracle数据库之间的异同。

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,