问题描述
考虑到访问安全,我把css/js/html/jsp文件都放到了WEB-INF下,结果导致不能访问静态文件。这种问题该如何解决呢?各位是否有比较好的方案,分享一下。
解决方案
首先,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
解决方案二:
2楼正解写个SERVLET专门处理这种请求forward之前,在URI前面加上WEB-INF就行了
解决方案三:
WEB-INF下面的文件,直接访问或者redirect是无法直接访问的。一般情况下,css、js等常用静态资源放在webapp下面。如果真的需要对这些静态资源也做安全控制,那么可以通过统一的拦截器拦截静态资源,当有请求过来时,forward至静态源。
时间: 2024-10-27 10:26:25