前面写了一些struts的视图部分,而今天来看看它的控制器,首先回顾一下普通的WEB模式,一般来说从一个用户发出一个请求,正常时到一个Servlet,然后servlet提供一个服务它会根据用户的请求,它会调用一个JSP页面,或更复杂一点它会调用一个BEAN,而这个BEAN复杂一点,可能会负责我们业务逻辑交互,取得一个数据,得到需要的数据资料,返回BEAN,然后JSP页面进行读取显示!
其实上面所术的JSP servlet 以及javabean就是一个简单的MVC,分别对应视图层,控制层以及模型层。从上图我们也可以看出一般的WEB应用程序,我们都是通过servlet作为主要控制器来使用,用户所接触的第一个服务控制对象就是servlet所产生的实体,其后servlet会根据用户所请求的内容平决定如何处理客户请求,或者该调用其他的bean实体来协助处理,以及决定该反馈用户的数据是什么,整个过程中servlet把后台服务和用户隔离,使得客户实体和数据实体/服务实体之间不直接关联,使得用户的数据处理及反馈的灵活性有了很大的增强,同时减少了组件实体之间的偶合,视图组件与模型组件之间的联系就不太强了!
而struts也是MVC这样一种模型的体现,它主要的目的也就是作为一个MVC的框架,它同样也是接受用户的请求,然后根据用户的不同请求,调用对应的模型组件来执行相应的业务逻辑,获取业务逻辑执行的结果,而且还可以根据当前的状态数据及业务逻辑的处理结果,选择适合的视图组件返回给客户
我们来看下图
浏览器发出请求后,我们经过的是一个ActionServlet对象,然后ActionServlet对象它会处理请求,会读取相对的struts-config.xml配置文档,然后调用对应的Action执行其execute方法,然后会调用对应的ActionForm或者直接反馈给相应的JSP页面或者和业务层交互,整个里面所有的请求经过的地方都是ActionServlet,它也是我们前面讲到的servlet中的一种!
关于这个里面的具体步骤如下图:
首先我们经过一个ActionServlet然后我们会经过一个RequestProcessor对象 ,在RequestProcessor处理完之后会调用相关的Action对象,Action对象里面有一个execute方法,在经过ActionServlet调用了之后会交给RequestProcessor处理,它处理完后会调用Action,然后由action操作对应的ActionForm,最终得到我们需要的结果!
那么这次的随笔中就要写有关AnServlet; RequestProcesssor;Action;ActionMapping;ActionForward;
我们还是看看前面文章中用到的图!
当请求获取到的时候我们会首先调用ActionMapping,,这时如果它找到的话,会创建一个ActionMapping对象,创建完后就是我们的struts-config.xml配置文件里面的Bean的配置,会对应创建一个FormBean,也就是所谓的ActionForm,然后这个ActionForm有了后,会去验证,也就是前面我们已经讲了的Validate,如果验证成功了我们会调用相对的Action里面的execute方法,如果execute返回的是一个ActionForward对象,会进行跳转,最终用户得到结果!
有了上面原理后,我们再来建一个项目!(楚旋于 待续 2006-12-23 02:56分 )