各部门工作流程图 Struts开发工作流程
Struts开发工作流程
最近讲了struts 写点理解 所有的请求都提交给ActionServlet来处理要运行struts 就是在程序启动时 先要加载ActionServlet类 而加载这个类是依靠对web xml的解析 ActionServlet要启动 可以通过两种条件
ActionServlet的加载优先级—— 在web xml中有这样一句话<load on startup> </load on startup> 其中 代表着一起动就加载!
当用户请求时加载ActionServlet 也就是说启动优先级不是最高的 我试过 第一次运行会报 错误 但后面就正常了 所以这种是不可取的 也告诉大家 以后遇到加载struts出问题时 不妨先看看它的加载优先级
ActionServlet是一个FrontController 它是一个标准的Servlet 它将request转发给RequestProcessor来处理

ActionMapping是ActionConfig的子类 实质上是对struts config xml的一个映射 从中可以取得所有的配置信息
RequestProcessor根据提交过来的url 如* do 从ActionMapping 中得到相应的ActionForn和Action 然后将request的参数对应到ActionForm中 进行form验证 如果验证通过则调用Action的execute()方法来执行Action 最终返回ActionFoward
ActionFoward是对mapping中一个foward的包装 对应于一个url
ActionForm使用了ViewHelper模式 是对HTML中form的一个封装 其中包含有validate方法 用于验证form数据的有效性 ActionForm是一个符合JavaBean规范的类 所有的属性都应满足get和set对应 对于一些复杂的系统 还可以采用DynaActionForm来构造动态的Form 即通过预制参数来生成Form 这样可以更灵活的扩展程序
ActionErrors是对错误信息的包装 一旦在执行action或者form validate中出现异常 即可产生一个ActionError并最终加入到ActionErrors 在Form验证的过程中 如果有Error发生 则会将页面重新导向至输入页 并提示错误
Action是用于执行业务逻辑的RequsestHandler 每个Action都只建立一个instance Action不是线程安全的 所以不应该在Action中访问特定资源 一般来说 应改使用 Business Delegate 模式来对Business tier进行访问以解除耦合
lishixinzhi/Article/program/Java/ky/201311/29163