拦截器如下
package com.muzhi.Interceptor;import java.util.Map;import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class TeaInterceptor extends AbstractInterceptor { /**
 * 
 */
private static final long serialVersionUID = 1008775964354634873L; @Override
public String intercept(ActionInvocation invocation) throws Exception {
Map session = invocation.getInvocationContext().getSession();
String t = (String) session.get("user.teacher");
String a = (String) session.get("user.admin") ;
if (null == t) {
                        System.out.println( "第二次拦截我就不出现了" ) ;
return "error";
} else {
return invocation.invoke();
}
}}
struts.xml相关设置如下
<interceptors>
<interceptor name="tea" class="com.muzhi.Interceptor.TeaInterceptor"></interceptor>
<interceptor-stack name="teaStack">
<interceptor-stack name="teaStack">
<interceptor-ref name="tea"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="showfiles" class="com.caizhou.action.ShowAciton">
<result name="success">/ShowPage.jsp</result>
<result name="error">/login.html</result>
<interceptor-ref name="teaStack"></interceptor-ref>
</action>
action如下:
package com.caizhou.action;import java.util.List;import javax.naming.InitialContext;import com.caizhou.bean.FileInfo;
import com.caizhou.service.FileInfoDAO;
import com.opensymphony.xwork2.ActionSupport;public class ShowAciton extends ActionSupport { /**
 * 
 */
private static final long serialVersionUID = 1L; private int pageNow = 1;
private int pageSize = 5;
private boolean hasNext = true;
private List<FileInfo> list;
FileInfoDAO file; public int getPageNow() {
return pageNow;
} public void setPageNow(int pageNow) {
this.pageNow = pageNow;
} public int getPageSize() {
return pageSize;
} public void setPageSize(int pageSize) {
this.pageSize = pageSize;
} public List<FileInfo> getList() {
return list;
} public void setList(List<FileInfo> list) {
this.list = list;
} public boolean isHasNext() {
return hasNext;
} public void setHasNext(boolean hasNext) {
this.hasNext = hasNext;
} @Override
public String execute() throws Exception {
InitialContext ctx = new InitialContext();
file = (FileInfoDAO) ctx.lookup("FileInfoDAObean/remote");
list = file.getPage(pageSize, pageNow);
hasNext = file.hasNext( pageSize , pageNow ) ;
System.out.println( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ) ;
return SUCCESS;
}}
我发现拦截器第一次可以成功拦截,但是以后无论我session里面有没有正确信息它直接返回的result都是error,奇怪的是红色字段的内容再也不print出来.

解决方案 »

  1.   

    对你的现象不太了解,有一点。
    你的配置里面,只是对一个Action指定了拦截器。是不是你运行其他的Action的时候,拦截器没有起到作用。
      

  2.   

    <interceptors> 
    <interceptor name="tea" class="com.muzhi.Interceptor.TeaInterceptor"> </interceptor> 
    <interceptor-stack name="teaStack">  ---没有结束标志
    <interceptor-stack name="teaStack"> 
    <interceptor-ref name="tea"> </interceptor-ref> 
    <interceptor-ref name="defaultStack"> </interceptor-ref> 
    </interceptor-stack> 
    </interceptors> 
      

  3.   

    公司名称:合众天恒科技有限公司
    公司说明:我们是一家刚刚起步的纯软件公司,风险与机遇共存,期待您的加入,一同成长。
    招聘对象:
    1、软件开发部部门经理(1人)
    1) 有三年以上真实软件项目的开发经验,能熟练使用(Struts OR Velocity OR WebWork OR FreeMaker)+Spring+Hibernate框架进行软件开发。
    2) 为人诚实、工作积极主动、善于沟通,乐于钻研,勇于创新。
    3) 有软件开发平台设计经验者优先
    4) 有工作流开发经验者优先
    5) 有Acegi使用经验者优先
    6) 有金融行业、教育行业开发背景者优先。
    2、项目经理(2人)
    1)有两年以上真实软件项目的开发经验,能熟练使用(Struts OR Velocity OR WebWork OR FreeMaker)+Spring+Hibernate框架进行软件开发。
    2) 为人诚实、工作积极主动、善于沟通,乐于钻研,勇于创新。
    3) 有工作流开发经验者优先
    4) 有Acegi使用经验者优先
    5) 有金融行业、教育行业开发背景者优先。
    3、软件开发工程师(3人)
    1)有真实软件项目的开发经验,能熟练使用(Struts OR Velocity OR WebWork OR FreeMaker)+Spring+Hibernate框架进行软件开发。
    2) 为人诚实、工作积极主动、善于沟通,乐于钻研新技术,勇于创新。
    3) 有工作流开发经验者优先
    4) 有Acegi使用经验者优先
    4、公司出纳兼行政(1人)
    1)为人诚实、工作积极主动、善于沟通、语言表达能力较强、有吃苦耐劳的心理准备。
    2)有行政人事工作经验者优先
    3)有出纳工作经验者优先工作地点:上地金泰富地大厦
    如有意向,请将您的简历发到如下邮箱: [email protected]或者[email protected]
      

  4.   

    <interceptors>
    <interceptor name="tea" class="com.muzhi.Interceptor.TeaInterceptor">
    </interceptor>
    <interceptor-stack name="teaStack">
    <interceptor-ref name="tea"></interceptor-ref>
    <interceptor-ref name="tea"></interceptor-ref>
     --->引用两次看看能不能符合你的要求
    <interceptor-ref name="defaultStack">
    </interceptor-ref>
    </interceptor-stack>
    </interceptors>