通常的回答是“正确的方法是什么?” 或“这是正确的方法吗?” 是..... 这取决于。
我所能做的就是告诉您特定想法的利弊。接下来是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,请坚持使用该布局。您描述的布局绝对没有错。