1.登陆Action
/* * action也需要在这个路径(/anno)下 * 如:@Action(value="/anno/login" * */ //可以这样(在WEB-INF下):@ResultPath("/WEB-INF/jsps") @ParentPackage("annoInterceptorPackage") @ResultPath("/anno") @Results({ @Result(name="error",location="anno_login_error.jsp",type="redirect"), @Result(name="success",location="anno_login_success.jsp",type="redirect") }) @ExceptionMappings({ @ExceptionMapping(result="error",exception="java.lang.Exception") }) @InterceptorRefs({ @InterceptorRef("namePrefixInterceptor"), @InterceptorRef("defaultStack") }) public class LoginAction extends ActionSupport { private static final long serialVersionUID = 1L; private User user; private String injectMsg; @Actions({ @Action(value="/anno/login",params={"injectMsg","hi,mtea"} /* //当配置了Action级的结果视图,则可以不需要方法级别的结果视图 ,results={ @Result(name="error",location="/anno/anno_login_error.jsp",type="redirect"), @Result(name="success",location="/anno/anno_login_success.jsp",type="redirect") } */ /* //当配置了Action级的拦截器,则可以不需要方法级别的拦截器 ,interceptorRefs={ @InterceptorRef("namePrefixInterceptor"), @InterceptorRef("defaultStack") } */ ) }) public String login() throws Exception { System.out.println("getInjextMsg():"+getInjectMsg()); if (user != null) { if (user.getUsername().equals("mtea") && user.getPassword().equals("123")) { System.out.println("login()()-SUCCESS"); return SUCCESS; } else { System.out.println("login()()-ERROR"); throw new Exception("测试异常"); //return ERROR; } } else { return ERROR; }
2.用户名前缀拦截器
/** * 登陆名前缀拦截 */ public class NamePrefixInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 1L; @Override public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); String username=request.getParameter("user.username"); System.out.println("NamePrefixInterceptor-intercept()-username:"+username); if(username.startsWith("m")){ return Action.ERROR; }else{ return invocation.invoke(); } } }
3.配置拦截器
<package name="annoInterceptorPackage" namespace="/anno" extends="struts-default"> <interceptors> <interceptor name="namePrefixInterceptor" class="com.mtea.erp.interceptor.NamePrefixInterceptor"/> </interceptors> </package>
4.简单截图
注意:
annoInterceptorPackage 这个名字需要和 @ParentPackage("annoInterceptorPackage") 一样,否则的话,tomcat出错!
<constant name="struts.devMode" value="true" />
<constant name="struts.convention.classes.reload" value="true" />
同时配置的话,估计也会出错!