Lxxxxxxy_
Lxxxxxxy_
Published on 2019-10-21 / 43 Visits
0

SpringBoot-MyBatis-Thymeleaf

全局路径映射

必须设置全局路径映射,否则不能访问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的属性有:

QQ截图20190814164319

可以在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";
    }

Shiro

Redis缓存