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

时间:2017-08-10 15:59:19

标签: java jsp tomcat servlets front-controller

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

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

要加载这些文件,我可以在每次controller/之后手动添加前${pageContext.request.contextPath},或者我可以按照append dispathcer servlet mapping to url中的建议添加request.setAttribute("frontControllerMapping", "controller/");处理请求的方法,然后像这样的${pageContext.request.contextPath}${frontControllerMapping}images/picture.jpg代码网址更好。

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

1 个答案:

答案 0 :(得分:0)

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

@WebServlet("/*")

然后,您不必担心将控制器路径添加到所有网址。