• Struts2基础


    第一步 : 首先回顾MVC架构,分为模式1与模式2.

      模式1:

               WEB项目几乎全由JSP页面组成,JSP页面负责所有的展示与业务逻辑的处理(业务,数据库连接……)。

               缺点:JSP页面兼容了view与controller两种角色,控制逻辑与表现逻辑混杂,导致代码重用性很低,增加了扩展与维护的难度。

      模式2 :

              基于MVC架构的设计模式,将模型,视图,控制器三者分离,模型采用JAVABEAN来充当,视图采用JSP页面来负责展示,采用Servlet作为前端控制器。三者相互协作,体现了松散耦合的思想。

        Servlet控制器主要有2个作用:

             1、从客户端视图JSP等组件中接收数据,控制逻辑与简单数据处理。

             2、调用JAVABEAN处理实际的逻辑,完成后将数据返回给JSP。

    看看MVC模式流程图:

       

      总结出MVC模式的特点:

    1、  多个视图对应一个模型,可以减少代码的复制与维护量,并且一旦模型发生改变,只需修改对应的视图页面即可。

    2、  将模型返回的数据与视图相分离,数据可以适用于任何显示技术,不再单单局限在JSP页面。例如:webservice , 导出为excel文档……

    3、  应用分隔为3层,降低了层与层之间的耦合度,提高了应用的扩展性。

    4、  控制层将不同的模型与不同的视图组合在一起,完成不同的请求,可以说是控制了用户请求权限。

    5、  更加符合软件工程化的管理,各层各司其职,但是每一层又都具有相同的特征,便于程序代码。

    第二步:了解Struts的发展

      随着MVC模式的发展,01年,Struts1问世,Struts1是第一个完全采用MVC设计模式的框架。03年达到顶峰,但是在不断的应用后,软件需求日渐变化,Struts1出现了局限性以及暴露了其不可修正的缺点。06年     Struts1框架与webwork框架合并,从而诞生出Struts2.

    第三步:为什么要学习Strust。它能带来什么好处。

       1 Struts设计的第一目标就是使MVC模式应用于web程序设计。

       2 Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于Client/Server HTTP交换协议,The Java Servlet API揭示了Java Servlet只是Java API的一个很小子集,这样我们可以在业务逻辑部分使用            功能强大的Java语言进行程序设计。

         二是提供了对MVC的一个清晰的实现,这一实现包含了很多参与对所以请求进行处理的关键组件,如:拦截器、OGNL表达式语言、堆栈。

    Strust工作原理:

      

     Strust请求与响应可以分为以下几个步骤:

    (1)  客户端向Action发用一个请求(Request)

    (2)  Container通过web.xml映射请求,并获得控制器(Controller)的名字

    (3)  容器(Container)调用核心控制器StrutsPrepareAndExecuteFilte或者FilterDispatcher ( Struts2.1.3之前用FilterDispatcher,在Struts2.1.3以后调用StrutsPrepareAndExecuteFilter)

    (4)  控制器(Controller)通过ActionMapper获得Action的信息

    (5)  控制器(Controller)调用ActionProxy

    (6)  ActionProxy读取struts.xml文件获取action和interceptor stack(拦截器堆)的信息。

    (7)  ActionProxy把request请求传递给ActionInvocation(Action调度者)

    (8)  ActionInvocation依次调用action和interceptor

    (9)  根据action的配置信息,产生result

    (10) Result信息返回给ActionInvocation

    (11) 产生一个HttpServletResponse响应

    (12) 产生的响应行为发送给客服端。

      

    Strust2工作流程分析:

      

    ActionInvocation (Action调度者)。

    ActionMapper在WEB服务启动时加载。

    Interceptor 一系列拦截器的作用是:将request请求的数据解析给XXXAction(业务控制器)。

    1、客户端(不一定就是JPS页面)发起请求, 经过一系统的filter后达到StrutsPrepareAndExecuteFilter/FilterDispatcher(核心控制器)【StrutsPrepareAndExecuteFilte或者FilterDispatcher ( Struts2.1.3之前用FilterDispatcher,在            Struts2.1.3以后调用StrutsPrepareAndExecuteFilter)】。

    2、核心控制器读取ActionMapper,问询该Action是否存在,如果不存在则返回错误。 如果存在存在则将该请求转交给ActionProxy。

    3、ActionProxy读取配置文件struts.xml,查看是否需要表单验证, 如果需要则调用验证框架的validate()进行表单验证。

    4、验证完成后,将请求的数据解析出来通过ActionInvocation交给具体的业务控制器 处理。

    5、处理完的结果,通过forward请求JSP或其他视图,解析成response, 并返回StrutsPrepareAndExecuteFilter核心控制器,由核心控制器向客户端进行展示。

    下一章创建一个简单的Strust框架!

  • 相关阅读:
    Codeforces-754D Fedor and coupons
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    POJ
    HDU
    HDU
    HDU-2159
    方法的重写
  • 原文地址:https://www.cnblogs.com/hellokitty1/p/5077818.html
Copyright © 2020-2023  润新知