Jsp 使用筛选器为特定页面提供服务?
我正在使用一个类,它为我的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
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重写”可以工作吗?谢谢,但是不要用斜杠硬编码——使用方法调用应用斜杠,这样,如果需要,您可以快速重新定位资源。