A. javaweb项目如何访问静态资源
1 在spring框架下,如果让mvc拦截所有路径,需要配置静态资源路径:
<mvc:resourceslocation="/image"mapping="image/**"/>
<mvc:resourceslocation="/css"mapping="css/**"/>
现在一般都使用rest风格接口, 即mvc拦截/rest/**请求, 所以只要把静态文件放在其他路径就可以了
2 原生servlet,struct2 直接访问即可
B. web应用中的动态资源和静态资源分别指什么
直接把相应文件发送到客户端的文件都是静态资源。
如果不同的用户可以得到不同的回答,是动态资源,一般是指数据库资源。
C. 开发web应用程序时,静态文件一般存放在什么位置
一般大系统部署,会用Apache或EngineX作为前置Web服务器,也就是这样的模型:
互联网接入路由----硬件负载均衡----前置Web服务器----中间件----数据库J2EE中间件在处理纯文件访问的能力其实远低于Apache,所以一般将所有不需要权限保护的静态资源:图片、视频、音频、JS脚本、CSS样式文件、HTML静态文件(一般是静态化后的网页),全部都放在“前置Web服务器上”
有条件的话可以考虑使用单独的域名和服务器,或者使用云存储。可以减轻主web服务器的负担,同时提高网页加载速度
D. web静态资源在什么时候被调用
1应用程序实现的动态页面缓存应用程序把动态文件生成的html文件缓存到文件服务器,以后用户请求动态文件,直接从文件服务器加载对应的静态缓存的html文件返回给用户,这里面主要节省了动态语言的执行时间和数据库访问时间。但是会增加了缓存框架的加载和缓存查找的时间。2把解释执行的开发语言编译成为目标代码这个主要把解释执行的高级语言,例如java,php直接编译成为平台相关的目标代码,汇编代码。在java里面,比较着名的就是即时编译器(JIT),其他的语言也要类似的机制。这里面主要节省了就是解释执行代码的时间。这个会增加即时编译的时间。3利用反向代理服务器的缓存利用类似nginx的反向代理服务器,对请求的url对应的输出的进行缓存。这个缓存和应用程序实现的动态页面缓存类似,只不过用反向代理充当了应用程序的缓存实现。主要节省了动态余元执行时间和数据库访问时间。4客户端浏览器缓存客户端浏览器缓存主要是通过在http头部增加Last-Modified,If-Modified-Since,Expires,Cache-Control等标识,和服务器进行协商,是否是采用客户的本机缓存来实现。其中这里面也会分为三种方式1通过Last-Modified,If-Modified-Since方式和服务器通信,客户发出http请求中包含If-Modified-Since,如果服务器端代码没有修改,服务器端返回302响应代码的请求响应头(内容不返回)客户端则直接用本机缓存的内容缓存显示结果。相当于节省了服务器执行代码时间以及数据传输时间。2通过Expires,Cache-Control控制,客户端发现如果上次请求的页面还未过期,通过Expires或者Cache-Control进行辨别,则直接显示本机缓存的内容,不与服务器进行通信。总结一下:1一般的高并发的应用程序,都在web层采用了以上几种缓存,一般静态资源(图片,js,css)都会采用nginx反向代理+客户端缓存来实现。2对于门户网站,尤其是首页的新闻,一般都会缓存起来,可以通过反向代理也可以通过应用程序缓存实现方式3对于下载或者视频网站,由于数据传输比较大,直接采用浏览器本地缓存实现。
E. web工程下WebInfo下的jsp调用WebContent下的静态资源,比如js文件路径应该怎么写
<script src="/项目名/js/js文件名.js"></script>
F. java web项目中有很多的图片,如何存放
一般有两种情况,
一种是前端开发需要显示的图片,这个是页面构成必须的元素,一般这些会做 动静分离,后台接口 跟 前端资源会部署在不同的服务器上,有不同的优化,一般会有转发的服务器,判断是后台接口,就转发到后台的服务器,如果是前端资源,就转发到前台的服务器。一般情况下,前端服务器,跟后台的服务器,是分离开的,有不同的人去管理,如果项目小的话,可能就全放在一个。这个优化的化,你可以去了解下 CDN原理。这个是用来优化静态资源加载情况的。
另一种情况是,显示的图片,不是前端构成的,是用户上传文件产生的,这种情况下,现在一般有专门的对象存储,用过 七牛云,跟阿里的。这个的逻辑是文件上传的时候,不是上传到我们自己的服务器,上传到专门的云服务器,我们自己数据库只需要保存这些上传文件的地址,真正使用的时候,把连接给前端,前端自动会根据内容到专门的云服务器上去获取。所有的安全,优化,带宽,缓存命中,这些都有由云服务器去保证。 简单来说,只有有钱,这些东西根本不会成为你项目的瓶颈。
作为技术,我们讨论的应该不是这些。图片会做备份,这个可以有专门的磁盘阵列去实现,简单来说,就是上传的内容保存到磁盘的时候,会自动多保存几个备份到不同的磁盘上。还是那句话,多去了解下CDN的原理,最后这段,个人理解,不一定对。