我正在学习Sturts2。我在Eclipse上运行不同的教程...我注意到一些目录结构将JSP放在Web-inf下的JSP文件夹中,其他目录结构只在Web-inf下面而不是在任何子文件夹中。我已经尝试创建一个JSP文件夹并将我的helloworld JSP移动到JSP文件夹中,只是为了查看它是否在运行时找到,在某些情况下是,其他没有。好奇Tomcat如何知道在哪里找到并运行JSP?是否有一些指向JSP的配置文件?提前谢谢。
答案 0 :(得分:1)
如果您使用的是Struts和Tomcat,那么当时负责的任何组件(Struts或Tomcat)都会决定在哪里查找JSP。最终,每个请求都归结为一个资源,可以在应用程序的URL空间中找到。因此,所有网址都会以/contextPath
开头,之后会有一些其他信息。
通常,页面在代码或配置中被称为相对于应用程序的根。因此,对/app/dir/file.jsp
的请求将导致JSP文件位于/dir/file.jsp
中的任何目录中。是否将文件放入相对于应用程序根目录的/web
或/WEB-INF
中。
Tomcat小心不允许远程客户端请求/WEB-INF
中的文件,因为这会代表安全漏洞,但它确实允许应用程序内的代码转发请求到其中的资源目录。这就是为什么有些应用程序喜欢将所有JSP文件放入/WEB-INF
文件夹中的原因:它确保没有远程客户端直接请求JSP文件,并且可能由于事先未提供某些预期状态而导致服务器出现问题。