就是我如何配置才能使得struts2中默认的拦截器不执行 获取说有些不执行 有一部分执行?
你的意思是说有些action不拦截,有些action拦截对吗?如果是这样的话,你可以获取每个请求的action名字,根据action名字进行拦截和放行######回复 @Coffee_M : 这个我知道,我如果就想default-stack中有一部分拦截器执行呢 这个好像不好配 呵呵######回复 @Friends8811 : 可以再struts配置文件里配置属于你的拦截器,非缺省的拦截器######你有好的方法吗???######就是说struts2中不是有一个默认的拦截器栈,默认的拦截器栈中有很多的拦截器,默认的情况下 不是都得执行吗,现在我想有些用不到的就不执行了,这个可以在struts2的配置文件中直接配置吗?或者其他的方式?######struts.action.excludePattern######回复 @Friends8811 : 在Struts2中有个属性叫excludePattern,也就是用来配置Struts2不处理的路径######呵呵 能不能说详细一点啊?######struts2的默认拦截器是defaultStack,如果想跳过这个的话lz可以自定义一个拦截器栈,不包含这个默认拦截器,并设置<default-interceptor-ref name="那个自定义拦截器栈"/>。。就可以了。。。######好吧,谢谢啊,呵呵######回复 @Friends8811 : 比较奇怪。。我没尝试过。。你要么重写部分方法,然后将默认拦截器指向你重写后的拦截器######那如果我想 执行defaultStack中部分的拦截器呢,(有一部分不执行),这种情况 应该怎样处理啊?在配置文件中可以配置吗?######但是。。不包含默认拦截器的话,会接收不到传递过来的值的。。。好奇楼主是为了什么######你可以写一个拦截器继承 struts的拦截器,在doFilter方法中 根据RequestURI进行拦截和放行,web.xml 就配置这个拦截器做struts的拦截器
public class YourStrutsFilter extends StrutsPrepareAndExecuteFilter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String url = request.getRequestURI();
if (url.contains("XXXXXX")) {
// 使用自定义过滤器
chain.doFilter(req, res);
} else {
// 使用默认过滤器
super.doFilter(req, res, chain);
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。