[code]
/*
1----开发模式
2 .namespace:他决定了action的访问路径,默认为空,为空代表可匹配任意的命名空间,
如果为 / ,或者/aaa 或/aaa/bbb 那么他们对应得路径就分别为 /index.jsp
/aaa/index.jsp , /aaa/bbb/index.jsp
3.package name="default"这个东西是为了防止action name重名用的
4. 连接会先经过com.zhe.Action1,再来到index.jsp
5 , method="add" 表示调用Action1的add方法,如果不写默认调用execute方法,但是这个方法不怎么好, 一般要调用方法则 /index/!add ----在链接里面指定,学名叫DMI动态方法调用
6.这个叫做通配符匹配,{1}代表name="index*" 中的第一个*, 如果链接是/indexadd
那么method="add"而且结果也被动态指定成indexadd.jsp
有了通配符我们就可以这样了:
<action name="*_*" class="com.zhe.{1}" method="{2}">
<result >{1}_{2}_success.jsp </result>
</action>
7.如果找不到匹配的就会用 default-action-ref 指向的action
8.如果没有找到匹配的结果,那么会到这个包中的global-results中找, 如果其他的package想要使用这个package中的result,那么必须继承这个package,如 extends=“user”的意思是继承package名字为user的包
9. ${}这个符号是去value stack里面取值,而Action中的每一个属性的值都会放到value stack中,所以这里r一定是Action中的一个值。。。用的并不多,了解就可以
10. redirect是重定向到一个jsp,这意味着客户端会直接访问jsp而没有经过Action,由于没有经过Action,那么<s:property value="name"/>将无效(这是从value stack里面取值),办法是<s:property value="#parameters.name" />就可以取到值
*/
<constant name="struts.devMode" value="true" /> //1
<package name="default" namespace="/" extends="struts-default"> //2,3
<default-action-ref name="index"></default-action-ref>//7
<global-results> //8
<result name="aaa">/index.jsp</result>
</global-results>
<action name="index" class="com.zhe.Action1" > //4
//<action name="index" class="com.zhe.Action1" method="add"> 5
// <action name="index*" class="com.zhe.Action1" method="{1}"> 6
<result >
/index.jsp //index{1} 6
</result>
//<result>${r}</result> 9
//<result type="redirect" >/index.jsp?name=${name}</result> 10
</action>
</package>
public class Action1 extends ActionSupport{
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return "success";
}
}
[/code]
/*
1----开发模式
2 .namespace:他决定了action的访问路径,默认为空,为空代表可匹配任意的命名空间,
如果为 / ,或者/aaa 或/aaa/bbb 那么他们对应得路径就分别为 /index.jsp
/aaa/index.jsp , /aaa/bbb/index.jsp
3.package name="default"这个东西是为了防止action name重名用的
4. 连接会先经过com.zhe.Action1,再来到index.jsp
5 , method="add" 表示调用Action1的add方法,如果不写默认调用execute方法,但是这个方法不怎么好, 一般要调用方法则 /index/!add ----在链接里面指定,学名叫DMI动态方法调用
6.这个叫做通配符匹配,{1}代表name="index*" 中的第一个*, 如果链接是/indexadd
那么method="add"而且结果也被动态指定成indexadd.jsp
有了通配符我们就可以这样了:
<action name="*_*" class="com.zhe.{1}" method="{2}">
<result >{1}_{2}_success.jsp </result>
</action>
7.如果找不到匹配的就会用 default-action-ref 指向的action
8.如果没有找到匹配的结果,那么会到这个包中的global-results中找, 如果其他的package想要使用这个package中的result,那么必须继承这个package,如 extends=“user”的意思是继承package名字为user的包
9. ${}这个符号是去value stack里面取值,而Action中的每一个属性的值都会放到value stack中,所以这里r一定是Action中的一个值。。。用的并不多,了解就可以
10. redirect是重定向到一个jsp,这意味着客户端会直接访问jsp而没有经过Action,由于没有经过Action,那么<s:property value="name"/>将无效(这是从value stack里面取值),办法是<s:property value="#parameters.name" />就可以取到值
*/
<constant name="struts.devMode" value="true" /> //1
<package name="default" namespace="/" extends="struts-default"> //2,3
<default-action-ref name="index"></default-action-ref>//7
<global-results> //8
<result name="aaa">/index.jsp</result>
</global-results>
<action name="index" class="com.zhe.Action1" > //4
//<action name="index" class="com.zhe.Action1" method="add"> 5
// <action name="index*" class="com.zhe.Action1" method="{1}"> 6
<result >
/index.jsp //index{1} 6
</result>
//<result>${r}</result> 9
//<result type="redirect" >/index.jsp?name=${name}</result> 10
</action>
</package>
public class Action1 extends ActionSupport{
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return "success";
}
}
[/code]