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>
版本控制 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 '提交的备注说明'
- cd到相应的(要上传的)项目文件下 cd d:\Project
- 查看状态
- 对文件进行修改后查看状态(红色表示未提交大仓库)
-
添加后查看 git add workspace/log/community.log
-
提交到本地仓库后看状态
-
本地代码上传到远程仓库(github)
-
Git为了保证传输安全,采用SSL连接。因此需要生成秘钥。
- 创建秘钥 ssh-keygen -t rsa -C "前面的邮箱"
1)是路径确认,直接按回车存默认路径即可
2)直接回车键,这里我们不使用密码进行登录, 用密码太麻烦;
3)直接回车键
-
打开我的电脑C:\Users\lily\ .ssh 里面找到 id_rsa.pub 就是公钥,复制后去远程仓库界面进行配置。
登录到github界面。右上角头像—— Setting —— SSH and GPG keys——— New SSH key
写标题,最好跟跟仓库保持一致,好区分。接着将id_rsa.pub文件中内容复制粘贴。
- 创建秘钥 ssh-keygen -t rsa -C "前面的邮箱"
- 关联github仓库
- 找到对应的仓库,复制仓库 git remote add origin git@github.com:Springxi/Web.git
- 找到对应的仓库,复制仓库 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自己的项目,成功!