Struts控制器组件
Struts控制器组件负责接受用户请求、更新模型,以及选择合适的视图组件返回给用户。控制器组件有助于将模型层和视图层分离,有了这种分离,就可以在同一个模型的基础上得心应手地开发多种类型的视图。Struts控制器组建主要包括:
·ActionServlet组件:充当Struts框架的中央控制器。
·RequestProcessor组件:充当每个子应用模块的请求处理器。
·Action组件:负责处理一项具体的业务。
Struts框架采用控制器组件来预处理所有的客户请求,这种集中控制方式可以满足MVC设计模式的两大需求:
·首先,控制器在用户输入数据和模型之间充当媒介 / 翻译者的角色,提供一些通用功能,如安全、登入和其他针对具体用户请求的重要服务,当系统的这些通用功能出现需求变更时,部需要修改整个应用,只需要修改局部的控制器组件即可。
·其次,由于所有的请求都经过控制器过滤,因此可以降低视图组件之间,以及视图组件和模型组件之间的相互依赖关系,提高每个组件的相对独立性。由控制器组件来决定把合适的视图组件返回给用用户,这可以减少视图组件之间直接的,错综复杂的连接关系,使应用更加灵活,便于维护。
Struts框架采用ActionServlet和RequestProcessor组件进行集中控制,并采用Action组件来处理单项业务。
一 控制器组件的控制机制
Struts的控制器组件主要完成以下任务:
·接受用户请求
·根据用户请求,调用合适的模型组件来执行相应的业务逻辑。
·获取业务逻辑执行结果。
·根据当前状态以及业务逻辑执行结果,选择合适的视图组件返回给用户。
1 Action类
org.apache.struts.action.ActionServlet类是Struts框架的核心控制器组件,所有的用户请求都先有ActionServlet来处理,然后再由ActionServlet把请求转发给其他组件。Struts框架只允许在一个应用中配置一个ActionServlet类,在应用的生命周期中,仅创建ActionServlet类的一个实例,这个ActionServlet实例可以同时响应多个用户请求。
<!--[if !supportLists]-->(a) <!--[endif]-->Struts框架初始化过程
<!--[if !supportLists]-->(1) <!--[endif]-->调用initInternal()方法,初始化Struts框架内在的消息资源,如与系统日志相关的同志、警告和错误消息。
<!--[if !supportLists]-->(2) <!--[endif]-->调用initOther()方法,从web.xml文件中加载ActionServlet的初始化参数,如config参数。
<!--[if !supportLists]-->(3) <!--[endif]-->调用initServlet()方法,从web.xml文件中加载ActionServlet的URL映射信息。此外还会注册web.xml和Struts配置文件所使用的DTD文件,这些DTD文件用来验证web.xml和Struts配置文件的语法。
<!--[if !supportLists]-->(4) <!--[endif]-->调用initModuleConfig()方法,加载并解析子应用模块的Struts配置文件;创建ModuleConfig对象,把它存储在ServletContext中。
<!--[if !supportLists]-->(5) <!--[endif]-->调用initModuleMessageResources()方法,加载并初始化默认子应用模块的消息资源:创建MessageResources对象,把它存储在ServletContext中。
<!--[if !supportLists]-->(6) <!--[endif]-->调用initModuleDataSources()方法,加载并初始化默认子应用模块的数据源。如果在Struts配置文件中没有定义<data-sources>元素,就忽略这一流程。
<!--[if !supportLists]-->






