考虑到访问安全,我把css/js/html/jsp文件都放到了WEB-INF下,结果导致不能访问静态文件。

考虑到访问安全,我把css/js/html/jsp文件都放到了WEB-INF下,结果导致不能访问静态文件。这种问题该如何解决呢?各位是否有比较好的方案,分享一下。

3个回答

首先,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

WEB-INF下面的文件,直接访问或者redirect是无法直接访问的。
一般情况下,css、js等常用静态资源放在webapp下面。如果真的需要对这些静态资源也做安全控制,那么可以通过统一的拦截器拦截静态资源,当有请求过来时,forward至静态源。

2楼正解
写个SERVLET专门处理这种请求
forward之前,在URI前面加上WEB-INF就行了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