struts2零配置之@Action和@Actions注解

@Action和@Actions注解详解

package org.rabbitx.web.struts2.annotation;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;

import com.opensymphony.xwork2.ActionSupport;

public class ActionAnnotationAction extends ActionSupport{

	private static final long serialVersionUID = -875096768864638232L;

	private Logger logger = Logger.getLogger(ActionAnnotationAction.class);
	
	/**
	 * 
	 * 1. 使用@Action注解改变Convention plug约定的action与url之间的映射关系,,原来的约定被覆盖并不再起作用。
	 *    原来约定地址:http://localhost:8080/org.rabbitx.web.struts2.convention/annotation/action-annotation
	 *    重写后的地址:http://localhost:8080/org.rabbitx.web.struts2.convention/execute
	 */
	@Override
	@Action("/execute")
	public String execute() throws Exception {
		logger.info("------ConventionAnnotationAction-----execute-------");
		
		return SUCCESS;
	}
	
	/**
	 * 2. 使用@Actions注解解决一个ACTION中的一个方法,响应多个不同的URL。
	 *    实际项目开发过程中有很大的几率碰到Action的处理相同,但是最终跳转的页面不同的情况。将@Actions和@Action组合起来用即可解决这样的需求。
	 *    访问地址:http://localhost:8080/org.rabbitx.web.struts2.convention/multi-url-a
	 *           http://localhost:8080/org.rabbitx.web.struts2.convention/multi-url-b
	 *           http://localhost:8080/org.rabbitx.web.struts2.convention/multi-url-c
	 */
	@Actions({
		@Action("/multi-url-a"),
		@Action("/multi-url-b"),
		@Action("/multi-url-c")
	})
	public String multiUrl2SingleAction()
	{
		logger.info("------ConventionAnnotationAction-----multiUrl2SingleAction-------");
		return SUCCESS;
	}
	
	/**
	 * 3. 使用@Action注解解决一个ACTION中的多个方法,其中每个方法响应不同的URL.
	 * 4. 注解@Action的value值使用相对路径.
	 *    "relative-action-url"没有以"/"开头,表示使用了相对路径。
	 *    使用相对路径后,访问此方法需要使用 namespace + url 的方式,即/annotation/relative-action-url。
	 *    使用相对路径后,响应的页面资源默认放在对应的命名空间目录下,即/content/annotation/relative-action-url.jsp。
	 *    访问地址:http://localhost:8080/org.rabbitx.web.struts2.convention/annotation/relative-action-url
	 */
	@Action("relative-action-url")
	public String relativeActionUrl()
	{
		logger.info("------ConventionAnnotationAction-----relativeActionUrl-------");
		return SUCCESS;
	}
	
	/**
	 * 5. 注解@Action的value值使用绝对路径.
	 *    "/absolute-action-url"以"/"开头,表示使用了绝对路径。
	 *    使用绝对路径后,访问此方法可以直接使用地址,即/absolute-action-url。
	 *    使用绝对路径后,响应的页面资源默认放在跟目录对应目录下,即/content/absolute-action-url.jsp。
	 *    访问地址:http://localhost:8080/org.rabbitx.web.struts2.convention/absolute-action-url
	 */
	@Action("/absolute-action-url")
	public String absoluteActionUrl()
	{
		logger.info("------ConventionAnnotationAction-----absoluteActionUrl-------");
		return SUCCESS;
	}
}

猜你喜欢

转载自ihuning.iteye.com/blog/2235925