在Struts中运行拦截器

时间:2012-10-06 17:45:23

标签: java struts2 web

我一直在尝试在我的项目中运行以下代码。整个项目工作正常,但拦截器部分没有显示任何结果。我是拦截器部分的新手所以请告诉我,如果我的代码缺少某些东西。我也希望知道运行拦截器的唯一更改是通过添加拦截器标签在struts.xml文件中完成吗?

enter code here  
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<constant name="struts.devMode" value="true"/>
<package name="default" namespace="/" extends="struts-default">
   <interceptors>  
   <interceptor name="timer" class=".."/>
   <interceptor name="logger" class=".."/>
   </interceptors>
   <action name="HelloWorld">
      <result>/HelloWorld/HelloWorld.jsp</result>
      <interceptor-ref name="timer"/>
      <interceptor-ref name="logger"/>
    </action>
    <action name="SayHello" class="com.sapient.test.HelloAction">

        <result name="SUCCESS">/HelloWorld/DisplayHello.jsp</result>
        <result name="INPUT">/HelloWorld/HelloWorld.jsp</result>
           <interceptor-ref name="timer"/>
           <interceptor-ref name="logger"/>

    </action>
</package>  

请注意,当我添加拦截器代码时,Web应用程序的其余部分工作正常。其余的Web应用程序在运行时运行,但拦截器部分无法正常工作。它不是一个缓存问题因为我试过多次清理服务器和目录但没有效果。请帮忙。

1 个答案:

答案 0 :(得分:0)

请在struts.xml中配置拦截器,如下所示,

 <interceptor name="loginInterceptor" class="......." />
        <interceptor-stack name="loginInterceptorStack">
          <interceptor-ref name="loginInterceptor" />
          <interceptor-ref name="defaultStack" />
    </interceptors>

然后将拦截器堆栈应用于操作

  <action name="..." class=".....">
        <interceptor-ref name="loginInterceptorStack"></interceptor-ref>
        <result name="input">.....</result>
        <result name="success">...../result>
    </action>

在结果操作配置之前添加拦截器。还要在拦截器中添加适当的日志记录,以便在调用默认堆栈之前知道你的拦截器被调用。