Jsp 使用筛选器为特定页面提供服务?

Jsp 使用筛选器为特定页面提供服务?,jsp,servlets,servlet-filters,Jsp,Servlets,Servlet Filters,我正在使用一个类,它为我的jsp内容实现过滤器。看起来是这样的: public class MyFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.getRequestD

我正在使用一个类,它为我的jsp内容实现过滤器。看起来是这样的:

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位于我的顶级目录中。如果我输入如下URL,则过滤器工作正常:

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
我该怎么做


谢谢

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

谢谢你的帮助!我发现我的css文件和其他相关资源无法解析,我必须在mypage.jsp中更新它们的路径,以便在路径之前使用正斜杠,比如csspath=/mypage.css而不是csspath=mypage.css,可以吗?谢谢我很高兴它能起作用,但我不确定这是个好主意。为什么要允许用户输入任何映射到根目录的任意URL?我想支持类似twitter的东西,其中www.mysite/username由一个jsp页面处理,该页面只为用户生成一个页面。我不能为每个用户创建一个真正的文件夹,所以我认为这种类型的“url重写”可以工作吗?谢谢,但是不要用斜杠硬编码——使用方法调用应用斜杠,这样,如果需要,您可以快速重新定位资源。