java:关于过滤器和servlet映射的问题

时间:2011-02-17 19:50:13

标签: java web-applications tomcat servlets servlet-filters

我有一个具有以下结构的Web应用程序:

TOMCAT_HOME
  |
   webapps
     |_myapp
          |-html/
          |-various directories
          |-WEB-INF/
          |-index.html

应用程序具有通过各种路径注册的各种servlet 可以通过http://IP:PORT/myapp/来访问应用程序本身 此课程导致获得index.html(在欢迎列表中) 我的问题是,我如何注册过滤器专门访问根目录,但子目录,即url-mapping /* 如果我放置为url-pattern /似乎不起作用。
因此,过滤器只会截取此请求http://IP:PORT/myapp/而不是http://IP:PORT/myapp/pathhttp://IP:PORT/myapp/servlet/path 此外,过滤器将拦截像http://IP:PORT/myapp/index.html这样的请求,它等同于我的目标。

由于

2 个答案:

答案 0 :(得分:2)

为什么不将过滤器设置为/index.html呢?它不会导致您的子目录被过滤。

答案 1 :(得分:1)

你可以轻松地测试/并做你的事情,否则让它通过。使用/*网址格式。

@Override
public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)
    throws IOException,ServletException{

    HttpServletRequest request=(HttpServletRequest)req;
    String path=request.getServletPath();

    if(path.equals("/") || path.equals("/index.html"){
        // do your thing
    }

    chain.doFilter(req,res);
}