gpt4 book ai didi

java - GuiceConfig 和 JSP_TEMPLATES_BASE_PATH

转载 作者:太空宇宙 更新时间:2023-11-04 15:18:56 24 4
gpt4 key购买 nike

我有一个 GuiceConfig:

public class GuiceConfig extends GuiceServletContextListener

...使用 configureServlets() 方法执行以下操作:

params.put(ServletContainer.FEATURE_FILTER_FORWARD_ON_404, "true");
params.put(ServletContainer.JSP_TEMPLATES_BASE_PATH, "/WEB-INF/jsp");

serve("/*").with(GuiceContainer.class, params);

此类使用 @Path("/admin/index") 将请求提供给资源,它只返回一个可查看的 JSP 资源:

return new Viewable( "/admin/index" ) ;

当我运行此源并访问本地 URL localhost:8046/admin/index 时,我成功检索了所需的 JSP 资源。

但是,我不想服务("/*").with(GuiceContainer.class)。这样做会干扰我的服务器上运行的其他模块。我只想处理以/rest 开头的请求。如果我将上面的源码修改为以下内容:

params.put(ServletContainer.FEATURE_FILTER_FORWARD_ON_404, "true");
params.put(ServletContainer.JSP_TEMPLATES_BASE_PATH, "/WEB-INF/jsp");

serve("/rest/*").with(GuiceContainer.class, params);

我现在可以成功访问本地 URL localhost:8046/rest/admin/index.html。然而,虽然该页面成功返回,但 JSP 无法正确显示。控制台日志表明 JSP 资源 new Viewable("/admin/index") 已正确解析...但页面的输出如下:

Error 404 /WEB-INF/jsp/admin/index.jsp

我一直在挖掘,但无法找到解释此问题的答案。任何帮助将不胜感激。

最佳答案

根据 servlet 规范,正常请求无法访问整个 /WEB-INF/ 树。

但是,它可以通过各种调度技术在内部引用。

错误 404/WEB-INF/jsp/admin/index.jsp 似乎表明某些东西试图直接引用该路径。

如果您点击 http://localhost/admin/indexhttp://localhost/admin/index.jsp 会发生什么?

关于java - GuiceConfig 和 JSP_TEMPLATES_BASE_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20624416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com