Java Web 项目学习(一) 项目调试与版本控制

项目调试

  • 响应状态码的含义 https://developer.mozilla.org/zh-CN/
    • 200 请求成功
    • 302 重定向(低耦合进行功能跳转
    • 404 请求失败(一般是路径错误)
    • 500 服务器不知道如何处理
  • 服务端断点调试技巧
    • 打断点
    • F7进入代码
    • F8 向下执行一步 
    • F9 继续执行
  • 客户端断点调试技巧
    • 查看浏览器网页代码,打断点
    • F10 向下执行一步
    • F11 进入代码
    • F8 继续执行
  • 设置日志级别,并将日志输出到不同的终端
    • 简单log:在application.properties中,采用 logging.file.name ="D:/Project/log/community.log" 
    • 复杂log:在resource跟=根目录下建立logback-spring.xml,写对应代码做配置。位置名称不变,就不需要额外的配置了。spring会自动识别并做好关联。
      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
          <contextName>community</contextName>
          <property name="LOG_PATH" value="D:/Project/workspace/log"/>
          <property name="APPDIR" value="community"/>
      
          <!-- error file -->
          <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
              <file>${LOG_PATH}/${APPDIR}/log_error.log</file>
              <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                  <fileNamePattern>${LOG_PATH}/${APPDIR}/ecccrror/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                  <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                      <maxFileSize>5MB</maxFileSize>
                  </timeBasedFileNamingAndTriggeringPolicy>
                  <maxHistory>30</maxHistory>
              </rollingPolicy>
              <append>true</append>
              <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                  <pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
                  <charset>utf-8</charset>
              </encoder>
              <filter class="ch.qos.logback.classic.filter.LevelFilter">
                  <level>error</level>
                  <onMatch>ACCEPT</onMatch>
                  <onMismatch>DENY</onMismatch>
              </filter>
          </appender>
      
          <!-- warn file -->
          <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
              <file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
              <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                  <fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                  <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                      <maxFileSize>5MB</maxFileSize>
                  </timeBasedFileNamingAndTriggeringPolicy>
                  <maxHistory>30</maxHistory>
              </rollingPolicy>
              <append>true</append>
              <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                  <pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
                  <charset>utf-8</charset>
              </encoder>
              <filter class="ch.qos.logback.classic.filter.LevelFilter">
                  <level>warn</level>
                  <onMatch>ACCEPT</onMatch>
                  <onMismatch>DENY</onMismatch>
              </filter>
          </appender>
      
          <!-- info file -->
          <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
              <file>${LOG_PATH}/${APPDIR}/log_info.log</file>
              <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                  <fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                  <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                      <maxFileSize>5MB</maxFileSize>
                  </timeBasedFileNamingAndTriggeringPolicy>
                  <maxHistory>30</maxHistory>
              </rollingPolicy>
              <append>true</append>
              <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                  <pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
                  <charset>utf-8</charset>
              </encoder>
              <filter class="ch.qos.logback.classic.filter.LevelFilter">
                  <level>info</level>
                  <onMatch>ACCEPT</onMatch>
                  <onMismatch>DENY</onMismatch>
              </filter>
          </appender>
      
          <!-- console -->
          <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
              <encoder>
                  <pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
                  <charset>utf-8</charset>
              </encoder>
              <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                  <level>debug</level>
              </filter>
          </appender>
      
          <logger name="com.myproject.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>
      
      </configuration>
      View Code

版本控制 Git

  • 查看当前版本 git version

  • 查看现在已有配置 git config --list

     可以看到没有用户名和邮箱

  • 配置用户名 git config --global user.name "name"
  • 配置邮箱 git config --global user.email "email"


  • 将文件上传到本地仓库(status,add,commit)

    • cd到相应的(要上传的)项目文件下 cd d:Project


    • 初始化git    git init
    • 查看状态  git satus
    • 添加文件  git add filename
    • 查看状态


    • 提交到仓库 git commit -m '提交的备注说明'
    • 查看状态     


    • 对文件进行修改后查看状态(红色表示未提交大仓库)

    • 添加后查看 git add workspace/log/community.log

    • 提交到本地仓库后看状态

  • 本地代码上传到远程仓库(github)

    • Git为了保证传输安全,采用SSL连接。因此需要生成秘钥。 

      • 创建秘钥 ssh-keygen -t rsa -C "前面的邮箱"

        1)是路径确认,直接按回车存默认路径即可

        2)直接回车键,这里我们不使用密码进行登录, 用密码太麻烦;

        3)直接回车键


      •  打开我的电脑C:Userslily .ssh 里面找到 id_rsa.pub 就是公钥,复制后去远程仓库界面进行配置。
        登录到github界面。右上角头像—— Setting —— SSH and GPG keys——— New  SSH key
        写标题,最好跟跟仓库保持一致,好区分。接着将id_rsa.pub文件中内容复制粘贴。

    • 关联github仓库
      • 找到对应的仓库,复制仓库  git remote add origin git@github.com:Springxi/Web.git 


  • 上传本地代码到远程   git push -u origin master    会出一个提示,输入YES。注意不能直接回车,会报错。
  • 远程仓库下载到本地

    • 找到克隆的路径,本地cd到想要克隆的文件夹下, git clone 复制的地址

利用IDE管理Git

  • Intellij IDE —— File —— Setting ——Version Control ——GIt —— 找到Git安装位置,选择bin目录下的git.exe
  • 创建本地仓库:选中项目,上方菜单栏 ——VCS——Import into Version Control —— Create GIt Repository
  • 提交文件到本地仓库: VCS——Git ——直接点commit 或者点 Commit Files (有选择的提交文件)
  • 远程仓库同样需要建项目,并复制链接URL
  •  VCS——Git ——push——选择并粘贴 ,会提示需要输入github的账号密码。输入,成功提交。

 

遇到错误

  • Push failed: Unable to access ‘https://github.com/…’: Failed to connect to 127.0.0.1 port xxx Connection Refused

    出现这个一般是网络问题。可能都不会蹦出输入账号密码的框框。
    1 .查看自己是否使用了代理,是取消。

    git config --global --unset http.proxy 
    git config --global --unset https.proxy

    2.单纯的网络问题,我是电脑点击隔天就再弄就好了。

  • fatal: refusing to merge unrelated histories 解决方案如下:

    1.切换到自己项目所在的目录,右键选择GIT BASH Here,Idea中可使用Alt+F12

    2.在terminl窗口中依次输入命令:

    git pull
    git pull origin master
    git pull origin master --allow-unrelated-histories

    3.在idea中重新push自己的项目,成功!

原文地址:https://www.cnblogs.com/codinghard/p/14799199.html