`

struts学习笔记(三)——struts2基本流程

阅读更多
struts2的基本流程
struts2框架由三部分组成:核心控制器FilterDispatcher(struts2框架提供)、业务控制器和用户实现的业务逻辑组件(后两者由用户实现)
1.核心控制器FilterDispatcher
FilterDispatcher是struts2框架的核心控制器,该控制器作为一个filter运行在web应用中,负责拦截所有的用户请求,过滤用户请求,如果请求以action结尾,该请求将被转入struts2框架处理。
struts2框架获得*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件。
struts2应用中的action都被定义在struts.xml文件中,文件中定义了action的name属性和class属性,name决定该action处理哪个用户请求,而class属性决定了该action的实现类。
struts2用于处理用户请求的action实例,并不是用户实现的业务控制器,而是action代理——因为用户实现的业务控制器并没有与servletAPI耦合,显然无法处理用户请求。struts2框架提供的拦截器链负责将HttpServletRequest请求中的请求参数解析出来,传入action中,并调用action中的execute方法来处理用户请求。下图为处理模型:



从上图能看出,用户实现的action类仅仅是struts2的action代理的代理目标。用户实现的业务控制器action则包含了对用户请求的处理,用户的请求数据包含在HttpServletRequest对象中,而用户的action类无需访问HttpServletRequest对象。拦截器负责将HttpServletRequest里的请求信息解析出来,传给业务逻辑组件action实例。

2.业务控制器
action中通常含有一个execute方法,根据处理结果不同,excute返回不同字符串——每个字符串对应一个视图名
完成业务控制器的开发后,还需要配置struts2的action,需要配置action的如下三个部分:1)action所处理的URL,2)action组件所对应的实现类,3)action里包含的逻辑视图和物理资源之间的对应关系。

3.struts2的模型组件
模型组件已经超出了MVC框架的覆盖范围。对于struts2框架而言,通常没有为模型组件的实现提供太多的帮助。



通常MVC框架里的业务控制器会调用模型组件的方法来处理用户请求。也就是说,业务逻辑控制器不会对用户请求进行任何实际处理,用户请求最终由模型组件负责处理。业务控制器只是中间负责调度的调度器。这也是action称为控制器的原因。
当控制器需要获取业务逻辑组件实例时,通常是通过工厂模式来获得业务逻辑组件的实例;或者利用其他Ioc容器(如Spring容器)来管理业务逻辑组件实例。
4.struts2视图组件
struts1只能用jsp作为视图技术,struts2允许使用其他模版技术。
在struts.xml中配置action时,需要指定name属性、class属性和系列result子元素,每个result子元素指定一个逻辑视图与物理视图之间的映射。
result子元素中,若不指定type属性,默认使用JSP作为视图资源。
若需要在struts2中使用其他视图技术,则可以在配置result子元素时,指定相应的type属性既可。

5.struts2的运行流程
struts2其实就是webwork2.2的升级,因此struts2的运行流程和webwork的运行流程完全相同,下图是webwork的运行流程


  • 大小: 11.5 KB
  • 大小: 7.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics