Action名称的搜索顺序举例说明
Struts.xml:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="test" extends="struts-default" namespace="/cs">
<action name="hello" class="cn.csdn.hr.action.HelloAction"
method="add">
<result>../hello.jsp</result>
</action>
</package>
<package name="ast" extends="struts-default" namespace="/cs/test">
<action name="hello" class="cn.csdn.hr.action.HelloAction"
method="add">
<result>../../hello.jsp</result>
</action>
</package>
</struts>
从以上的代码中可以看出:
第一个package的命名空间为namespace="/cs",action的名字为hello,所访问的类为:cn.csdn.hr.action.HelloAction,访问的类中的方法为add,返回的结果在hello.jsp页面。
第二个page的命名空间为namespace="/cs/test",action的name为hello1,所访问的类为:"cn.csdn.hr.action.HellosAction",访问的类中的方法为:add,返回的页面也是hello.jsp,只是访问的路径不一样.
当我们访问的路径为:
http://localhost:8080/cs/hello.action 的时候可以跳转到../hello.jsp 这个页面。
当我们访问路径为:
http://localhost:8080/cs/test/hello.action 的时候,它可以跳转到../../hello.jsp这个页面。
当我们访问的路径为:
http://localhost:8080/cs/test1/hello.action 的时候,因为没有test1这个路径,所以struts2会自动的找
http://localhost:8080/cs 路径下看有没有name为hello的action,如果有的话就直接执行cs下的package下的result,去跳转。
Action访问的路径是逐个寻找的
注:
当HelloAction继承ActionSupport之后,里面的方法只有默认的方法时,可以省略class 如果想要访问HelloAction中的其他方法,用method来访问,访问时必须要自定class的路径
Java类:
package cn.csdn.hr.action;
import com.opensymphony.xwork2.ActionSupport;
//action为普通的java类 可以继承接口 Action
public class HelloAction extends ActionSupport{
private static final long serialVersionUID = 1L;
//默认的方法是execute,方法必须是string类型的
@Override
public String execute() throws Exception {
System.out.println("你 执行了!吧!");
//直接返回success
return SUCCESS;
}
public String add() throws Exception {
System.out.println("你 执行了!吧!=============");
//直接返回success
return SUCCESS;
}
}
分享到:
相关推荐
举例说明。 11 14. 简述synchronized和java.util.concurrent.locks.Lock的异同 ? 11 15. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 11 16. abstract class和interface...
2.28.2 Struts2校验框架应用 71 2.28.2.1 校验配置文件 71 2.28.2.2 角色Insert页面示例 71 2.28.2.3 用户Query页面示例 73 2.28.2.4 多行输入域校验 75 2.29 多语言管理 77 2.29.1 定义输入域的name属性和资源文件 ...
举例说明。 49. 下面两个方法同步吗?(自己发明) 50、多线程有几种实现方法?同步有几种实现方法? 51、启动一个线程是用run()还是start()? . 52、当一个线程进入一个对象的一个synchronized方法后,其它线程...
举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,...
举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,...
举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,...
举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,...
举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,...
举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后...
举例说明。 36 49. 下面两个方法同步吗?(自己发明) 36 50、多线程有几种实现方法?同步有几种实现方法? 36 51、启动一个线程是用run()还是start()? . 37 52、当一个线程进入一个对象的一个synchronized方法后,...
举例说明。 32 49. 下面两个方法同步吗?(自己发明) 33 50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,...
使用import指令导入库到模板中,Freemarker会为导入的库创建新的名字空间,并可以通过import指令中指定的散列变量访问库中的变量: ${my.mail} ${mail} 输出结果: <p>Copyright (C) 1999-2002 ...
举例说明。 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要...
举例说明。 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要...
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? ...... 7 2、Java 有没有 goto? .......................................................................................................