通过上面一张原理图可以知道:struts核心类是RequestProcessor,ActionServlet,我们可以将这两个类类比成一个销赃者,一个枪劫者。
ActionServlet:除了几个基本方法,没有其他业务逻辑方法。它的作用是:
1、加载struts-config.xml配置文件
2、加载资源文件
3、利用Digester解析struts-config.xml配置文件,将Action实例缓存机来(使用一个HashMap存机来)
4、拦截请求,委拖RequestProcessor处理请求
RequestProcessor:处理ActionServlet传递过来的请求。它的作用是:
1、创建ActionMapping,将Action/ActionForm/Forward缓存起来
2、创建ActionForm,检证ActionForm数据格式
3、封装数据到ActionForm中
4、创建Action
5、创建RequestDispatcher
6、响应请求
struts优点:
1、采用MVC模式,实现数据显示与业务逻加分开,便于开工开发软件
2、提供一些便利的组件:国际化,表单校验等(表单校验是优点也是缺点)
3、提供一套简单易用的标签库(在目前的富客户端可能用不上了,例如:EXT本身就有校验功能)
4、提供上传下载组件
缺点:
1、Action采用单例模式生成,在并发情况下具有安全隐患(机率小,但不排除)
2、Action应该面向接口编程
3、与底层API耦合度高,不便于测试