Strut.xml内的属性,action属性,package属性,(一)
一、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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |