在学习springboot中配置错误页中出错,所以特地进行记录。
这个是实现了ErrorPageRegistrar 的全局类
@Configuration
public class ErrorPageConfig implements ErrorPageRegistrar{
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
ErrorPage error400Page=new ErrorPage(HttpStatus.BAD_REQUEST,"/error/400");
ErrorPage errot404Page=new ErrorPage(HttpStatus.NOT_FOUND,"/error/404");
ErrorPage error500Page=new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR,"/error/500");
registry.addErrorPages(error400Page,errot404Page,error500Page);
}
}
错误页面跳转
@Controller
@RequestMapping("/error")
public class ErrorController {
/**
* 400页面
*/
@GetMapping("/400")
public String error_400() {
return "../static/error-400";
}
/**
* 404页面
*/
@GetMapping("/404")
public String error_404() {
System.out.println("4040404");
return "../static/error-404";
}
/**
* 500页面
*/
@GetMapping("/500")
public String error_500() {
return "../static/error-500";
}
}
这是我的项目结构静态资源可以访问
最后是因为在static 下controller访问需要
return "../static/error-404";
在springboot项目中默认访问路径是static文件夹和template文件夹,static文件夹下的资源可以通过浏览器直接访问(如:localhost:8080/index.html,如有文件夹输入正确路径即可 如:localhost:8080/image/abc.jpg),而template文件夹下的页面需要在controller中跳转进行访问。在controller中如果直接return页面的名称那么默认从template文件夹中去寻找对应的页面,例如:
@GetMapping("/login")
public String login() {
return "/login";
}
这样的情况会默认去template文件夹下寻找login.html去跳转,那么如果html文件在static文件夹下就需要这么写来进行跳转:
@GetMapping("/login")
public String toIndex() {
return "../static/login.html";
}
而在页面中引用样式或图片等静态资源时,默认去static中寻找,所以我们的路径只需写在static文件夹下的正确路径即可。如以下几种方式:
<img alt="cosplay" src="/image/cosplay.jpg" width="400px" height="600px" >
<link rel="stylesheet" href="/css/font.css">
<link rel="stylesheet" href="/css/xadmin.css">
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script src="/lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="/js/xadmin.js"></script>