Struts框架是基于控制层的一个MVC框架,所以对于Struts框架来说,最核心的东西就是控制。这次毕业论文答辩的时候,老师问了“什么叫控制”。当时听起来有点雷人。但是事后一想,确实是这样,Struts就是控制。我毕业论文是采用Struts框架实现的。当然里面少不了关于控制的理论。我当时回答他的是关于web应用上,控制代表的操作。比如对页面传递过来的信息进行校验,分发等。但是老师对我的答案不是认同,他说我这个是纯工程上的说法,我们要求从理论上说,他从控制论的角度去解释了一下控制。他说的虽然有点空,但是也不是不对,可能这也是我们这些工程人员所欠缺的吧。
既然Struts最核心的就是控制,那么下面就解释一下Struts的控制流。首先看一张时序图。
说明:
- 客户端请求匹配Action URI 样式的路径
- 讲客户端请求传递给ActionServlet,服务器容器执行。
- 如果这个是模块化的,将选择相应的模块。
- ActionServlet查询路径的映射,在struts-config.xml文件中。
- 如果映射标明了一个form bean ,ActionServlet判断它是否存在。
- 如果mapping的validate字段为true,则调用validate方法。
- 如果失败,ActionServlet转发给input对应的页面。
- 如果mapping标明一个Action,如果它已经存在或实例化,则他被重用。
- 执行Action的execute方法。调用用户自定义bean。
- Action 返回一个ActionForward给ActionServlet。
- ActionForward指定一个URI,返回用户视图。
其实Struts控制是一个比较简单的过程,他主要是控制数据有效性,还有控制数据传递路径有效。还定义了一些如果出错会采取那些办法。这里面用到了很多很好的面向对象的思想。值得去借鉴。在接下来会研究一下。