java - Servlet 在过滤器中转发给出了意外结果

标签 java servlets

在我的过滤器中,我想过滤从“/a/b/c”到“/index.html”的请求,我使用:

req.getRequestDispatcher("/index.html").include(request, response);

它可以工作,但是将请求转发到index.html后,客户端请求index.html中的js和css路径错误:

例如,它请求 /a/b/c/css/bootstrap.min.css 但应该是 /css/bootstrap.min.css

我想做的只是将/a/b/c的请求转发到index.html,而不改变其他资源的请求路径。有什么想法吗?

谢谢。

最佳答案

使 JSP 中的路径相对于 Web 上下文根,这样它们就不会依赖于当前页面 URL。

<c:set var="context" value="${pageContext.request.contextPath}" />
<script src="${context}/themes/js/jquery.js"></script>

另外,为什么不进行重定向而不是 servlet 过滤器呢?或者可能有多个具有相同 View 的 Controller ?

关于java - Servlet 在过滤器中转发给出了意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22263525/

相关文章:

jsp - 如何在 Servlet 中启用读取非 ascii 字符

java - 在 Java Web 应用程序中加载外部库

java - 将请求从 servlet 重定向到 jsp 时出现 404 错误

java - 无法使用在 WebSphere 上运行的 SpringBoot 应用程序找到 Webjar

java - Selenium:- 无法在文本框中写入

java - 迭代 HIDDEN channel 中的 token

java - 在 PCL 的 Project Tango 中可视化点云

java - Servlet.init() 和 Filter.init() 调用顺序

java - XML 响应时间 ejabberd

jsp - 如何更改 "Tomcat Web Application Manager"管理页面 http ://localhost:8080/manager/html 上的默认 &lt;title&gt;