一、问题复现
启动springboot项目后,登录进首页时,始终加载不出CSS样式
所有的文件都是200的状态码,并且在源码中的head标签中,css样式也加载进去了,但页面并没有显示CSS样式。
二、原因分析
发送的请求为:http://localhost:8080/1001/nihao
后台接收处理该请求的方法为:
@Controller
public class IndexController {
@GetMapping("/{id}/{name}")
public String test(@PathVariable String id,@PathVariable String name){
return "index";
}
}
按道理来说,当发送请求到达后台时,该方法会跳转到首页,并也会应用CSS样式,实际上也确实跳转到首页,但样式却并没有应用。
仔细分析后发现,
实际上,网页上显示的所有文件都是要发送请求并从后台中获取到的,而获取CSS样式发送的请求为:http://localhost:8080/css/me.css
好巧不巧,该样式也会被后台的test方法拦截下,并将css解析用id变量接收,me.css解析被name变量接收,并再次跳转到了首页。也就是说,网页要应用样式,就必须从后台请求获取样式,而获取样式的请求被拦截下来了,并将其跳转到了首页。导致了样式表没有请求成功。
三、解决方案
知道了原因再去解决其实就很简单了。直接一波,将后台处理请求的方法路径改一下,别用用那种获取网页文件的请求被拦截的处理路径就行。
@Controller
@RequestMapping("/test")
public class IndexController {
@GetMapping("/{id}/{name}")
public String test(@PathVariable String id,@PathVariable String name){
return "index";
}
}