当前位置:编程学习 > JAVA >>

SSH 拦截器响应但是页面不跳转

各位好,我做了一个SSH的拦截器,用来进行登录验证,UserInterceptor为定义的拦截器类。使用firefox调试界面,显示控制台>>所有的响应部分显示有登录界面(login.jsp),但是没有跳转。
UserInterceptor代码:

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import pojo.User;
public class UserInterceptor extends AbstractInterceptor{

@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext ctx = invocation.getInvocationContext();
Map session = ctx.getSession();
User  user  = (User)session.get("user");
if (user != null)
{
return invocation.invoke();
}
System.out.println("no   need login");
ctx.put("tip", "您还没有登录");
return "userlogin";
//return null;
}

}

struts.xml的配置
<package name = "jsoninfo" extends = "json-default">
<interceptors>
<interceptor name="authority"  class="extjsAction.interceptor.UserInterceptor"/>
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="authority"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault" />  

<global-results>
<result name="userlogin">/user/login.jsp</result>  
</global-results>

<!-- 其他的action配置 -->  
</package>
firefox显示: --------------------编程问答-------------------- 你这页面显示啥呀 --------------------编程问答-------------------- 控制台输出:no   need login了吗或者你action中没引用这个自定义的拦截器 --------------------编程问答-------------------- 控制台输出了no need login.由于使用了<default-interceptor-ref name="mydefault" />,所以包里的action应该都会执行拦截的,不用每一个action都引用吧。 --------------------编程问答-------------------- 不好意思,页面的控制台显示的login.jsp的信息:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css"/>
<script type="text/javascript" src="../extjs/ext-all.js"></script>
<script type="text/javascript" src="../extjs/local/ext-lang-zh_CN.js"></script>
<script type="text/javascript" src="../js/user/userlogin.js"></script>
<script type="text/javascript">
alert("the login jsp");
</script>
</head>
<body style="background-image:url('../images/leftmenu33.png');">
<div id = "logindiv" style="width: 100%; height: 100%;"></div>
</body>
</html> 
证明login.jsp已经响应了,但是alert("the login jsp")没有执行,login.jsp也没有跳转。 --------------------编程问答-------------------- return "userlogin";
这句话你给改改
response.sendRedirect("login.jsp");
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,