原因
首先,css/js/html沒有必要放在WEB-INF下。
最終這些會被原封不動的展現在客戶端,所以訪問安全根本就不會成爲問題。
jsp放在web-inf下,原因主要有兩個
1. 遠古時代的模式會把業務邏輯,數據庫連接等敏感信息寫在jsp裏面,被用戶直接訪問會有安全問題。
現代模式裏這個不再成爲問題,不應該成爲問題。
2. jsp是在服務器端運行的,而且通常都需要其他程序支持——比如後臺處理好數據再讓jsp渲染等,用戶直接訪問一則沒有意義,二則會拋異常,這些都浪費服務器資源。
其次,如果你一定要放在web-inf下。
需要弄個servlet來forward,或者讀取文件後寫在response上。
如果是spring,可以參考
http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html
中的 17.15.6 Configuring Serving of Resources
附代碼
<mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>
<mvc:resources location="/WEB-INF/img/" mapping="/img/**"/>
<mvc:resources location="/WEB-INF/css/" mapping="/css/**"/>
坑
在web.xml中配置靜態資源是不管作用的。
<servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.js</url-pattern>
</servlet-mapping>