• struts1的工作原理


    struts1的工作原理:
    在网上找了两张图,让我们来看一下

    1、struts1体系结构:
        
          客户端发送请求(Http Request),被struts1的核心控件器ActionServlet接收,ActionServlet根据            struts-config.xml里的映射关系找到对就的Action,若找不到就返回500错误到JSP页面。若有就在
          Action里的 excute()方法里执行相应的逻辑操作,比如调用Model层的方法,然后通过ActionForw
          ard,跳转到对应的JSP页面。
    2、struts1流程图:
           
          struts1的几个核心组件是值得我们注意的:
           1 、ActionServlet(核心控制器)。
           2、RequestProcessor类(处理异常的核心组件)。
          3、ActionForm(接收页面中传过的数据)。
           4、Action(是控制器,主要是从ActionForm中接收页面传进来的数据,然后进行逻辑
                 处理)。
           5、ActionForward(页面跳转,跳转到jsp组件)。
      6、ActionMapping(配置每个Action所对应的映射关系)。
          现在我们来说一下struts1执行form提交的流程吧!
           1、ActionServlet是在web.xml中配置的一个自动启动项。当web服务器启动时,也就同时实例化了ActionServlet类,ActionServlet会去初始化struts-config.xml的配置信息,并将其加载到内存中,并会
    去实例化action-bean,action-form等对象。
         2、当ActionServlet接收到来自客户端的请求时,就会去检索和去请求相匹配ActionMapping实例,如果没有找到则返回500错误.

          3、如果找到了就检查对应的ActionForm实例是否存在,

          a、如果存在,先把该实例相关数据reset清空一下,然后就把用户提交的表单数据填充到ActionForm实例中.

          b、如果不存在,就创建一个ActionForm对象,再把用户提交的表单数据填弃到ActionForm实例中

          4、接着,再根据配置,看看是否要对表单进行验证(validate),如果需要验证,则调用ActionForm的validate()方法对表单进行验证.

               a、如果验证没通过,则返回错误信息。

                b、如果不需要验证,或者需要验证但validate方法返回null或者是返回一个不包含ActionMessage的ActionErrors对象的话,表明验证成功。则继续下一步

          5、ActionServlet根据ActionMapping实例所包含的映射信息决定将请求发送给哪个Action,如果对应的Action实例不存在,则创建该Action的实例,然后调用该Action的execute()方法

          6、执行完Action实例的execute()方法后,该方法会返回一个ActionForward对象

          7、ActionServlet再把客户端发过来的请求,转发给ActionForward对象所指向的JSP组件

          8、ActionForward所指向的JSP组件再生成动态网页,送回给客户端。

  • 相关阅读:
    python_django_分页
    python_django_中间件
    python_django_静态文件
    Django项目基础配置和基本使用
    python_django__验证码
    python_django_The requested URL /sunck/login/sunck/showmain/ was not found on this server.错误
    python_django_template_url反向解析
    python_django_template模块
    Andrew Ng机器学习算法入门(一):简介
    Vue.js 条件语句
  • 原文地址:https://www.cnblogs.com/feifeihu/p/2639697.html
Copyright © 2020-2023  润新知