Strtus 工作原理

-----------------------------
1. Struts的运行机制
Web应用初始化时,控制器加载分析配置文件(struts-config.xml),获得ActionMapping,配置应用程序
1. ActionServlet接收用户请求
2. ActionServlet根据应用程序配置填充ActionForm
3. ActionServlet根据ActionMapping调用Action的execute方法
4. Action调用业务逻辑类(Model),在简单的程序中也可以在Action的execute方法中执行业务处理
5. 业务逻辑类将处理结果返回给Action,Action将处理结果保存在适当的作用域范围之内(session、request等)
6. Action的execute方法向ActionServlet返回ActionForward指明下一步调用的Action或JSP视图
7. JSP视图取得保存在作用域之中的业务处理结果并负责显示HTML页面
大家最好用自己的话来总结出来!

-----------------------------

1、传统的MVC架构:
Jsp----->view(视图)
Servlet------>Cotroller(控制)
JavaBean------->Model(模型)

2、传统的流程图:

客户端的Request请求到达Servlet,然后获取用户输入,Set到Model中由Model负责赋值,再有View层get数据 Response到Client(客户端)

3、Struts架构

Jsp+Struts标签库 ------View

ActionBean
                                -------Model
ActionFormBean

ActionServlet
                                 --------- Cotroller
ActionMapping

4、Struts的流程图:

Controller作为接受所有来自客户端请求的入口点,由ActionServlet来决定需要哪个动作来执行相应的操作,同时通知ActionFormBean来封装用户的表单输入,同时提交给ActionBean来执行相应的业务逻辑,通过ActionMapping来决定需要反馈给Client什么!

1.   首先在Tomcat启动的时候 ,自动检查web应用程序内是否有web.xml的配置文件,若没有找到的话就去找Tomcat下的web.xml配置文件,读取struts-config.xml配置信息然后将其加载到内存中!ActionServlet从struts- config.xml文件中读取配置信息将form-beans,action-formward等配置对象实例化!

注:s-c:struts-config.xml
    AM:ActionMapping

2.   当ActionServlet接受一个来自客户端的请求时:

(1)检索和用去请求向匹配ActionMapping实例,如果不存在则返回请求路径无效500错误信息。匹配则进入下一步创建ActionForm.
(2)检查是否有ActionFrom实例存在,如果ActionFrom实例不存在,就创建一个ActionForm 对象,把用户提交的表单数据保存到ActionFrom中!
(3)根据配置决定是否进行表单验证(validate),若需要验证就调用就调用ActionForm的validate()方法。如果ActionForm的validate()方法返回null或者返回一个不包含ActionMessage的ActionErrors的对象,说明验证成功,继续进行下一步,不成功返回错误信息!
(4)ActionServlet根据ActionMapping实例所包含的映射信息决定将请求转发给哪个Action,若没有知道相应的Action实例存在,则首先创建这个Action实例,然后调用Action的execute()方法!
(5)Action的execute()方法返回一个ActionForward对象。ActionServlet把转发给ActionForward对象指向的jsp组件。
(6)ActionForward对象指向的jsp组件生成的动态网页 返回给客户端。

Struts-config.xml内action-mappings解释:
   <action-mappings>
      <action
       name="aFBug"        //要传给Action的ActionForm
       path="/aBug"            //访问Action的路径
       input=”/error.jsp”     //失败后要跳转的页面
       scope="request"      //这个Action的有效范围
       parameter="act"
       type="net.pcedu.bugsys.bug.web.ABug"
       validate="false"       //是否验证
   >
   <forward name="list"path="/ListBug.jsp"/>  //要转向的页面</action>
   </action-mappings>

你可能感兴趣的:(工作原理)