【问题标题】:folder structure of jsp's?jsp的文件夹结构?
【发布时间】:2014-01-20 16:33:19
【问题描述】:

我最近开始使用 J2EE 核心从头开始开发自己的项目:Servlets & Jsps

我无法评估我的项目文件夹结构是否正确。这是我的项目文件夹结构。

问题:将我的 jsps 放在 web-inf 之外是不是一个好兆头。如果不是,为什么会这样?如果是,为什么?

对于 J2EE Web 应用程序是否有任何标准的文件夹结构约定,我知道 maven 提出了一些标准,但我们仍然可以根据我认为的要求进行自定义。

在为 J2EE Web 应用程序布置文件夹结构时需要考虑哪些要点,重要的是 Jsps、静态内容应该放在哪里以及为什么?

【问题讨论】:

  • 这通常被认为是不好的做法,因为那样你可能会允许用户直接调用它们(恐怖)。将它们放在WEB-INF/ 下会强制您让Controller 为它们服务。
  • web-inf 目录实际上应该命名为WEB-INF

标签: java jsp maven


【解决方案1】:

我所能做的就是告诉你具体想法的利弊。以下是我100%的意见。我不知道任何具体的要求或规则。我相信有人会不同意我的观点。

JSP 的

让我们来看看是否将 JSP 放在 WEB-INF 中。

将 JSP 放入 WEB-INF 的优点:

  • 您可以控制 JSP 的执行方式。如果你想要一个 JSP 参数化和可重用(无论如何这对于 JSP 来说真的很难), 您可以将它们放入 WEB-INF 并使用 servlet 或 Struts 操作 控制器或其他一些前端控制器进行预处理和 然后将控制权交给JSP,传入正确的环境 上下文(如请求属性、任何安全检查、参数 卫生等)

  • 您可以通过编程方式甚至在防火墙或 IDS 级别阻止
    对 *.jsp 的 HTTP 请求以减少有人上传的可能性 一个 JSP 到 web 根目录,然后能够像 web 一样执行代码 服务器。他们必须重写现有的 JSP。不是很大
    安全增益,但它确实使妥协变得稍微困难​​。

  • 强制实施良好习惯,例如 MVC、前端控制器、servlet 过滤器、
    依赖注入等,而不是一个庞大的 JSP
    自己完成所有工作,难以阅读/维护。

将 JSP 放入 WEB-INF 的缺点:

  • 您不能直接访问该页面,即使它是一个简单的 不需要前期处理的独立页面。这是因为 /WEB-INF 下的文件不能由 servlet 容器提供。

静态文件 就 HTML、图像、样式表、javascript 等纯静态文件而言,将它们放在 web 根目录下(在您的情况下为 my_app),但不要放在 /WEB-INF 下(因为它不可访问)。

整体布局

至于整体目录布局,这在一定程度上取决于您的构建过程。我喜欢将所有内容存储在“src”或“source”下,因为它可以清楚地说明哪些文件是通过构建生成的,哪些是纯源文件。 main 允许您将 junit 类之类的测试代码与主源代码分开,这也很好。但是如果你没有任何单元测试(哦不!),那么这是一个没有意义的区别。

另一方面,如果您在构建期间根本不操作 Web 根目录(例如,如果它是所有 JSP 和静态文件),那么您可能会将其保留在顶层,例如 /webroot 或 /deploy 并复制根据需要添加文件,例如 .class 或 .jar 文件。过度组织是人类(尤其是开发人员)的习惯。过度组织的一个好迹象是有很多文件夹,只有一个子文件夹。

你展示了什么

您已经表明您遵循 maven 设置的约定,因此如果您已经在使用 maven,请坚持使用该布局。您描述的布局绝对没有问题。

【讨论】:

    【解决方案2】:

    如果是WEB-INF

    • 如果您将 JSP 放在 WEB-INF 中,那么您将无法直接访问它们。即通过绝对网址
    • 在外面,WEB-INF你可以直接访问它们

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 2021-11-18
      • 2021-04-11
      • 2015-04-06
      • 2014-02-18
      • 2018-08-14
      • 1970-01-01
      相关资源
      最近更新 更多