Struts2的工作原理

来源:互联网 发布:淘宝开直通车的方法 编辑:程序博客网 时间:2024/06/08 18:41



在Struts2 2.0-2.1.2 时核心过滤器都是FilterDispatcher,2.1.3后的核心过滤器替换为StrutsPrepareAndExecuteFilter,允许开发者在经过Struts过滤之后,在执行Action之前添加自己的过滤器。StrutsPrepareAndExcuteFilter分为两种,一种是StrutsPrepareFilter,另一种是StrutsExecuteFilter,可以在准备和执行之间添加自己的过滤器。

 

1.web.xml

任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载。

通常,所有的MVC框架都需耍Web应用加载一个核心控制器,对于Struts2框架而言.需要加载StrutsPrepareAndExecuteFilter,只要Web应用负责加载StrutsPrepareAndExecuteFilter,StrutsPrepareAndExecuteFilter将会加载Struts2框架。

 

2.struts.xml

struts2的核心配置文件,在开发过程中利用率最高。

该文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。

struts.xml中包含的内容:

(1)全局属性;

(2)用户请求和响应Action之间的对应关系;

(3)Action可能用到的参数和返回结果;

(4)各种拦截器的配置。

 

3.struts.properties

struts2框架的全局属性文件,自动加载。

该文件包含很多key-value对。

该文件完全可以配置在struts.xml文件中,使用constant元素。

 

4.struts.xml文件详解

(1)include : include节点是struts2中组件化的方式,可以将每个功能模块独立到一个xml配置文件中,然后用include节点引用

(2)package : package提供了将多个action组织为一个模块的方式。

① name属性:配置文件中可以有多个package标签,并且 packge标签的name属性也不必是唯一的。

② extends属性:package可以扩展,当一个package从另一个package扩展时,该package会在本身配置的基础上加入扩展的package的配置,父package必须在子package前配置。

③ abstract属性:设置package的属性为抽象的,抽象的package不能定义action,属性值:true 或 false。

④ namespace属性:定义package命名空间,该命名空间影响到url的地址。

 

(3)interceptors : 定义拦截器

① name属性:拦截器名称

② class属性:拦截器类路径

 

(4)default-interceptor-ref: 定义默认拦截器

① name属性:拦截器名称

 

(5)global-results : 定义全局结果集

① result 节点:name 属性:结果集名称;节点文本内容:返回结果页面

 

(6)action : 每个package中可以定义多个action,只要action配置中的name属性值不同。

name属性:action名称

class属性:对应的类路径

method属性:调用action类中的方法名,默认调用action类中的excute()方法

④ 在action中也可以定义引用拦截器interceptor-ref

 

(7)result : 返回结果

name属性:result名称,和action方法中返回的字符串相同

type属性:result类型,不写则选用superpackage的type,struts-default.xml中默认为dispatcher

 

(8)param : 参数设置

 

(9)constant : 常量设置

相当于Map中的key-value对,这里是name-value对

① name属性:常量名

② value属性:常量值


0 0
原创粉丝点击