项目1在线交流平台-1.SpringBoot整合SSM环境准备-5.项目调试技巧与git版本控制

文章目录

    • 常见调试方法
    • 1. 常见响应状态码
      • 官网
      • 200成功响应
        • Status Code:200
      • 300状态码
        • 301(转发跳转)
        • 302(重定向):
        • 请求转发与重定向的区别
        • contreller返回模板视图名与返回路径名的区别
        • 其他300状态码
      • 客户端响应
        • [`404 Not Found`](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/404)
      • 服务端响应
        • [`500 Internal Server Error`](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/500)
      • 其他相关
    • 2. 断点调试技巧
    • 3. 设置日志
      • logback-spring.xml
      • 设置日志文件的存储位置
      • 不同日志级别的设定
      • 控制台输出设定
      • 指定文件日志级别设定
      • 使用测试:
    • 4. 版本控制:
      • 官网

参考牛客网高级项目教程

常见调试方法

  • 根据响应状态码提示
    • 可大致知道问题出现的大方向,从哪方面去调试处理
  • 服务端断点调试技巧
  • 客户端断点调试技巧
    • 对前后端有怀疑的程序进行调试跟踪,分析变量、执行过程,进行排查
  • 设置日志级别,并将日志输出到不同的终端
    • 通过日志打印的信息,进行排查,特别是对mybaits的sql问题,很有效

1. 常见响应状态码

官网

状态码

200成功响应

Status Code:200
  • 表示响应成功,很常见的一个状态

300状态码

301(转发跳转)
  • 表示客户端跳转,永久性跳转,请求转发一般在servlet中使用如下代码

    • response.setStatus(301);

    • response.setHeader(“Location”,“fail.html”);

    • springMVC: return "/index"或return “forward:/index”

  • url的访问路径名不改变改变

    // 转发/hello3路径网页的请求
    servletContext.getRequestDispatcher("/hello3").forward(req, resp); 
    
    项目1在线交流平台-1.SpringBoot整合SSM环境准备-5.项目调试技巧与git版本控制_第1张图片
302(重定向):
  • 价值,降低耦合,使功能相对独立,实现功能之间的跳转

  • 客户端跳转,临时性的跳转

  • url访问地址会发生变化

例如

  • 点击登录表单login.jsp静态页面:
    • 表单提交后,会访问…/login路径的服务端servlet,
    • sevlet处理完数据后,会将请求返回给客户端,让客户端重定向去访问index.jsp页面
      • 这个是重要逻辑,登录页面与主页页面独立,
      • sevlet或controller只负责处理验证信息,决定两个页面的跳转=
    • 然后客户端访问index页面,得到响应结果
项目1在线交流平台-1.SpringBoot整合SSM环境准备-5.项目调试技巧与git版本控制_第2张图片
  • 点击登录后,跳转到登录请求的url,登录请求url会重定向index页面
项目1在线交流平台-1.SpringBoot整合SSM环境准备-5.项目调试技巧与git版本控制_第3张图片
请求转发与重定向的区别
  • 请求转发是A通过中间B获取C的信息
    • 访问路径名url不会改变
  • 重定向是三角关系,A请求B,B给了C的地址,让A去请求C
    • 访问路径名url会改变
项目1在线交流平台-1.SpringBoot整合SSM环境准备-5.项目调试技巧与git版本控制_第4张图片
  • 重定向-A与B没有耦合,A中数据无法带给B
  • 是两次请求,只是A建议浏览器访问B

项目1在线交流平台-1.SpringBoot整合SSM环境准备-5.项目调试技巧与git版本控制_第5张图片

  • 转发-A与B有耦合,A中数据可以转发给B,返回给浏览器
  • 只有一次请求,浏览器只认识A,不认识B

项目1在线交流平台-1.SpringBoot整合SSM环境准备-5.项目调试技巧与git版本控制_第6张图片

contreller返回模板视图名与返回路径名的区别
  • 在SpringMVC中,controller封装完model,
  • 如果返回逻辑视图文件名,
    • return “/index”; 指的是渲染模板视图页面,自动拼接模板文件的相对路径加后缀名
    • 访问的是这个资源文件的文件名地址,如html或jsp,将渲染结果返回给dispatchServlet,再展现给浏览器
    • 当然,这些视图文件,通过url+文件名,本身也可以直接显示,不过单独显示的是静态网页
  • 如果返回的是url路径名,
    • return “redirect:/index”;重定向,是访问另一个…/index的url地址
    • 会直接让浏览器访问这个url,会自动跳转到指定页面,并刷新显示
