文档章节

为什么要把静态资源放在WEB-INF下呢?

BK灬
 BK灬
发布于 2015/08/19 09:03
字数 325
阅读 3312
收藏 7

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

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

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

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

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

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

© 著作权归作者所有

共有 人打赏支持
BK灬

BK灬

粉丝 46
博文 343
码字总数 142562
作品 0
朝阳
后端工程师
私信 提问
加载中

评论(7)

陈俊凯
陈俊凯

引用来自“Role”的评论

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

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

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

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

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

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

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

别人是无法修改,但是客户端好像访问到,所以是为了防止客户端访问,才放到WEB-INF下,有的项目安全性比较高!
静态资源注定要被客户端访问的,放到里面以后终究会被Spring映射出去,意义何在呢?
BK灬
BK灬

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

关于第一条,即使不放在WEB-INF下别人也无法修改吧!
别人是无法修改,但是客户端好像访问到,所以是为了防止客户端访问,才放到WEB-INF下,有的项目安全性比较高!
魏晋秋
魏晋秋
关于第一条,即使不放在WEB-INF下别人也无法修改吧!
淘淘商城系列——单点登录之注册页面与登录页面的展示

首先我们把下图所示的单点登录系统所需要的静态资源文件放到taotao-sso-web工程当中。 记得将css、js、images放到webapp目录下,将jsp目录放到WEB-INF目录下,如下图所示。 由于taotao-sso-...

yerenyuan_pku
2017/06/14
0
0
请教一个JFinal配置文件加载的问题

@JFinal 你好,想跟你请教个问题:在JFinal的web应用里,loadPropertyFile和EhCachePlugin 默认都是从web根目录下的WEB-INF里去查找文件的。为什么不实现从classpath里去加载呢?这个在用mav...

Neoman
2014/04/15
5.3K
3
【转】三分钟学会用SpringMVC搭建最小系统

前言 做 Java Web 开发的你,一定听说过SpringMVC的大名,作为现在运用最广泛的Java框架,它到目前为止依然保持着强大的活力和广泛的用户群。 本文介绍如何用eclipse一步一步搭建SpringMVC的...

枫叶摇曳
2017/07/31
233
1
快速学会用SpringMVC搭建最小系统(超详细)

前言 做 Java Web 开发的你,一定听说过SpringMVC的大名,作为现在运用最广泛的Java框架,它到目前为止依然保持着强大的活力和广泛的用户群。 本文介绍如何用eclipse一步一步搭建SpringMVC的...

花的鱼
06/29
0
0
(一)SpringMVC之配置DispatcherServlet的一些坑

DispatcherServlet是SpringMVC的核心控制器,就像是SpringMVC的心脏,几乎所有的请求都会经过这个控制器,通过它,大大的降低了模块之间的耦合度。所有学SpringMVC的同学们第一步肯定都是先配...

Java攻城玩家
06/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

想买的书

Java并发编程之美

miaojiangmin
23分钟前
4
0
Linux(centos7)共享文件

安装samba samba安装 关闭防火墙和selinux firewalld /etc/selinux/config SELINUX=enforcing改为SELINUX=disabled yum install -y samba samba-client systemctl start smb smbpasswd -a 用......

qinjiudong
24分钟前
3
0
SparkLauncher执行spark程序一直阻塞卡在running-undefined的情况处理

使用SparkLauncher提交spark程序时,有时间会一直卡在status是running状态 finalstatus为undefined,这种情况是因为使用的java的ProcessBuilder,查阅了资料后发现可能是因为buffer被填满,导...

那年的暖风
28分钟前
3
0
php中echo(),print(),print_r(),var_dump()与var_export()间的区别

echo()函数:输出一个或多个字符串。 输出所有参数。不会换行。 echo 不是一个函数(它是一个语言结构), 因此你不一定要使用小括号来指明参数,单引号,双引号都可以。 echo (不像其他语言...

hansonwong
29分钟前
1
0
php 生成 桌面快捷链接

<?php $Shortcut = "[InternetShortcut] URL=http://IP地址或网址IDList= [{000214A0-0000-0000-C000-000000000046}] Prop3=19,2 "; Header("Content-type: application......

zxcgzq
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部