zoukankan      html  css  js  c++  java
  • struts执行过程

            通过jsp中的form表单中的action属性,在WEB-INF文件夹下的web.xml文件中找到对应的<servlet-mapping>中找到对应的<servlet-name>,再在<servlet>中通过该<servlet-name>找到<servlet-class>,确认为ActionServlet,即,struts框架,然后在WEB-INF文件夹下的struts-config.xml文件的<action-mappings>中的<action>中通过jsp中的form表单中的action(对应<action>中的path)属性找到对应的name和type,即ActionForm和Action,先通过生成实例执行ActionForm中的validate()方法,出错则调到<action>中的input属性页面,没有出错则通过生成实例执行Action中的execute()方法,再该方法中转向响应的jsp页面完成最终的客户内容显示。

      所以总体上,提交表单后,先到项目文件夹下的WEB-INF文件夹下的web.xml文件中确认为Struts框架,即表单接收方为org.apache.struts.action.ActionServlet,再到项目文件夹下的WEB-INF文件夹下的struts-config.xml文件中找到对应的ActionForm和Action开始执行。

        web.xml文件:

    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>3</param-value>
    </init-param>
    <init-param>
    <param-name>detail</param-name>
    <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>

        struts-config.xml文件:

    <struts-config>
    <form-beans>
    <form-bean name="helloForm"
    type="org.lxh.struts.form.HelloForm" />
    </form-beans>

    <global-exceptions />
    <global-forwards />
    <action-mappings>
    <action attribute="helloForm" input="/hello.jsp"
    name="helloForm" path="/hello" scope="request"
    type="org.lxh.struts.action.HelloAction">
    <forward name="show" path="/hello.jsp"></forward>
    </action>
    </action-mappings>

    <message-resources parameter="org.lxh.struts.ApplicationResources" />
    </struts-config> 

  • 相关阅读:
    论文解析 -- TiDB: A Raftbased HTAP Database
    人生资产负债表
    Hadoop、Hive、Spark 之间关系
    在 Python3 中,bytes 和 str 的互相转换方式是
    json中load和loads区别
    springboot——修改html实时生效,不用重启tomca(idea版)
    ThinkPHP6 利用crontab+think make:command执行定时任务 tp6默认不可以用命令行访问控制器
    Whoops, GitLab is taking too much time to respond.解决
    phpmyadmin导入csv文件 #1366
    pipenv --python 'python/path' install 报错原因
  • 原文地址:https://www.cnblogs.com/huhewei/p/13026852.html
Copyright © 2011-2022 走看看