考虑到访问安全,我把css/js/html/jsp文件都放到了WEB-INF下,结果导致不能访问静态文件。这种问题该如何解决呢?各位是否有比较好的方案,分享一下。
首先,css/js/html没有必要放在WEB-INF下。
最终这些会被原封不动的展现在客户端,所以访问安全根本就不会成为问题。
jsp放在web-inf下,原因主要有两个
远古时代的模式会把业务逻辑,数据库连接等敏感信息写在jsp里面,被用户直接访问会有安全问题。
现代模式里这个不再成为问题,不应该成为问题。
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
WEB-INF下面的文件,直接访问或者redirect是无法直接访问的。
一般情况下,css、js等常用静态资源放在webapp下面。如果真的需要对这些静态资源也做安全控制,那么可以通过统一的拦截器拦截静态资源,当有请求过来时,forward至静态源。
2楼正解
写个SERVLET专门处理这种请求
forward之前,在URI前面加上WEB-INF就行了