我有一个具有以下结构的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/path
或http://IP:PORT/myapp/servlet/path
此外,过滤器将拦截像http://IP:PORT/myapp/index.html
这样的请求,它等同于我的目标。
由于
答案 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);
}