• 博客开发:框架搭建


    博客开发:框架搭建

    一.使用idea快速搭建框架

     导入mybatis-plus依赖

     <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.0.5</version>
     </dependency>

    二.配置配置文件

    配置yml文件

    application.yml

    spring:
      thymeleaf:
        mode: HTML
      profiles:
        active: pro
    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

    application-dev.yml

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/myblog?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
        username: root
        password: 13476110270dwx
    logging:
      level:
        root: info
        com.myblog.demo: debug
      file:
        name: log/blog-dev.log

    application-pro.yml

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/myblog?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
        username: root
        password: 13476110270dwx
    
    logging:
      level:
        root: warn
        com.myblog.demo: info
      file:
        name: log/blog-pro.log

    并在resources文件夹下添加logback-spring.xml文件对日志进行配置

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration>
        <!--包含Spring boot对logback日志的默认配置-->
        <include resource="org/springframework/boot/logging/logback/defaults.xml" />
        <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    
        <!--重写了Spring Boot框架 org/springframework/boot/logging/logback/file-appender.xml 配置-->
        <appender name="TIME_FILE"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
            <file>${LOG_FILE}</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
                <!--保留历史日志一个月的时间-->
                <maxHistory>30</maxHistory>
                <!--
                Spring Boot默认情况下,日志文件10M时,会切分日志文件,这样设置日志文件会在100M时切分日志
                -->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>10MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
    
            </rollingPolicy>
        </appender>
    
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="TIME_FILE" />
        </root>
    
    </configuration>
            <!--
                1、继承Spring boot logback设置(可以在appliaction.yml或者application.properties设置logging.*属性)
                2、重写了默认配置,设置日志文件大小在10MB时,按日期切分日志
            -->

    三.异常处理

    对404,500,error异常页面进行处理,错误页面的文件名称必须固定:

    • 404.html:浏览器错误,资源找不到
    • 500.html:服务端错误
    • error.html:自定义错误

    全局异常处理

    404和500的错误页面,SpringBoot可以根据页面的命名方式找到对应文件,自定义的错误就需要自定义拦截器来拦截异常信息并返回给error页面,创建异常拦截器,当异常标识了状态码时就不拦截,没标识状态码就拦截

    @ControllerAdvice//拦截所有带Controller的控制器
    public class ControllerExceptionHandler {
        //    将异常记录到日志
        private final Logger logger = LoggerFactory.getLogger(this.getClass());
    
        @ExceptionHandler(Exception.class)
        public ModelAndView exceptionHander(HttpServletRequest request, Exception e) throws Exception {
            // 记录异常信息:请求的URL,异常信息
            logger.error("Requst URL : {},Exception : {}", request.getRequestURL(),e);
    
            // 当标识了状态码的时候就不拦截
            if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null) {
                throw e;
            }
            //    将记录的异常信息返回到error页面
            ModelAndView mv = new ModelAndView();
            mv.addObject("url",request.getRequestURL());
            mv.addObject("exception", e);
            mv.setViewName("error/error");
            return mv;
        }
    }

    资源找不到异常处理

    资源找不到异常也有跳转到404页面,自定义一个异常类给其指定状态码就不会被拦截,创建资源找不到异常类

    @ResponseStatus(HttpStatus.NOT_FOUND)
    public class NotFoundException extends RuntimeException{
        //继承RuntimeException的构造函数
        public NotFoundException(){}
        public NotFoundException(String message){
            super(message);
        }
        public NotFoundException(String message,Throwable cause){
            super(message,cause);
        }
    }
  • 相关阅读:
    <Ajax> 四. get请求(验证用户名是否存在)
    <Ajax> 三. 前端和后端通过表单数据交互
    <Ajax> 一. PHP基本使用和基本数据类型
    <Ajax> 二. PHP选择语句和循环语句
    <Bootstrap> 学习笔记八. 导航栏和颁
    <Bootstrap> 学习笔记七. 下拉菜单和标签页
    <Bootstrap> 学习笔记六. 栅格系统使用案例
    <Bootstrap> 学习笔记五. 按钮组的使用
    <Bootstrap> 学习笔记三. 浮动的使用
    <Bootstrap> 学习笔记四. 表单组和输入框组的使用
  • 原文地址:https://www.cnblogs.com/python-road/p/14266899.html
Copyright © 2020-2023  润新知