`
Mr_Chunlei
  • 浏览: 28463 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics