Struts理解

    Struts是Apache软件基金下Jakarta项目的一部分。

     简单的讲,要应用Struts,就是建立对应的actionForm、action、jsp页面,并配置web.xml, struts-config.xml。配置struts-config.xml相当比较简单,记得添加对应的form-beans, action-mappings即可。而如果不涉及更高级的开发,则几乎无需重新配置web.xml。



  Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。根据上面对framework的描述,我们很容易理解为什么说Struts是一个web framwork,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。 

  1、Struts的MVC体系结构 

  struts framework是MVC2(引入了"控制器"这个概念,控制器一般由Servlet来担任,客户端的请求不再直接送给一个处理业务逻辑的JSP页面,而是送给这个控制器,再由控制器根据具体的请求调用不同的事务逻辑 模式的体现。


      从左到右,分别是其表示层(view)、控制层(controller)、和模型层(Model)。

        表示层:Struts标签库(TagLib),可以简化创建用户界面的过程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags这几个Taglib。

        控制器:核心是ActionServlet类。ActionServlet类是struts框架中的核心组件。ActionServlet继承了javax.servlet.http.HttpServlet类,它在mvc模型中扮演控制器的角色。ActionServlet主要负责接收http请求信息,根据接收的请求参数和Struts配置(struts-config.XML)中ActionMapping,将请求送给合适的Action去处理,Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。

        业务逻辑的操作主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。 非常重要的一点:不要在Action中包含任何业务逻辑操作,而是应该调用一个Model层的JavaBean来实现你的业务逻辑操作。

       模型:JavaBean。

   2、Struts1与Struts2的区别


   3、Sturts的配置文件

      web.xml文件,这是一个基于servlet的Web应用程序都需要的部署描述文件,Struts有两个组件要在该文件中进行配置,它们是:ActionServlet和标签库。

     web.xml文件需要配置的   http://blog.csdn.net/ff55c/article/details/6736979

    一个基本的struts-config.xml文件,并把它放在/Webapps/mystruts/WEB-INF/目录中,该文件是基于Struts应用程序的配置描述文件,它将MVC结构中的各组件结合在一起,开发的过程中会不断对它进行充实和更改。

    4、Struts与JSF的区别

       Struts和JSF/Tapestry都属于表现层框架,这两种分属不同性质的框架,后者是一种事件驱动型的组件模型,而Struts只是单纯的MVC模式框架

      相同点:都是用标签库处理表示层,模型层都采用bean,struts是ActionBean,JSF是BackingBean,都采用XML管理bean配置、页面导航; 这里JSF和Struts的web.xml配置何其相似,简直一模一样。正如Struts的struts-config.xml一样,JSF也有类似的faces-config.xml 配置文件.JSF的managed-bean类似Struts的ActionForm,正如可以在struts-config.xml中定义ActionForm的scope一样,这里也定义了managed-bean的scope为session。

      不同点:不同的是jsf是标准,struts是一个开源框架;侧重点不同-Struts侧重控制层;JSF侧重表示层;页面与bean的绑定方式不同-在Struts中,jsp和FormBean是紧密结合在一起的,只要写一个jsp就必须对应一个FormBean,同时jsp上的每个组件都对应FormBean中相同名字的字段;在JSF中,JSP页面中的组件通过value属性和backing bean的字段关联,这样就有比较大的灵活性,页面上的每个 组件可以对应相同的backing bean,也可以对应不同的backing bean; JSF有一个独立的事件发生和页面导航的流程安排,这个思路比struts要非常清晰。JSF除了managed-bean,还融入了新的Ioc模式/依赖性注射等技术。


   5、 几个重要的类:

     ActionServlet 

      org.apache.struts.action.ActionServlet 是Struts Controller中最主要的部分,所有用户请求都会被发送到这里,所有的其它处理也必须从这里经过。ActionServlet是从HttpServlet中继承过来的。

   当ActionServlet接收到HTTP request的时候,不管是doGet()或者doPost()方法,都会调用process()方法。

    Action

   Action类是实现整个体系的核心部分,它在客户请求、界面表示和业务逻辑之间起到一个桥梁的作用。每一个Action都用来处理某一项任务,或者进行一个业务操作。当然了,我们说一项任务不是说Action只实现一个业务操作方法,而是集中实现某一个功能单元。比如登录用的LogonAction、查找用的SearchAction等等。Action是在RequestProcessor中,由processActionPerform方法调用的

    ActionMapping

    通过ActionMapping,Action在转发时,并不是转发给一个实际的页面。而是转发给在strus-config.xml中已经配置的对象。这意味着,在不改变Action代码的情况下就可以更换其转发的页面;有了ActionMapping后,只需要在Struts-config.xml中修改相应的配置即可,这样既查找方便,又不用重新编译。action 执行完后要返回显示的结果视图 , 这个结果视图是用一个 ActionForward 对象来表示的 , actionforward 对象通过 struts-config.xml 配置文件中的配置关联到某个 jsp 页面 , 因为程序中使用的是在 struts-config.xml 配置文件为 jsp 页面设置的逻辑名,这样可以实现 actio n 程序代码与返回的 jsp 页面名称的解耦。

       ActionForward 

      Action类的execute()方法返回一个ActionForward对象。ActionForward对象代表了web资源

的逻辑抽象,这里的web资源可以是jsp页,java servlet或action。从execute()方法中返回

      ActionForward对象有2种方法:
    a、在execute()方法只动态创建一个ActionForward实例:
       return new ActionForward("Failure","/secruity/singnin.jsp",true);
      以上ActionForward构造方法的第一个参数代表ActionForward实例的逻辑名,第2个参数指定转发路径,第3个参数指定是否进行重定向。

    b、在struts配置文件中配置<forward>元素:

       actionforward 对象通过 struts-config.xml 配置文件中的配置关联到某个 jsp 页面 , 因为程序中使用的是在 struts-config.xml 配置文件为 jsp 页面设置的逻辑名,这样可以实现 actio n  程序代码与返回的 jsp 页面名称的解耦。




http://www.wangchao.net.cn/bbsdetail_46736.html

http://news.dayoo.com/tech/201005/21/10000617_102079567.htm

   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页面名称的解耦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值