使用过滤器来提供特定页面?

时间:2010-05-23 20:39:22

标签: jsp servlets servlet-filters

我正在使用一个为我的jsp实现Filter的类。它看起来像这样:

public class MyFilter implements Filter 
{
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
        throws IOException, ServletException 
    {
        request.getRequestDispatcher("mypage.jsp").forward(request, response); 
    }
}

所以目标“mypage.jsp”就位于我的顶级目录中。如果我输入的网址如下,过滤器工作正常:

http://www.mysite.com/foo
http://www.mysite.com/boo

但是如果我输入一个斜杠,我会得到一个404:

http://www.mysite.com/foo/
http://www.mysite.com/boo/

HTTP ERROR: 404
/foo/mypage.jsp

RequestURI=/foo/mypage.jsp

似乎我输入了斜杠,然后过滤器认为我希望它在子文件夹foo或boo中查找mypage.jsp,但我真的总是希望它只是在以下位置找到它:

http://www.mysite.com/mypage.jsp

我该怎么做?

谢谢

1 个答案:

答案 0 :(得分:0)

使请求调度程序路径绝对 - 使用“/mypage.jsp”而不是“mypage.jsp”。然后从webapp上下文的根目录解析资源。