zoukankan      html  css  js  c++  java
  • struts(二)——struts框架实现的基本原理

    上一篇文章,我们介绍了MVC框架的基本原理,并指出了这个基本框架中存在大量if…else的问题。今天我们来介绍一下struts框架,让struts解决这个问题。

    首先,看一下粗略的时序图:



    ActionServlet是中央控制器,负责集区URL或分发;

    ActionForm负责收集表单数据,并且,struts会将表单数据转换成相应的数据类型。

    Action是业务层控制器。


    上面就是struts大体上的实现,下面分析一下该struts框架执行流程:

    1、终端客户向tomcat发出request请求;

    2、tomcat会创建出HttpRequest和HttpResponse实例,并根据用户的Method请求方式,调用中央控制器的doGet或者doPost方法;

    3、ActionServlet中央控制器负责截取URL,并且根据截取的URL,取得配置信息,将Action标签里面的信息放在ActionMapping里面。

    4、根据ActionMapping中的name名称查找ActionForm,如果配置了ActionForm,那么就到request或session中查找,如果在request或session中存在已经创建的ActionForm,那么将返回;如果不存在,那么会根据ActionForm的完成路径采用反射进行创建,再将创建好的ActionForm放到reqeust或session中

    5、首先执行ActionForm中的reset方法进行重置,然后得到表单中所有输入域的name名称,再调用request.getParameterValues(),根据name名称得到相应的值,最后将表单中的数据全部放到一个map中,map中的key为表单输入域的名称,map的value位表单输入域的值(字符串数组),接下来调用一个第三方组件BeanUtils,将Map中的值,根据ActionForm中的setter方法设置到ActionForm上。

    6、根据Action的完成类名称到Map中查找,如果存在就在返回Action对象,否则根据Action类的完整名称采用反射去创建,再将创建好的Action放到Map中。所以struts1的Action是单实例的,存在线程安全问题。

    7、执行用户自定义的Action中的Execute方法,将ActionMapping,ActionForm,request,response传递过去,将ActionForward返回给ActionServlet。

    8、根据返回的ActionForward完成转向。


    上面就是struts流程的基本实现。


  • 相关阅读:
    MySQL开发索引创建规范
    如何从传统软件开发顺利过渡到互联网技术开发
    Java中return返回结果的优先级
    mongodb c++ driver 2.0编译使用
    Android MediaScannerJNI源代码具体解释
    构建你的长寿命的API第1部分:规范驱动的API开发
    CoreImage 中的模糊滤镜
    C++编程技巧降低编译时间
    我们年轻,阳光免费
    验证时出错。HRESULT = '8000000A'
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3161552.html
Copyright © 2011-2022 走看看