struts2 注解
使用注解来配置Action的最大好处就是可以实现零配置,但是事务都是有利有弊的,使用方便,维护起来就没那么方便了。
要使用注解方式,我们必须添加一个额外包:struts2-convention-plugin-2.x.x.jar。
总结常用的注解如下:
Namespace:指定命名空间。
ParentPackage:指定父包。
Result:提供了Action结果的映射。(一个结果的映射)
Results:“Result”注解列表
ResultPath:指定结果页面的基路径。
Action:指定Action的访问URL。
Actions:“Action”注解列表。
ExceptionMapping:指定异常映射。(映射一个声明异常)
ExceptionMappings:一级声明异常的数组。
InterceptorRef:拦截器引用。
InterceptorRefs:拦截器引用组。
package com.kingzheng.htwy.goodsPlan.action;import javax.annotation.Resource;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Namespace;import org.apache.struts2.convention.annotation.ParentPackage;import org.apache.struts2.convention.annotation.Result;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;/** * 物资计划控制器 * @author kings.chan * */@Controller("GoodsPlanAction")@Scope("prototype")@ParentPackage("struts-default")@Namespace("/goodsplan")public class GoodsPlanAction {private String currentPage;// 当前页private MainDatasouse1 mainbean;private GoodsPlanServ serv;public MainDatasouse1 getMainbean() {return mainbean;}public void setMainbean(MainDatasouse1 mainbean) {this.mainbean = mainbean;}@Resource(name="GoodsPlanServImpl")public void setServ(GoodsPlanServ serv) {this.serv = serv;}public String getCurrentPage() {return currentPage;}public void setCurrentPage(String currentPage) {this.currentPage = currentPage;}/*** * 主数据1查询 * @return */@Action(value="main1_search",results={@Result(name="success",location="/WEB-INF/jsp/htwy/goodsplan/main1.jsp")})public String mainDataSouse1Search(){try {serv.mainDatasouseSearch(this);} catch (Exception e) {e.printStackTrace();}return "success";}/*** * 主数据1编辑 * @return */@Action(value="main1_edit",results={@Result(name="success",location="/WEB-INF/jsp/htwy/goodsplan/main1_edit.jsp")})public String mainDataSouse1Edit(){try {serv.mainDatasouseEdit(this);} catch (Exception e) {e.printStackTrace();}return "success";} }带参数的注解:{key1,value1,key2,value2}
@Action(value="treeAction_subOrg",results={ @Result(name=SUCCESS,type="stream",params={"contentType","text/html;charset=UTF-8","inputName","json"}) }) 配置action:/** * Struts2基于注解的Action配置 * */ @ParentPackage("struts-default") @Namespace("/annotation_test") @Results( { @Result(name = "success", location = "/main.jsp"), @Result(name = "error", location = "/error.jsp") }) @ExceptionMappings( { @ExceptionMapping(exception = "java.lange.RuntimeException", result = "error") }) 拦截器配置:@ParentPackage("custom-default")@InterceptorRefs(@InterceptorRef("checkLoginStack"))@Results( { @Result(name = SUCCESS, location = "/redirect.jsp"),@Result(name = "input", location = "/login.jsp") })public class LoginAction extends ActionSupport {public String param = null;private static final long serialVersionUID = -7146549074248299166L;private Logger LOG = Logger.getLogger(LoginAction.class);public String execute() {LOG.info(param);Map<String, Object> session = ActionContext.getContext().getSession();if (param.equals("1")) {session.put("user", "123");return SUCCESS;} else {session.remove("user");return "input";}}}