WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射(servlet-mapping)才能访问。
WEB-INF介绍:https://baike.so.com/doc/1270031-1343005.html
WEB-INF下jsp文件测试:
在$tomcat_home/conf/web.xml中会默认设置(下面的servlet-mapping)jsp的servlet-mapping配置;
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
启动tomcat后会先加载tomcat的web.xml文件,所以当WEB-INF中的文件为jsp后可以使用request.getRequestDispatcher("/WEB- INF/***.jsp").forward(request,response)直接访问,不用在项目web.xml文件中配置。如果是ssm项目,使用springMVC配置静态资源映射和静态资源文件访问这两种方式后删除tomcat的web.xml中jsp的servlet-mapping同样可以访问。如果不配置静态资源映射访问同时删除tomcat的web.xml中jsp(servlet-mapping),在使用request.getRequestDispatcher("/WEB- INF/***.jsp").forward(request,response)就不能访问到jsp页面。
WEB-INF下html测试:
在tomcat下web.xml中jsp的servlet-mapping加入<url-pattern>*.html</url-pattern>,启动tomcat同样会加载到WEB-INF下的html文件,但会出现乱码。同jsp一样,使用springMVC配置静态资源也可以访问到html,但不会乱码。
注意:
项目使用html页面文件后,无论在springMVC中配置静态资源而不在项目的web.xml文件中配置servlet加载html,还是springMVC和web.xml都配置时页面加载css和js方式的方式都一样,最好写为相对路径。
假如SpringMVC中静态资源映射配置为:
<mvc:resources mapping="/statics/**" location="/statics/ cache-period="31536000>
html页面引入css和js的路径就为:
../statics/css/**.css 和 ../statics/js/css
这里的js和css目录是项目webapps/statics/下创建的目录。