1.14.2 Struts 2.0框架介绍(2)
3.视图组件
在Struts 2.0中,请求处理结束后,返回的视图不仅可以是JSP页面、Action动作,还可以是其他的视图资源,如FreeMarker模板、Velocity模板和XSLT等。
Struts 2.0完成了请求的处理后,将根据在配置文件中的配置,决定返回怎样的视图,这主要是通过<result>元素的type属性来决定。若返回FreeMarker模板,则设置type属性的值为freemarker;若返回Velocity模板,则设置为velocity;若返回另外一个Action动作,则设置为redirectAction;在没有设置type属性的情况下,默认返回的视图为JSP页面。例如下面的配置:
<action name="returnType" class="com.yxq.action.ReturnAction"> |
4.配置文件
Struts 2.0默认会加载Web应用WEB-INF/classes目录下的struts.xml配置文件,通过该文件的配置为用户请求指定处理类,并设置该请求处理结束后返回的视图资源。在开发大型项目时,这往往struts.xml文件会导致过于庞大,降低了可读性。此时可以自己创建配置文件,然后在struts.xml文件中通过<include>元素包含这些文件。例如在struts.xml文件中包含名为myxml.xml的文件:
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
代码贴士
Struts2.0配置文件的根元素。
包元素。name属性指定了包名称;extends属性指定了继承的另一个包元素;struts-default是在struts-default.xml文件中定义的包的名称。struts-default.xml位于struts2-core-2.0.11.jar文件下,在该文件的struts-default包元素中,定义了<result>元素的type属性所能指定的视图类型、Struts 2.0中提供的拦截器以及对继承了struts-default包的XML配置文件中配置的所有Action类默认执行的拦截器。
<action>元素,用来配置业务控制器与请求的关系。
<result>元素,指定请求处理结束后返回的视图资源。
5.消息资源文件
在Struts 2.0中用来存储提示信息的properties资源文件有以下3种:应用范围内的资源文件、包(package)范围内的资源文件和Action类范围内的资源文件。
应用范围内的资源文件。
该资源文件在整个应用内都可以被访问,通常称为全局资源文件,它需要在struts.properties配置文件中指定。例如,在WEB-INF/classes目录下创建了一个名为allMessage.properties的全局资源文件,在struts.properties文件中需进行如下配置:
struts.custom.i18n.resources=allMessage |
struts.custom.i18n.resources= messages.allMessage |
struts.properties文件通常应被存放到Web应用的WEB-INF/classes目录下,Struts 2.0会自动加载该文件,该文件以key=value的形式存储了一些在Struts 2.0启动时对Web应用进行的配置,key用来表示配置选项名称,value表示配置选项的值,如解决Struts 2.0中文乱码的问题。
包(package)范围内的资源文件。
包范围内的资源文件必须命名为package_xx_XX.properties,其中xx表示语言代码,XX表示地区代码,例如package_zh_CN.properties表示中文(中国)。通过这样命名,可以实现应用程序国际化。也可忽略语言代码与地区代码,命名为package.properties,表示任意语言(地区)。包范围内的资源文件只可被当前包中的类文件访问。例如,存在如图1.60所示的包结构,在actionA子包中存在一个package.properties资源文件,则actionA子包中的类文件可以访问package.properties资源文件,而actionB子包中的类文件则不能访问。可将package.properties文件存放在com/yxq目录下,使得com/yxq目录下所有子目录中的类文件都可以访问。
|
| 图1.60 包结构图 |
Action类范围内的资源文件。
该资源文件只可被某一个Action类访问,它必须与访问它的Action类存放在同一个目录下,并且文件的命名与该Action类的名称相同。例如,在com.yxq.action包下存在MyAction.java类文件,若在com.yxq.action下创建一个MyAction.properties资源文件,则该文件只可被MyAction.java类文件访问。
| 回书目 上一节 下一节 |