struts.xml引入拦截器无效
在struts-list.xml中<packagename="whitelist"namespace="/wafplatform"extends="struts-defa...
在struts-list.xml中<package name="whitelist" namespace="/wafplatform"extends="struts-default">引入有用,
在struts.xml中<package name="default" namespace="/" extends="struts-default">引入无效,什么情况啊
下面是引入到struts.xml中的配置
<constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="utf-8" />
<constant name="struts.action.extension" value="action" />
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.ui.theme" value="simple" />
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="session"
class="com.taiji.waf.struts2.interceptor.SessionInterceptor" />
<interceptor name="checkConfig" class="com.taiji.waf.struts2.interceptor.CheckConfigInterceptor" />
<interceptor-stack name="sessionStack">
<interceptor-ref name="session" />
<interceptor-ref name="checkConfig" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="sessionStack" />
<default-action-ref name="index" />
<global-results>
<result name="nosession">/wafplatform/notice.jsp</result>
<result name="error">/wafplatform/error.jsp</result>
<result name="success">/wafplatform/success.jsp</result>
<result name="check">/wafplatform/dcheckmanage/check.jsp</result>
</global-results>
<action name="index">
<result type="redirectAction">
<param name="actionName">test</param>
<param name="namespace">/wafplatform</param>
</result>
</action>
求大神指点啊,急急啊 QQ 948732473 展开
在struts.xml中<package name="default" namespace="/" extends="struts-default">引入无效,什么情况啊
下面是引入到struts.xml中的配置
<constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="utf-8" />
<constant name="struts.action.extension" value="action" />
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.ui.theme" value="simple" />
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="session"
class="com.taiji.waf.struts2.interceptor.SessionInterceptor" />
<interceptor name="checkConfig" class="com.taiji.waf.struts2.interceptor.CheckConfigInterceptor" />
<interceptor-stack name="sessionStack">
<interceptor-ref name="session" />
<interceptor-ref name="checkConfig" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="sessionStack" />
<default-action-ref name="index" />
<global-results>
<result name="nosession">/wafplatform/notice.jsp</result>
<result name="error">/wafplatform/error.jsp</result>
<result name="success">/wafplatform/success.jsp</result>
<result name="check">/wafplatform/dcheckmanage/check.jsp</result>
</global-results>
<action name="index">
<result type="redirectAction">
<param name="actionName">test</param>
<param name="namespace">/wafplatform</param>
</result>
</action>
求大神指点啊,急急啊 QQ 948732473 展开
2个回答
展开全部
struts 里面的默认拦截器的机制是,如果你没有添加自己的拦截器,就会使用你包里面写的默认拦截器,如果添加了自定义拦截器,这时默认拦截器就失效.如果需要使用默认拦截器,需要添加到到你现有的包里面.
<package name="basePackage" extends="struts-default">
<interceptors>
<interceptor-stack name="baseStack">
<interceptor-ref name="exception" />
<interceptor-ref name="alias" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="i18n" />
<interceptor-ref name="prepare" />
<interceptor-ref name="chain" />
<interceptor-ref name="debugging" />
<interceptor-ref name="scopedModelDriven" />
<interceptor-ref name="modelDriven" />
<interceptor-ref name="fileUpload" />
<interceptor-ref name="checkbox" />
<interceptor-ref name="multiselect" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="actionMappingParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<!-- 配置方法级别的校验 -->
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 配置默认拦截器栈 -->
<default-interceptor-ref name="baseStack" />
<!-- 未到找Action指向页面 -->
<default-action-ref name="errorPage" />
<action name="errorPage">
<result type="redirect">/html/error_page_404.html</result>
</action>
</package>
<package name="admin" extends="basePackage" namespace="/admin/">
<interceptors>
<interceptor name="trimInterceptor" class="com.wikiex.ec.common.TrimInterceptor" />
<interceptor-stack name="adminStack">
<!-- trim拦截器 -->
<interceptor-ref name="trimInterceptor" />
<interceptor-ref name="baseStack" />
</interceptor-stack>
</interceptors>
<!-- 配置默认拦截器栈 -->
<default-interceptor-ref name="adminStack" />
<global-results>
<result name="error" type="freemarker">/WEB-INF/template/admin/error.ftl</result>
<result name="success" type="freemarker">/WEB-INF/template/admin/success.ftl</result>
</global-results>
<action name="index">
<result type="redirect">admin!main.action</result>
</action>
</package>
在第二个包里面虽然继承了第一个包,但是在拦截器中还是需要添加第一个包里面的baseStack 拦截器.
<package name="basePackage" extends="struts-default">
<interceptors>
<interceptor-stack name="baseStack">
<interceptor-ref name="exception" />
<interceptor-ref name="alias" />
<interceptor-ref name="servletConfig" />
<interceptor-ref name="i18n" />
<interceptor-ref name="prepare" />
<interceptor-ref name="chain" />
<interceptor-ref name="debugging" />
<interceptor-ref name="scopedModelDriven" />
<interceptor-ref name="modelDriven" />
<interceptor-ref name="fileUpload" />
<interceptor-ref name="checkbox" />
<interceptor-ref name="multiselect" />
<interceptor-ref name="staticParams" />
<interceptor-ref name="actionMappingParams" />
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<!-- 配置方法级别的校验 -->
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 配置默认拦截器栈 -->
<default-interceptor-ref name="baseStack" />
<!-- 未到找Action指向页面 -->
<default-action-ref name="errorPage" />
<action name="errorPage">
<result type="redirect">/html/error_page_404.html</result>
</action>
</package>
<package name="admin" extends="basePackage" namespace="/admin/">
<interceptors>
<interceptor name="trimInterceptor" class="com.wikiex.ec.common.TrimInterceptor" />
<interceptor-stack name="adminStack">
<!-- trim拦截器 -->
<interceptor-ref name="trimInterceptor" />
<interceptor-ref name="baseStack" />
</interceptor-stack>
</interceptors>
<!-- 配置默认拦截器栈 -->
<default-interceptor-ref name="adminStack" />
<global-results>
<result name="error" type="freemarker">/WEB-INF/template/admin/error.ftl</result>
<result name="success" type="freemarker">/WEB-INF/template/admin/success.ftl</result>
</global-results>
<action name="index">
<result type="redirect">admin!main.action</result>
</action>
</package>
在第二个包里面虽然继承了第一个包,但是在拦截器中还是需要添加第一个包里面的baseStack 拦截器.
更多追问追答
追问
你那个baseStack 不就跟struts2的defaultStack一样的,有什么区别
追答
本来想给你截个图的,但是公司上传不了,
struts 就像我刚才说的,如果你显示的定义了拦截器,并且还需要默认的拦截器,那么就需要显示的吧默认拦截器也加到你刚才显示定义的地方.然后定义成一个拦截器的栈.我的那个是个例子,
有时间可以看看struts权威指南第七章,拦截器的相关知识.
看我下面给你的那个连接吧.说相关内容,你看啦应该就明白了
参考资料: http://wenku.baidu.com/view/a5100076a417866fb84a8e45.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-08-29 广告
2023-08-29 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询