我有一个在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以及如何正确处理?第二种选择是正确的方法吗?
答案 0 :(得分:0)
您可以使用相对网址,而不是为每个资源添加完整的网址。如果这不是一个选项,那么你可以简单地将所有请求映射到你的servlet:
@WebServlet("/*")
然后,您不必担心将控制器路径添加到所有网址。