全局路径映射
必须设置全局路径映射,否则不能访问thymeleaf的模板页面。
@Controller
public class MappingController {
@RequestMapping(value = "/{path}")
public String forward(@PathVariable String path){
return path;
}
}
设置默认首页
设置默认首页为list.html。
@RequestMapping(value = "/")
public String toList(){
return "list";
}
部署在Docker
编写一个Dockerfile文件,在里面加入:
FROM java:8
VOLUME /tmp
ADD SpringBoot项目名.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
然后运行命令:
docker build -t 在Docker中的镜像名 .
运行镜像,注意,如果连接了数据库的话,必须加上--link mysql的容器名:db:
docker run -d -p 8081:8081 --name springbootrestfulcrudshiro --link mysql:db springbootrestfulcrudshiro
配置错误代码页面
方法1:
@Configuration
public class ErrorPageConfig {
@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {
return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
@Override
public void customize(ConfigurableWebServerFactory factory) {
ErrorPage errorPage = new ErrorPage(org.thymeleaf.exceptions.TemplateInputException.class,
"/error/errorPage");
factory.addErrorPages(errorPage);
}
};
}
}
在mappingController中加入:
@RequestMapping(value = "/errorPage")
public String errorPageMapping(HttpServletRequest request) {
// Integer errorCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
// System.out.println(errorCode);
// model.put("errorCode",errorCode);
return "error/errorPage";
}
可以将org.thymeleaf.exceptions.TemplateInputException.class修改为HttpStatus枚举的状态码。
方法2:
@Component
public class errorViewResolver implements ErrorViewResolver {
@Override
public ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) {
return new ModelAndView("/error/errorPage",model);
}
}
其中model的属性有:
可以在Thymeleaf页面中取出。
<h1 th:text="'错误代码:'+${status}"></h1>
<h1 th:text="'错误信息:'+${error}"></h1>
<h1 th:text="'发生错误时间:'+${#dates.format(timestamp)}"></h1>
相应的,在mappingController中删除(如果有):
@RequestMapping(value = "/error/errorPage")
public String errorPageMapping(HttpServletRequest request) {
// Integer errorCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
// System.out.println(errorCode);
// model.put("errorCode",errorCode);
return "error/errorPage";
}