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
------解决方案--------------------
------解决方案--------------------<! 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" >