其他300状态码
  • status:304
  • 304 表示资源未被修改。当不是第一次访问一个静态页面或者图片的时候,就会得到这么一个提示。
  • 这是服务端提示浏览器,这个资源没有发生改变,你直接使用上一次下载的就行了,不需要重新下载。 这样就节约了带宽,并且浏览器的加载速度也更快。

客户端响应

404 Not Found
  • Status Code:404 表示访问的页面不存在,表示一个浏览器的错误,就是服务端没提供这个服务,但是你却去访问。
  • 一般检查路径优先
    • 即访问路径有没有写错
    • 服务端的url映射有没有问题

服务端响应

500 Internal Server Error
  • Status Code:500 表示服务端的错误,一般检查servlet。

其他相关

  • Status Code:100 表示继续

  • Status Code:401 表示未授权

  • Status Code:402 表示需要付费(很少见)

  • Status Code:403 表示禁止

  • Status Code:405 表示方法不被允许

  • Status Code:406 表示无法接受(很少见)

  • Status Code:408 表示请求超时

  • Status Code:413 表示实体过大(这个什么鬼)

  • Status Code:507 表示存储不足

2. 断点调试技巧

  • 服务端用idea断点调试,客户端,用浏览器的检查调试功能

  • 设置断点,进行跟踪查看,变量,过程

  • 断点的管理

    项目1在线交流平台-1.SpringBoot整合SSM环境准备-5.项目调试技巧与git版本控制_第7张图片

3. 设置日志

logback-spring.xml

  • 在SpringBoot中,配置文件名logback-spring.xml,会自动被加载,如果不是这个名字,不行

设置日志文件的存储位置

  • 将日志文件进行保存,以便于今后的查看检查

  • 文件保存的位置设定,将日志根据不同级别,大小进行归类

    	<contextName>communitycontextName>
        <property name="LOG_PATH" value="E:/javaWeb/data"/>
        <property name="APPDIR" value="community2"/>
    

不同日志级别的设定

  • 以error日志级别为例:主要包含以下信息

    • 日志文件名
    • 日志滚动策略:
      • 每个文件最大大小
      • 最多保存时间
      • 是否追加形式存储
      • 日志的格式
      • 过滤的级别
    
        <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_PATH}/${APPDIR}/log_error.logfile>
    
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.logfileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>5MBmaxFileSize>
                timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>30maxHistory>
            rollingPolicy>
    
            <append>trueappend>
    
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%npattern>
                <charset>utf-8charset>
            encoder>
    
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>errorlevel>
                <onMatch>ACCEPTonMatch>
                <onMismatch>DENYonMismatch>
            filter>
        appender>
    

控制台输出设定

  • 设置控制台输出的级别,输出在设置级别以上的日志

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%npattern>
            <charset>utf-8charset>
        encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debuglevel>
        filter>
    appender>

指定文件日志级别设定

  • 默认的日志级别:
  • 嵌套其他级别的设定

    <logger name="com.nowcoder.community" level="debug"/>

    <root level="info">
        <appender-ref ref="FILE_ERROR"/>
        <appender-ref ref="FILE_WARN"/>
        <appender-ref ref="FILE_INFO"/>
        <appender-ref ref="STDOUT"/>
    root>

使用测试:

  • 使用工厂默认创建日志对象
  • 以当前类作为日志对象,便于观察
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class LoggerTest {
    private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

    @Test
    public void testLogger() {
        System.out.println(logger.getName());

        logger.debug("debug log");
        logger.info("info log");
        logger.warn("warn log");
        logger.error("error log");

    }
}
com.nowcoder.community.LoggerTest
2022-02-23 16:34:48,801 DEBUG [main] c.n.c.LoggerTest [LoggerTest.java:21] debug log
2022-02-23 16:34:48,802 INFO [main] c.n.c.LoggerTest [LoggerTest.java:22] info log
2022-02-23 16:34:48,802 WARN [main] c.n.c.LoggerTest [LoggerTest.java:23] warn log
2022-02-23 16:34:48,802 ERROR [main] c.n.c.LoggerTest [LoggerTest.java:24] error log

4. 版本控制:

项目1在线交流平台-1.SpringBoot整合SSM环境准备-5.项目调试技巧与git版本控制_第8张图片

  • 分布式版本控制

官网

https://git-scm.com/book/zh/v2

你可能感兴趣的:(项目笔记总结,java,后端,git)