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" />
同时配置的话,估计也会出错!