Struts2使用注释配置Action

Annotation是JDK5.0引入的新特性,以前学JAVA SE时没有感觉到有什么用,但是现在学到Struts2的Action配置时,才算真正体会到Annotation的用处。周所周知,要让URL映射到Action,必须在struts.xml中配置action标签,并制定result。其实这些完全可以在Action类的定义时就解决的,实现了零配置,当然这也是以维护难为代价的。

以下是我的一个实验过程,加深对Annotation的理解:

第一步、搭建环境,这里直接略过

第二步、编写页面(annotation.jsp   index.jsp    failure.jsp)

第三步、编写AnnotationAction

package cn.guet.hj.action;

import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import com.opensymphony.xwork2.Action;
/**
 * 
 * 使用注释配置Action
 *
 */

@ParentPackage("struts-default")
@Namespace("/anno")
@Result(name="success", location="/annotation.jsp")
@Results({
	@Result(name="input",location="/index.jsp"),
	@Result(name="error",location="/failure.jsp")
})
public class AnnotationAction implements Action {
	private String info;
	

	public String getInfo() {
		return info;
	}

	public void setInfo(String info) {
		this.info = info;
	}

	public String execute() throws Exception {
		info = "this action is configurate by Annotation!!";
		return "success";
	}
	public String input()throws Exception{
		return INPUT;
	}
	public String error()throws Exception{
		return ERROR;
	}
}


第四步、配置web.xml,将actionPackages设置为Action的包名

<filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  	<init-param>
  		<param-name>actionPackages</param-name>
  		<param-value>cn.guet.hj.action</param-value>
  	</init-param>
  </filter>



第五步、测试:

http://localhost/ActionContextTest/anno/annotation.action

http://localhost/ActionContextTest/anno/annotation!input.action

http://localhost/ActionContextTest/anno/annotation!.error.action


需要注意的地方:

1、要支持Annotation配置Action,还要导入struts2-convention-plugin-2.3.1.2.jar

2、上面始终没有指定像struts.xml中action标签的name,这是因为将通过Action的类名来生成name,将首写字母小写并去掉后缀Action得到的annotation就是name

3、annotation.action调用默认方法execute    annotation!input.action通过感叹号调用指定方法。


总结:

其实使用Annotation配置Action本质上还是与配置struts.xml一样的。

如果使用struts配置

<package name="annomationText" namespace="/anno" extends="struts-default">
	<action name="annotation" class="cn.guet.hj.action.AnnotationAction">
		<result name="annotation">/annotation.jsp</result>
		<result name="input">/index.jsp</result>			
                <result name="error">/failure.jsp</result>			
	</action>
</package>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值