Springboot添加静态资源映射addResourceHandlers

本文介绍如何在SpringBoot中配置静态资源,通过addResourceHandlers方法实现资源文件的映射,如文档、webjars和自定义目录的资源加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot使用的时候 需要设置静态资源以及目录 通过addResourceHandlers方法可以实现相关资源文件的配置:

addResourceHandler("/qy/**") 所有/qy/开头的请求 都会去后面配置的路径下查找资源

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    // 添加文档对应的映射
    registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    // 添加对应的映射
    registry.addResourceHandler("/qy/**").addResourceLocations("classpath:/static/qy/");
    super.addResourceHandlers(registry);
}
在Spring Boot中,静态资源映射(Static Resource Handling)是指将Web应用的静态文件(如HTML、CSS、JavaScript等)自动暴露给客户端访问。`addResourceHandlers`方法是在`WebMvcConfigurerAdapter`或者现在更推荐的`WebMvcConfigurer`接口中使用的,用于配置静态资源处理器。 如果你想添加静态资源访问的验证,比如限制某些资源只能在登录后才能访问,可以在`addResourceHandlers`方法内部设置一个拦截器或者过滤器来实现这个功能。这里有一个基本的例子: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 添加默认的静态资源处理 registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/"); registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/"); // 添加一个拦截器,例如JWT验证 registry.addResourceHandler("/protected/**") .addResourceLocations("classpath:/static/protected/") .setCacheControl(CacheControl.maxAge(3600)) .addInterceptor(new AuthenticatedResourceInterceptor(authService)); // authService用于检查用户是否已登录 } private AuthService authService; // 自定义服务,负责用户认证 // 过滤器或拦截器实现,检查用户权限 private class AuthenticatedResourceInterceptor implements HandlerInterceptor { // ... @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 检查请求路径是否需要保护,比如使用JWT token String path = request.getRequestURI(); if (path.startsWith("/protected/")) { String jwtToken = getJwtFromRequest(request); // 获取token if (!authService.validateToken(jwtToken)) { // 如果未验证成功,返回401错误 response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return false; } } return true; } // ... } } ``` 在这个例子中,`/protected/**`路径下的静态资源会经过`AuthenticatedResourceInterceptor`的拦截,只有当用户通过`authService.validateToken()`方法验证通过(即有有效的JWT令牌)时,才会允许访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值