如何在 jsp 中将前端控制器 servlet 映射附加到 url



我在Tomcat中运行了一个简单的Java Web应用程序。

在其中,FrontController.java servlet 具有映射@WebServlet("/controller/*")。因此,为了触发servlet,我需要我的每个url都以/controller/开头。我需要能够在存储在容器外部的页面上显示图像,以便将它们写入OutputStream(。但是,如果我像${pageContext.request.contextPath}images/picture.jpg一样编写我的 src 网址,那么生成的网址显然是localhost:8080/rootFolder/images/picture.jpg的,而不是localhost:8080/rootFolder/controller/images/picture.jpg的。

要加载这些文件,我可以在每次${pageContext.request.contextPath}后手动预置controller/,或者我可以按照此处的建议将 dispather servlet 映射附加到 url 并将行request.setAttribute("frontControllerMapping", "controller/");添加到处理请求的每个方法,然后像这样编码 url${pageContext.request.contextPath}${frontControllerMapping}images/picture.jpg哪个更好。

我的问题是如何将控制器映射附加到必须由 servlet 处理的每个 url 以及如何正确操作?第二种选择是正确的方法吗?

您可以使用相对 URL 来代替为每个资源添加完整的 URL。如果这不是一个选项,那么您可以简单地将所有请求映射到您的 servlet,如下所示:

@WebServlet("/*")

然后,您无需担心将控制器路径添加到所有 URL。

相关内容

  • 没有找到相关文章