谈起Struts,不得不先说一个概念,那就是框架。简单的说,框架就是一个模版。模版是一个半成品,自己本身是不能运行的。
现在最常用的是Struts 1.x,也有Struts 2.x(前身为webwork)。同类型做表示层的框架也有很多例如sun公司的JSF(java server face)等等。
第一步:应用程序启动后,先将struts-config.xml 的文件加载到内存中。
第二步:当客户端浏览器提交一个请求时,他会根据提交的请求中的路径,在struts-config.xml 的下的Action节点中,寻找和提交的*.do(*为某个特定名称)相匹配的Path属性。
第三步:和这个匹配的Path一组的有name这一属性。根据这个name属性的值在这一节点下寻找一个中name和他一样的节点。
第四步:根据同一节点下的type属性会找到一个类。这个类如上图在紫色块。他是一个JAVABEAN。他继承自ActionForm这个类。他里面提供的一组字段,找到这个类后他会利用java的反射机制自动创建一个类的对象,并将客户提交的数据进行封装。这里需要注意的是,里面提供的字段必须和form表单中的控件名称一致。
第五步:执行完以上步骤后,会接着寻找刚才在下的Action节点下的type属性,根据这一属性也会寻找到一个类,这个类就是上图中的第二行右边红色的块。这个类继承自Action类。在这一类中需要重写父类的Excute();方法。参数共4个。后面会有叙述。找到这个类后会自动调用重写过的这个方法。这个方法会返回值为ActionForward。
第六步:通过Excute();方法处理完业务后回返回一个ActionForward对象,根据返回值会在和Action接点中的
到此这里就详细的描述了一个简单的struts工作流程。后面在配一示例的struts-config.xml 的图。