不雅观点一:(较为赞许)

安全性不是真正的缘故原由,由于jsp是要解析后才显示到浏览器的,即利用户知道你jsp的路径,也不可能通过浏览器看到jsp源码的,而如果是通过其它手段入侵做事器的话,放在WEB-INF又和放在别的地方有什么差异呢???

真正的缘故原由是,对付早期直接嵌入java代码的jsp,是直接给出jsp路径给用户访问的,这种情形正好不能放在WEB-INF,而到了现在的mvc模 式,jsp已经不是曾经那个包含完全逻辑的jsp,而仅仅充当view层的模板,必须要填入model数据后进行渲染,才能天生可读的页面,这样的模板是 不能让用户直接访问的,直接访问的话要么是一堆各种空缺,或者一堆占位符,乃至一堆NullPointException,以是须要放到WEB-INF 里。
补充一下,“安全性问题”指的是“不许可你访问,否则会对我不好”,而这里的情形实在是“不建议你访问,否则会对你不好”,该当属于健壮性的范畴。

jsp获取项目路径jsp文件放在WebRoot下照样WebInfo下 AJAX

不雅观点二:

放到WEB-INF下的Jsp文件,如果你直接去访问这个Jsp是不可以的,必须通过Action的跳转,这样就能够理解为什么安全性高了,对 于用户是不可见的,对付一些对付用户,可以直接访问的,如,登录,注书页面,可以直接放在webroot下,这个也是根据你系统的需求了。

不雅观点三:

通过设置过滤器,放在webroot下面的文件也可以实现不能直接访问。
以是说放在哪里就看习气是什么样了。

一样平常项目都是哀求隐蔽性的,只让客户通过要求访问而不是直接访问jsp页面。
若放在webroot下面,肯定要加一个过滤器阻挡所有对.jsp的访问。
只要比较的话:

放在webroot下面:优点,程序构造清晰,便于编码和掩护;缺陷,要加过滤器。

放在web-inf下面:优点,不用过滤器;缺陷,打乱了程序构造,编码和掩护麻烦

不雅观点四:

为了减少风险,可以把这些页面文件移到WEB-INF

目录下。
基于Servlet的声明,WEB-INF不作为Web运用的公共文档树的一部分。
因此,WEB-INF 目录下的资源不是为客户直接手事的。
我们仍旧可以利用WEB-INF目录下的JSP页面来供应视图给客户,客户却不能直接要求访问JSP。
JSP存放在 WEB-INF 目录下更为安全。