• Struct2 (一)


    STRUCT2 权威指南(1)

    MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。

    (1)Model部分

    Struts 1的Model部分主要由底层的业务逻辑组件充当,这些业务逻辑组件封装了底层数据库访问、业务逻辑方法实现。实际上,对于一个成熟的企业应用而言,Model部分也不是一个简单的JavaBean所能完成的,它可能是一个或多个EJB组件,可能是一个WebService服务。总之,Model部分封装了整个应用的所有业务逻辑,但整个部分并不是由Struts 1提供的,Struts 1也没有为实现Model组件提供任何支持。

    (2)View部分

    Struts 1的View部分采用JSP实现。Struts 1提供了丰富的标签库,通过这些标签库可以最大限度地减少脚本的使用。这些自定义的标签库可以输出控制器的处理结果。

    虽然Struts 1提供了与Ties框架的整合,但Struts 1所支持的表现层技术非常单一:既不支持FreeMarker、Velocity等模板技术,也不支持JasperReports等报表技术。

    (3)Controller部分

    Struts 1的Controller由两个部分组成。

    — 系统核心控制器:由Struts 1框架提供,就是系统中的ActionServlet。

    — 业务逻辑控制器:由Struts 1框架提供,就是用户自己实现的Action实例。

    Struts 1的核心控制器对应图1.7中的核心控制器(ActionServlet)。该控制器由Struts 1框架提供,继承HttpServlet类,因此可以配置成一个标准的Servlet,该控制器负责拦截所有HTTP请求,然后根据用户请求决定是否需要调用业务逻辑控制器,如果需要调用业务逻辑控制器,则将请求转发给Action处理,否则直接转向请求的JSP页面。

    业务逻辑控制器负责处理用户请求,但业务逻辑控制器本身并不具有处理能力,而是调用Model来完成处理。

    Struts 1提供了系统所需要的核心控制器,也为实现业务逻辑控制器提供了许多支持。因此,控制器部分就是Struts 1框架的核心。有时候,我们直接将MVC层称为控制器层

    1.1 常见的MVC框架

     

    常见的MVC框架有JSF、Tapestry和SpringMVC。我们主要介绍SpringMVC框架

     

    1.2 Struct2体系介绍

    Struts 2的体系与Struts 1体系的差别非常大,因为Struts 2使用了WebWork的设计核心,而不是使用Struts 1的设计核心。Struts 2大量使用拦截器来处理用户请求,从而允许用户的业务逻辑控制器与Servlet API分离

     

    1.3 struct2的配置文件

     

    Struts 2的配置文件有两份:

    — 配置Action的struts.xml文件。

    — 配置Struts 2全局属性的struts.properties文件。

    struts.xml文件内定义了Struts 2的系列Action,定义Action时,指定该Action的实现类,并定义该Action处理结果与视图资源之间的映射关系

    文件实例(structs.xml):

     

     1 <struts>
     2 <!-- Struts 2的Action都必须配置在package里 -->
     3  <package name="default" extends="struts-default">
     4  <!-- 定义一个Logon的Action,实现类为lee.Logon -->
     5  <action name="Logon" class="lee.Logon">
     6 <!-- 配置Action返回input时转入/pages/Logon.jsp页面 -->
     7  <result name="input">/pages/Logon.jsp</result>
     8  <!-- 配置Action返回cancel时重定向到Welcome的Action-->
     9 <result name="cancel" type="redirect-action">Welcome</result>
    10  <!-- 配置Action返回success时重定向到MainMenu的Action -->
    11  <result type="redirect-action">MainMenu</result>
    12 <!-- 配置Action返回expired时进入ChangePassword的Action链 -->
    13  <result name="expired" type="chain">ChangePassword</result>
    14 </action>
    15  <!-- 定义Logoff的Action,实现类为lee.Logoff -->
    16 <action name="Logoff" class=" lee.Logoff">
    17  <!-- 配置Action返回success时重定向到MainMenu的Action -->
    18 <result type="redirect-action">Welcome</result>
    19 </action>
    20 </package>
    21 </struts>

     

    在上面的struts.xml文件中,定义了两个Action。定义Action时,不仅定义了Action的实现类,而且的定义Action的处理结果时,指定了多个result,result元素指定execute方法返回值和视图资源之间的映射关系。对于如下配置片段:

     

    <result name="cancel" type="redirect-action">Welcome</result>

     

    表示当execute方法返回cancel的字符串时,跳转到Welcome的Action。定义result元素时,可以指定两个属性:type和name。其中name指定了execute方法返回的字符串,而type指定转向的资源类型,此处转向的资源可以是JSP,也可以是FreeMarker等,甚至是另一个Action——这也是Struts 2可以支持多种视图技术的原因。

    除此之外,Struts 2还有一个配置Struts 2全局属性的Properties文件:struts.properties。该文件的示例如下:

    #指定Struts 2处于开发状态

    struts.devMode = false

    //指定当Struts 2配置文件改变后,Web框架是否重新加载Struts 2配置文件

    struts.configuration.xml.reload=true

    正如上面见到的,struts.properties文件的形式是系列的key、value对,它指定了Struts 2应用的全局属性

     

     

  • 相关阅读:
    java-多个数的和
    大道至简第二章
    大道至简第一章感悟上
    Tools
    LruCache
    Fragment
    科普指纹识别
    Python使用MySQL数据库
    Eclipse中添加PyDev插件
    UniversalAndroidImageLoader出现异常:ImageLoader: Unable to resolve host "https": No address associated with host
  • 原文地址:https://www.cnblogs.com/CBDoctor/p/3680743.html
Copyright © 2020-2023  润新知