springmvc静态文件的加载方式

1.
<mvc:default-servlet-handler />
在springMVC-servlet.xml中配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。
一般Web应用服务器默认的Servlet名称是”default”,因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web应用服务器的默认Servlet名称不是”default”,则需要通过default-servlet-name属性显示指定:

<mvc:default-servlet-handler default-servlet-name="所使用的Web服务器默认使用的Servlet名称" />

2.

<mvc:resources location="/,classpath:/META-INF/publicResources/" mapping="/resources/**"/>

以上配置将Web根路径”/”及类路径下 /META-INF/publicResources/ 的目录映射为/resources路径。假设Web根路径下拥有images、js这两个资源目录,在images下面有bg.gif图片,在js下面有test.js文件,则可以通过 /resources/images/bg.gif 和 /resources/js/test.js 访问这二个静态资源。

3.直接用容器的DefaultServlet来处理静态资源请求 ,性能会好很多
比如将静态文件都放在了resource目录下,在web.xml中进行配置

<servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>/resource/*</url-pattern>  
    </servlet-mapping>  

并将它放在所有Servlet的最前面(为了让它最先匹配),这样的话性能上应该比较好

<servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>*.html</url-pattern>  
    </servlet-mapping>  
### 配置Spring MVC加载外部静态资源 为了在Spring MVC项目中正确配置并加载外部静态资源,可以通过实现`WebMvcConfigurer`接口,并重写其中的`addResourceHandlers`方法来完成这一目标[^1]。 当实现了`WebMvcConfigurer`接口之后,在配置类上需标注`@Configuration`注解以便让Spring容器识别这是一个配置类。下面是一个具体的例子展示如何操作: ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { String externalPath = "file:/path/to/your/static/resources/"; registry.addResourceHandler("/static/**") .addResourceLocations(externalPath); } } ``` 上述代码片段展示了怎样通过`addResourceHandler`指定了URL路径模式为`/static/**`,意味着任何匹配此模式下的请求都将被映射到指定位置去查找实际文件;而`addResourceLocations`则用于设定这些静态资源的实际物理地址,这里设为了一个绝对路径指向外部磁盘上的某个目录。 对于使用Spring Boot创建的应用程序来说,除了这种方式外还可以利用application.properties或application.yml文件来进行更简便快速地设置。例如可以在properties文件里加入如下属性: ```properties spring.resources.static-locations=file:/path/to/your/static/resources/ ``` 这同样达到了将特定前缀开头的HTTP请求转发给相应外部文件夹的效果,而且无需编写额外Java代码即可生效[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值