java web设置资源目录_使用SpringMVC时,web应用的资源路径问题

web应用常见的资源存方式

f15716ef3a4bf881c7a9ebd351222905.png

在WEB-INF下新建lib,存放要使用的jar包

在WEB-INF下新建jsp文件夹,存放jsp文件。首页除外,首页就放到web下。

在web下,或WEB-INF下,新建css、js、image文件夹,存放相关文件。

WEB-INF目录是web应用的安全目录,里面的资源不能被浏览器直接访问。

web下的静态资源(html、css、js、图片等)都不能被浏览器直接访问,

直接放到web下,或者放到WEB-INF下,都是一样的。

web下的动态资源(jsp)可以被浏览器直接访问,比如浏览器直接访问web下的首页index.jsp,这是可以的。

如果把jsp放到WEB-INF下,那jsp受到WEB-INF的保护,浏览器就不能直接访问。

SpringMVC提倡由controller处理请求,调用视图来响应,用户不能直接访问视图,所以把jsp放到WEB-INF下。

总得留个页面作为网站入口吧,入口的index.jsp直接放在web下,用户可以直接访问。

lib的存放

部署项目时,会把jar包拷贝到输出目录的 WEB-INFlib 下。

在WEB-INF下新建文件夹lib,把所需的jar包放到lib下,

部署项目时,会把所有的jar包都拷贝到输出目录的  项目WEB-INFlib 里。

如果我们是在web下新建lib存放jar包,或者在项目下新建lib存放jar包,

部署项目时,会把所有的jar包拷贝到输出目录的  项目WEB-INFlib里,并会把我们新建的lib文件夹拷贝到输出目录的 项目下,这一步就多余了,没必要。

如果部署时,jar包拷贝不全,参考:

静态资源配置

我们在web.xml中使用DispatcherServlet拦截所有请求,所有的请求都转交给controller处理。

就是说,前端页面的要加载图片、

而DispatcherServlet又找不到对应的controller来处理这些请求,即使路径是对的,在浏览器中f12->Network,看到状态码是404、或者400(由于找不到所需的资源而引起的错误)。

我们需要配置一下静态资源,让DispatcherServlet放行某些静态资源的请求。

有3种配置方式。

配置方式一:配置资源映射(最常用)

location是实际地址,mapping是映射地址。一般我们不改路径,只是让DispatcherServlet放行。

是以文件夹为单位配置的,最小单位只能是文件夹,不能是文件。

可以写上**表示该文件夹下的所有东西,也可以缺省**。

这种方式可以放行对静态资源的请求、对WEB-INF下资源的请求、对动态资源(jsp)的请求。

配置方式二:配置默认的ServletHandler

配置web服务器默认的ServletHandler,DIspatcher拦截到静态资源后,找不到对应的controller来处理,会交给web服务器默认的ServletHandler来处理。

默认的ServletHandler会调用web服务器的默认Serlvet来处理,web服务器的默认Servlet的处理方式都是直接放行(返回该资源作为响应)。

但不同的web服务器,默认Servlet的name是不同的:

Tomcat、Jetty、Jboss、GlassFish的默认Servlet的name是default

Resin的是resin-file

WebLogic的是FileServlet

WebSphere的是SimpleFileServlet

更换web服务器时,需要修改default-servlt-name,配置简单但项目移植性差。

配置方式三:在web.xml中配置默认Servlet的映射

default

*.js

default

*.css

default

*.jpg

使用多个,不能一个里配置多个,也不能在一个里配置多个规则。

麻烦且移植性差。

方式一、三更灵活,可以指定要加载的静态资源,方式二是加载项目中所有的静态资源。

方式二、三响应静态资源更快,因为web服务器启动时就会创建默认Servlet的实例,就会加载静态资源,静态资源一直在内存中,响应快、但吃服务器内存。

方式一是请求这个静态资源时才加载,用完就释放,速度慢、但内存占用少。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值