在Spring Boot中,@GetMapping
注解用于映射HTTP GET请求到特定的处理方法。如果你想要排除路径变量中的HTML文件,可以通过配置Spring MVC的HandlerInterceptor
或者使用@RequestMapping
的excludePathPatterns
属性来实现。
{variableName}
的形式来表示,这些变量可以在控制器方法中作为参数获取。WebMvcConfigurer
接口并重写addInterceptors
方法来注册全局的拦截器。@ControllerAdvice
和@ExceptionHandler
注解来实现局部拦截。当你想要阻止某些特定的URL模式(例如包含HTML文件的路径)被@GetMapping
处理时,可以使用上述方法。
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class HtmlFileInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String uri = request.getRequestURI();
if (uri.endsWith(".html")) {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "HTML files are not allowed.");
return false;
}
return true;
}
}
然后在配置类中注册这个拦截器:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private HtmlFileInterceptor htmlFileInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(htmlFileInterceptor);
}
}
如果你使用的是Spring Boot 2.6及以上版本,可以在@RequestMapping
注解中使用excludePathPatterns
属性来排除特定的路径模式:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(excludePathPatterns = "*.html")
public class MyController {
@GetMapping("/api/data")
public String getData() {
return "Data from API";
}
}
通过上述方法,你可以有效地排除路径变量中的HTML文件,确保它们不会被@GetMapping
注解处理。
领取专属 10元无门槛券
手把手带您无忧上云