java - Struts2拦截器拦截成功,却不出现返回页面
本文介绍了java - Struts2拦截器拦截成功,却不出现返回页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
拦截器代码
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import java.util.Map;
/**
* Created by allme on 2016/5/25.
*/
public class LoginInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception {
try{
Map session = actionInvocation.getInvocationContext().getSession();
String username = (String) session.get("username");
String userpwd = (String) session.get("userpwd");
if("".equals(username)||"".equals(userpwd)||username==null||userpwd==null){
System.out.println("what "+username);
System.out.println("what "+userpwd);
return "login";
}
else{
return actionInvocation.invoke();
}
}catch (Exception e){
e.printStackTrace();
}finally {
return null;
}
}
}
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="register" extends="struts-default">
<action name="useraction" class="cn.edu.zucc.action.UserAction">
<result name="showuser">/showuser.jsp</result>
</action>
</package>
<package name="login" extends="struts-default">
<interceptors>
<interceptor name="Login" class="cn.edu.zucc.interceptot.LoginInterceptor" />
<interceptor-stack name="loginstack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="Login"></interceptor-ref>
<interceptor-ref name="timer"></interceptor-ref>
</interceptor-stack>
</interceptors>
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<action name="Login" class="cn.edu.zucc.action.LoginAction">
<result name="error">/error.jsp</result>
<result name="admin">/admin.jsp</result>
<result name="user">/user.jsp</result>
<result name="login">/login.jsp</result>
</action>
<action name="Hello" class="cn.edu.zucc.action.HelloAction">
<result name="showuser">/showuser.jsp</result>
<result name="login">/login.jsp</result>
<interceptor-ref name="loginstack"></interceptor-ref>
</action>
</package>
</struts>
解决方案
如果已经运行到你的System.out.println("what "+username);
部分,那确实证明拦截器已经正确工作了,但最后没有跳到login
页面?
死马当活马医吧,试试调整下拦截器的使用顺序?
<action name="Hello" class="cn.edu.zucc.action.HelloAction">
<interceptor-ref name="loginstack"></interceptor-ref>
<result name="showuser">/showuser.jsp</result>
<result name="login">/login.jsp</result>
</action>
修正:
最终原因@allme 自己已找到,是finally
里return null;
的缘故。
这篇关于java - Struts2拦截器拦截成功,却不出现返回页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文