@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; } }