gpt4 book ai didi

jsp - webapp 与 WEB-INF 下的 spring mvc 和 jsp 页面位置

转载 作者:行者123 更新时间:2023-12-04 14:02:56 25 4
gpt4 key购买 nike

我对 webapp 与 WEB-INF 下的 spring mvc 和 jsp 页面位置有疑问。

假设我们有以下设置。

webapp
WEB-INF
mvc-dispatcher.xml
web.xml
login.jsp
register.jsp
success.jsp
error.jsp
index.jsp

我可以使用像 http://host.com/app/index.jsp 这样的 url 从浏览器引用页面从那里我可以链接 (a href) 到 register.jsp。我从 register.jsp 发布到 Controller ,它可以返回解析为 success.jspsuccess View (使用 InternalResourceViewResolver ).

如果我将 jsp 页面移动到 WEB-INF 下(而不是之前的 webapp 下),我将无法引用 http://host.com/app/index.jsp从浏览器。此外,目前我从 success.jsp 链接到 index.jsp 使用 href="index.jsp"需要更改以映射到 Controller (可能位于/类似调度程序 servlet)将返回 index 作为 View 名称。所以我所有的链接都需要由 Controller 提供服务。我对吗 ?或者当 jsp 页面位于 WEB-INF 下时(假设已配置 InternalResourceViewResolver),是否有一种方法可以在没有任何映射 Controller 的情况下引用 jsp 页面。

问候,

米顿。

最佳答案

你完全正确。您不能直接从浏览器引用 WEB-INF 中的 JSP。这非常好。你所有的请求都应该通过 Controller 转发给 JSP,你所有的 JSP 都应该在 WEB-INF 下。这样做的原因有很多:

  • 用户无法获得 JSP 的实际来源,这对安全性有积极影响。
  • 许多 JSP 依赖于某些请求属性而存在(模型)。当用户直接从浏览器调用 JSP 时,模型不存在。这可能会破坏一些逻辑。
  • WEB-INF 下的一个 JSP 可以用于服务不同的 URL 而无需任何更改,用户对此一无所知!
  • 这只是一个很好的实践,当你使用 MVC(Model 2,而不是 Model 1)

考虑到您对不带 Controller 直接引用 JSP 的问题:

  • 您可以通过 JSP error pages 将 HTTP 异常/Throwable 直接映射到 JSP .例如,一种简单的技术适用于自定义 404。
  • 当使用 Apache Tiles + Spring 并访问一些 /notmappedurl 时,Spring (Tiles) 将尝试查找 notmappedurl 模板定义。 (根据我使用 Tiles + Spring 的经验)。我认为其他 View 技术也有类似的行为。
  • 编写起来并不难:@RequestMapping("/someurl")void someurl(){}。 Spring 将尝试根据方法名称查找 someurl View 。只是一个 stub 。

关于jsp - webapp 与 WEB-INF 下的 spring mvc 和 jsp 页面位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955438/

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