关于Struts的配置文件(二)
之前列出了struts.property里面的大部分属性,基本是记不住的,就是要用的时候多查查。
今天主要说的是struts.xml里面的配置。
1.最常用的package配置
name:必填,用来指定包的属性
extends:可选,用来指定继承,可以继承其他包的Action或拦截器
通常我们配置struts.xml的时候,都继承一个名为“struts-default.xml”的包,这是struts2中内置的包。
namespace:可选,用来指定命名空间
2.命名空间的配置
可以通过namespace去配置访问action的url
例如
<package name= "user" namespace ="/User" extends="struts-default"> <action name= "Login"> <result> pages/login.jsp</result > </action> <action name= "Welcome" class ="org.mxiao.struts.action.HelloAction"> <result name= "SUCCESS">pages/welcome.jsp </result> </action> </package>
访问的路径变为
http://localhost:8080/user/login.action
若没有设定namespace,默认的namespace为""
3.包含配置<include>
当package列表太长,我们可以使用包含配置来管理配置文件。
<struts> <include file="user.xml"/> <include file="goods.xml"/> <include file="order.xml"/> </struts>
4.常量配置<Constant>
我们除了可以使用struts.property定义struts2的配置文件外,还可以通过struts.xml做配置。
<struts> .............. <constant name="struts.i18n.encoding" value="GB2312"/> </struts>
可以与struts.property里面的可配置属性一一对应。
5.Action中通配符的使用。
当action中返回的方法吗和返回值类似时,可以用通配符的方式来简化配置。
public class Test { public String hello1(){ return "result1"; } public String hello2(){ return "result2"; } public String hello3(){ return "result3"; } }
<package name="struts2app" extends="struts-default"> <action name="hello*" class="com.mxiao.action.hello{1}"> <result name="result{1}">/result{1}.jsp</result> </action> </package>
另外在url或form中使用'!'可以使用访问action中指定的方法。
例如可以使用TestAction!hello1 来访问该方法。
6.gloal result
对于某些公用的action,可以讲结果集定义在global result中,这样做的话,当struts发现action中返回的结果中不被包含在action定义的结果集中时,就会从global result中查找,
< package name= "user" namespace = "/User" extends= "struts-default"> < global-results > < result name= "login" >pages/login.jsp </ result> </ global-results> < action name= "ActionTest" class = "org.mxiao.struts.action.HelloAction"> < result name= "success" >pages/welcome.jsp </ result> </ action> </ package>
Hello Action 可以相应login和success两个结果集。
7. <default-class-ref>
当我们在配置Action的时候,如果没有为某个Action指定具体的class值时,系统将自动引用<default-class-ref>标签中所指定的类。在Struts2框架中,系统默认的class为ActionSupport,该配置我们可以在xwork的核心包下的xwork-default.xml文件中找到。
8. <default-action-ref>
如果在请求一个没有定义过的Action资源时,系统就会抛出404错误。这种错误不可避免,但这样的页面并不友好。我们可以使用<default-action-ref>来指定一个默认的Action,如果系统没有找到指定的Action,就会指定来调用这个默认的Action。
另外常用的可以配置的tag还有interceptor 和exception,之后会用另外的章节单独介绍。