xiaoxing598
TerrenceTian
2013-06-29 20:14
采纳率: 50%
浏览 272
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • j_clxy
    clxy大叔 2013-06-30 11:06
    已采纳

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

    点赞 评论
  • Dead_Knight
    Dead_Knight 2013-06-30 11:07

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

    点赞 评论
  • hot002
    hot002 2013-06-30 12:46

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

    点赞 评论

相关推荐