一、package中的name,extends,namespace
跟java中的package一样,在java中是对相同的名的java类进行package区分,而这里是对相同名的action进行区分。
如:
<package name="front" extends="struts-default" namespace="/front"> <action name="hello"> <result type="dispatcher">/hello.jsp</result> </action> </package> <package name="back" extends="struts-default" namespace="/back"> <action name="hello"> <result type="dispatcher">/hello.jsp</result> </action>namespace可以来确定哪个命名之下的action,extends可以继承其他的package的配置,namespace可以不写,也可以写成namespace=“ ”,这是就相当于可以接受任何namesapce情况的连接,只要该链接的action存在,即可访问。
也就说namespace为空的解决了其他package不能处理的action
二、action 中的name, class,method
如一中的action他是直接执行了默认的action类,我们可以自己定义action类来执行自己需要的操作,并且返回值,根据返回的result来确定下次执行的页面
<action name="hello" class="com.thridProject.action.HelloAction"> <result type="dispatcher">/hello.jsp</result> </action>这个时候我们可以在后台写自己的HelloAction.java的源文件了
在实现HelloAction的时候有三种方法;
1)只要这个Class类中存在execute方法并且该方法的返回值是一个String类型,Struts2就能把这个类当成是一个Action实现方法(Struts1与Struts2的区别)
package com.thridProject.action; public class HelloAction { public String execute(){ return "success"; } }
2)实现的类继承ActionSupport类,并且实现execute方法:
package com.thridProject.action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; public String execute(){ return "success"; } }
3)第三种方法是继承Action 接口,并且实现Action接口的execute方法。不过一般开发我们只用第二种方法.
在这个地方我们可以稍微注意下,在jsp路径的问题上,最好使用绝对路径,并且MyEclipse会自动的帮你生成basepath
method指定在调用该类时执行哪个方法,默认会调用execute方法,但是我们可以给他指定方法,只要方法的返回值是个String类型就可以。这个时候Struts.xml的配置为:
<package name="default" extends="struts-default" namespace="/"> <action name="hello" class="com.thridProject.action.HelloAction" method ="add"> <result type="dispatcher" name="success">/hello.jsp</result> </action> </package>java类型的代码为:
package com.thridProject.action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport { /** * */ private static final long serialVersionUID = 1L; public String add(){ return "success"; } }当然方法也可以是其他的名字,都是一样的道理。
当然方法的调用可以是使用动态的方法调用,这个时候不需要再Struts.xml的action配置中写上method,我们可以在写url是动态的指定格式为:
http://loacalhost:8080/ThridProject/hello!add
原文链接:https://www.f2er.com/xml/299552.html