读书人

struts2.0拦截器有关问题

发布时间: 2012-03-25 20:55:16 作者: rapoo

struts2.0拦截器问题
拦截器:
@Override
public String intercept(ActionInvocation arg0) throws Exception {
// TODO Auto-generated method stub
System.out.println("lanjieqi yunxing");
Map map=arg0.getInvocationContext().getSession();//获得session对象,并将其强制转化
if(map.get("user")==null)
{
return Action.LOGIN;
}
else
{
return arg0.invoke();
}


}
Action
public String execute() throws Exception
{ System.out.println("execute yunxing");

if("zhangsan".equals(user.getUsername()) && "1234".equals(user.getPassword()))
{
Map map=ActionContext.getContext().getSession();
map.put("user", "sdfsdf");
return SUCCESS;
}
else
{
return ERROR;
}
}

配置文件:
<struts>
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="LoginInterceptor" class="org.sunxin.struts2.ch03.interceptor.LoginInterceptor">
</interceptor>
</interceptors>

<action name="login" class="org.sunxin.struts2.ch03.action.LoginAction">
<result name="success" >/success.jsp</result>
<result name="error">/error.jsp</result>
<result name="login" type="redirect">/login2.jsp</result>
<result name="input">/login.jsp</result>
<interceptor-ref name="LoginInterceptor"/>
<interceptor-ref name="defaultStack"/>

</action>
</package>
</struts>
当不输入内容时,转到login2.jsp 但输入正确时,也转到login2.jsp,而不转到seccuess.jsp 。拦截器到底是怎么样工作的呀

[解决办法]
顶一个
期待高手的到来
[解决办法]
拦截器是运行在action之前吧!此时还没有往session中设置值,map.get("user")==null应该等于true的。
[解决办法]
你看一下拦截器的排列顺序就知道了validate拦截器是排在你自定义的拦截器之前的,所以先执行!这样session就有东西了

而你放到action的execute中的话,是后于你自定义的拦截器执行,而这里每次都返回login.action,所以永远也执行不到你的execute
[解决办法]
拦截器是运行在action之前吧!此时还没有往session中设置值,map.get("user")==null应该等于true的。
[解决办法]
你看一下拦截器的排列顺序就知道了validate拦截器是排在你自定义的拦截器之前的,所以先执行!这样session就有东西了

而你放到action的execute中的话,是后于你自定义的拦截器执行,而这里每次都返回login.action,所以永远也执行不到你的execute
[解决办法]

探讨
但是我把我定义的拦截器放在默认的后面也还是一样execut()没有执行呀

[解决办法]
<! DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd" >
< struts >
< include file ="struts-default.xml" />
< package name ="InterceptorDemo" extends ="struts-default" >
< interceptors >
< interceptor name ="auth" class ="tutorial.AuthorizationInterceptor" />
</ interceptors >
< action name ="Timer" class ="tutorial.TimerInterceptorAction" >


< interceptor-ref name ="timer" />
< result > /Timer.jsp </ result >
</ action >
< action name ="Login" class ="tutorial.Login" >
< result type ="chain" > AuthorizatedAccess </ result >
</ action >
< action name ="AuthorizatedAccess" class ="tutorial.AuthorizatedAccess" >
< interceptor-ref name ="auth" />
< result name ="login" > /Login.jsp </ result >
< result name ="success" > /ShowRole.jsp </ result >
</ action >
</ package >
</ struts >
你换换形式试试!!!

读书人网 >J2EE开发

热点推荐