蓝易云 - javaee springMVC 的简单使用 jsp 页面在 webapp 和 web-inf 目录下的区别
![蓝易云 - javaee springMVC的简单使用jsp页面在webapp和web-inf目录下的区别](https://static001.geekbang.org/infoq/72/728c6564e3303f65e799c07f7c16cad1.jpeg)
在 Java EE 和 Spring MVC 的开发中,我们经常会遇到 JSP 页面的放置问题。特别是在 webapp 和 WEB-INF 目录下,这两个目录对于 JSP 页面有着不同的处理方式。那么,它们之间到底有什么区别呢?让我们一起来探讨一下。
![](https://static001.geekbang.org/infoq/23/2363af2d834f47878e0091411a698b46.png)
首先,我们需要了解 webapp 和 WEB-INF 这两个目录在 Java Web 应用中扮演着什么角色。
webapp 是一个 Web 应用程序的根目录,在这个文件夹下可以放置 HTML、JSP、CSS、JavaScript 等静态资源文件。当用户请求一个 URL 时,服务器会根据 URL 路径来查找对应的资源文件,并将其返回给用户。
而 WEB-INF 则是 Java Web 应用程序特有的一个安全目录,在该路径下存放了 Web 项目重要配置信息如:web.xml, lib, classes 等,并且该路径下存储内容不可直接被浏览器访问。也就是说如果你把 jsp 页面直接放入此处,则无法通过浏览器直接输入地址进行访问。
那么将 jsp 页面分别置于这两者之间又会产生怎样不同效果呢?
如果你把 jsp 页码直接放入到 webapp(或者说 WebContent)中,则可以通过浏览器输入相对地址进行查看效果;但同时也意味着任何人都能够通过 url 地址来获取或者查看你的 jsp 页面,这在某种程度上是一种安全隐患。
相反,如果你把 jsp 页面放入 WEB-INF 目录下,则这些页面不会被直接访问。只有通过 Servlet 或者 Controller 进行转发或重定向才能访问到。这样做的好处是可以保护我们的 JSP 页面不被直接访问,增加了安全性。
在 Spring MVC 中,我们通常会将 JSP 放置在 WEB-INF 目录下,并通过 Controller 来控制对 JSP 的访问。例如,在 Spring MVC 中我们可以定义一个 Controller 如下:
上述代码定义了一个 URL 映射"/hello"到"hello.jsp"(假设它位于 WEB-INF/views/)。当用户请求"/hello"时,Spring MVC 将找到并渲染位于 WEB-INF/views/hello.jsp 文件,并将其返回给用户。
总结一下,在 Java EE 和 Spring MVC 开发中对于 jsp 文件存放位置需要根据实际需求和考虑安全性来决定。如果需要保护你的 jsp 不被直接查看,则应该选择存入 WEB-INF;反之则可选择 webapp 或 WebContent 等可公开路径。
云服务器推荐
蓝易云国内/海外高防云服务器推荐
蓝易云-五网CN2服务器【点我购买】蓝易云采用KVM高性能架构,稳定可靠,安全无忧!蓝易云服务器真实CN2回国线路,不伪造,只做高质量海外服务器。
海外免备案云服务器链接:www.tsyvps.com
蓝易云香港五网 CN2 GIA/GT 精品网络服务器。拒绝绕路,拒绝不稳定。
评论