为什么要把静态资源放在WEB-INF下呢?
为什么要把静态资源放在WEB-INF下呢?
低调的AckMan 发表于2年前
为什么要把静态资源放在WEB-INF下呢?
  • 发表于 2年前
  • 阅读 2679
  • 收藏 6
  • 点赞 1
  • 评论 7

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 小小问题,一天一道,自然以后都不会是事!

    以前我在第一家公司的时候,就遇到过这个问题,小弟把js文件放入到了WEB-INF下面,让Leader臭骂了一顿,还没毕业的我,顿时忍不了了,内心只能默默的流着泪,说着:"不好意思,我错了!".然后原因我也没搞清楚,Leader只是说不能放,放了就加载不了了.所以小弟只好照做,没问原因,只知道WEB-INF只能放静态资源,js文件不能放.

    今天在群里,我又看见有人在问这个问题,所以我决定小小地总结一下,为程序员的我们,做出一点点贡献.(大神请绕道)

  1. 安全:静态资源放在WEB-INF,客户端访问不到,服务端才可以访问到,也就是说别人不能够串改你的代码。

  2. 为了方便让Spring帮你映射:就是配置文件上会带有对静态资源的配置信息

  3. 如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

总结:其实就是一句话:"安全"。

共有 人打赏支持
低调的AckMan
粉丝 44
博文 317
码字总数 134757
评论 (7)
魏晋秋
关于第一条,即使不放在WEB-INF下别人也无法修改吧!
低调的AckMan

引用来自“魏晋秋”的评论

关于第一条,即使不放在WEB-INF下别人也无法修改吧!
别人是无法修改,但是客户端好像访问到,所以是为了防止客户端访问,才放到WEB-INF下,有的项目安全性比较高!
echo1937

引用来自“魏晋秋”的评论

关于第一条,即使不放在WEB-INF下别人也无法修改吧!

引用来自“低调的AckMan”的评论

别人是无法修改,但是客户端好像访问到,所以是为了防止客户端访问,才放到WEB-INF下,有的项目安全性比较高!
静态资源注定要被客户端访问的,放到里面以后终究会被Spring映射出去,意义何在呢?
echo1937
我的意思是:
静态资源在绝大多数应用场景下都是直接让客户端访问 web 服务器获取的,并不是通过你的应用程序代码来调用。

即便你不想css、js 这类静态资源被客户端直接访问,但最终客户端还是得到了这些静态资源,所以没啥意义

将页面的模板文件、配置文件放在 WEB-INF 之下才是有意义的
低调的AckMan

引用来自“echo1937”的评论

我的意思是:
静态资源在绝大多数应用场景下都是直接让客户端访问 web 服务器获取的,并不是通过你的应用程序代码来调用。

即便你不想css、js 这类静态资源被客户端直接访问,但最终客户端还是得到了这些静态资源,所以没啥意义

将页面的模板文件、配置文件放在 WEB-INF 之下才是有意义的
一般的可以把所有的页面展示的jsp,js,css,图片都放到WebRoot下面,也可以都放到WEB-INF下面,这个没有定论
放到WEB-INF下面的,也都是通过servlet去跳转的页面,都可以访问
一般的正式系统,是没有index.jsp这样的页面的,首页都是通过action去跳转请求出来的

一些比较隐私的,不愿被所有人看到的页面,可以放到WEB-INF下面,由action去控制查看权限等
实际中,放到WebRoot 下面和 WEB-INF 下面都可以的,WebRoot 下面多一点

这是我看到网上说的比较中肯的
:smirk:
Role
css、js、image等静态文件放到web-inf目录下是因为界面统一由美工设计好,如果你uI放到web-info目录下,静态文件又放到webapp目录下,这样又得修改UI已经引用好的静态文件等链接,比较烦些,所以统一放到一个目录下可以减少了些没必要的工作,界面一来,我就套就成了。
陈俊凯

引用来自“Role”的评论

css、js、image等静态文件放到web-inf目录下是因为界面统一由美工设计好,如果你uI放到web-info目录下,静态文件又放到webapp目录下,这样又得修改UI已经引用好的静态文件等链接,比较烦些,所以统一放到一个目录下可以减少了些没必要的工作,界面一来,我就套就成了。
正解
×
低调的AckMan
谢谢观众老爷们的赏赐,小弟我会再接再厉的!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: