论坛首页 Java企业应用论坛

struts2拦截器

浏览 1856 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-11-05  
import com.opensymphony.xwork2.ActionSupport;


public class UserAction extends ActionSupport {

private String username;
private String userpsw;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpsw() {
return userpsw;
}
public void setUserpsw(String userpsw) {
this.userpsw = userpsw;
}

@Override
public String execute() throws Exception {
System.out.println("--------------------进入executeMethod------------------------------");
return "success";
}

public String login()
{
System.err.println("--------------进入login方法---------------------------------");
return "success";
}

public void validateLogin()
{
System.err.println("-----------------进行数据验证-----------------------");
if (username.trim().length()==0) {
addFieldError(username, "用户名不能为空");
}
if(userpsw.trim().length()==0)
{
addFieldError(userpsw, "密码不能为空");
}
}
}








import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

//这个类拦截action所有的方法
public class UserInterceptor extends AbstractInterceptor {

//用户拦截器   在这里可以得到action  也可以得到actioncontent
@Override
public String intercept(ActionInvocation arg0) throws Exception {
//
System.out.println("-----------------------执行拦截器啦--------------------------------------------------");
UserAction user = (UserAction) arg0.getAction();
if(user.getUsername().equals("admin"))
{
return "success";
}else
{
return "input";
}


}

}




import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

//这个类对指定的方法进行拦截,可以过滤方法
/**
* 用这个类的时候一定要配置如下两个属性
* void setExcludeMethods(String excludeMethods)  不需要拦截的方法
* void setIncludeMethods(String includeMethods) 要拦截的方法
*
* */
public class MethodFilterInterceptorDemo extends MethodFilterInterceptor {

@Override
protected String doIntercept(ActionInvocation arg0) throws Exception {
//
System.out.println("--------------进入方法过滤器--------------------------");
UserAction ua = (UserAction) arg0.getAction();
if (ua.getUsername().equals("admin")&&ua.getUserpsw().equals("admin")) {
arg0.invoke();
}
return "input";
}

}






<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
    "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">
    <!--
    <interceptors>
    <interceptor name="userinterceptor" class="UserInterceptor"></interceptor>
    <interceptor-stack name="user">
    <interceptor-ref name="defaultStack"></interceptor-ref>
    <interceptor-ref name="userinterceptor"></interceptor-ref>
    </interceptor-stack>   
    </interceptors>
     -->
    
     <interceptors>
    <interceptor name="userinterceptor" class="MethodFilterInterceptorDemo"></interceptor>
    <interceptor-stack name="user">
    <interceptor-ref name="defaultStack"></interceptor-ref>
    <interceptor-ref name="userinterceptor">
    <!-- 不需要被过滤的方法 -->
    <param name="excludeMethods">execute,login</param>
    <!-- 指定action里面需要被过滤的方法 -->
    <param name="includeMethods">login</param>
    </interceptor-ref>
    </interceptor-stack>   
    </interceptors>
   
        <action name="login" class="UserAction" method="login">
        <interceptor-ref name="user"></interceptor-ref>
        <result name="success">success.jsp</result>
        <result name="input">index.jsp</result>
        </action>
    </package>
</struts>
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics