javaSE部分(04)

本文详细介绍了Java SE项目中IDEA的使用,包括IDEA的安装、设置、Maven的配置与使用,以及Maven项目创建、依赖管理、插件配置等内容。同时,文章讲解了Git的安装、配置,以及如何在IDEA中集成Git进行版本控制。此外,还探讨了团队协作开发中Git分支管理、冲突解决以及远程仓库的使用。最后,简述了Git在多人协作开发中的重要性和作用。
摘要由CSDN通过智能技术生成

javaSE

Day04

本来觉得se比较简单,如果忘记看一下笔记也可以捡起来,但是时间长了,奈何记性太差,学习之后老是忘记自己曾经都学会过什么,所以即便是基础也决定要虚心对待,记录如果出现错误,随时修改。

在csdn记录一下自己学习的过程。

1.流行开发工具idea

IDEA的安装

2019.3版本比较稳定

IDEA的卸载

控制面板,然后找到应用直接卸载

安装后

创建新项目

开发阶段一般能用到的是

JAVA 是se阶段常用的

JAVA Enterprise是web阶段常用的

Spring Initializr 是springboot框架常用的

Maven是ssm,spring boot,springcloud常用的

Empty project是个人习惯的空文件夹

选择JDK版本在project sdk栏处,new直接选择安装jdk的安装路径即可

然后新建项目,新建模块,可以使用idea进行代码书写

Idea详细设置

1.内存设置

在idea窗口栏处help —— edit custom vm options

然后选择前两项作为内存的最大最小设置

2.字体大小

Settings —— editor —— General —— change font size with ctrl +mouse...

同时可以

Settings —— editor —— Font —— size —— 20(就行)

3.显示行号和方法分隔符

Settings —— editor —— General —— appearannce —— show numbers

Show method separators

4.字体编码

Settings —— editor —— Encoding选择utf-8

5.注释模板

添加类模板注释(不推荐)

Settings —— editor —— File and code Templates —— class

—— 在类中添加下面的注释

/**
 * @Description:TODO
 * @author ${user}
 * @date ${DATE} ${TIME}
 * @version 1.0
 */

自定义模版注释(类,方法)(推荐)

Settings —— editor ——Live Templates 

—— 选择下拉框中的Enter选项

—— 点击“+”号,首先选择第二个Template Group,新建一个自己的分组

—— 鼠标选中新建的分组,然后点击之前点过的“+”号,选择Live Template

—— 方法的注释填*,类注释填**

方法注释模板

**

 * @description: $description$

 * @param: $params$

 * @return: $returns$

 * @author $USER$

 * @date: $date$ $time$

 */

类注释模板

**

 * @description: TODO

 * @author $user$

 * @date $date$ $time$

 * @version 1.0

 */

—— 在define处选择应用的范围,选择EveryWhere里面的Java

—— 选择edit valuables

Params的default value处填

groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+='' + params[i] + ((i < params.size() - 1) ? '\\n':'')}; return result", methodParameters())

Returns处填

methodReturnType()

User处填

user()

Date处填

date()

Time处填

time()

—— 结束,使用时就书写* 或 **,上面的名称可以自定义好,以免每次都输入

6.快捷键

Ctrl + alt + t 代码环绕

Ctrl + alt + v 自动补全左边类和对象的代码

Ctrl + alt + L 将写乱的代码变有序

Ctrl + d 复制行

Ctrl + / 单行注释

Ctrl + shift + / 多行注释

Ctrl + g 跳到某一行

查找与查看源码

按住Ctrl键,单击某个类或方法就可以打开某个类或方法的源码

但是当某个变量是通过多态引用调用父类或父接口的方法时,想要打开方法的实现类:

Ctrl +Alt +B

查看某个类的结构信息

类的继承层次:Ctrl + H

类的UML关系图:Ctrl + Alt + U

当前文件结构:Ctrl + F12键

搜索

搜索类:Ctrl + N

全项目搜索文本:Ctrl + Shift + F

全项目替换文本:Ctrl +Shift + R

当前源文件查找文本:Ctrl + F

当前源文件替换文本:Ctrl + R

任何地方搜索:双击Shift(建议取消)

7.Debug

代码出现问题,在左侧点击空白出现断点

选择debug模式运行代码从上到下就会停在打上断点的位置

调试按钮,从左到右共8 个按钮

图标1,Show Execution Point:如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的地方

图标2,Step over:一行一行的往下执行代码,如果这一行上有方法不会进入方法

图标3,Step Into:如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法

图标4,Force Step Into:强制进入方法内部,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法

图标5,Step Out:退出方法,从进入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值

图标6,Drop Frame : 回退断点,很少用到

图标7,Run to Cursor : 运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点(前提是已经进入了 Debug 模式,也就是已经停在某个断点上了)

图标8,Evaluate Expression : 计算表达式

服务按钮,从上到下共 6 个按钮

Rerun : 重新运行程序,他会关闭服务后重新啓动程序,不过很少用到,通常都会直接关掉再开启一次

Resume Program : 继续执行程序,例如在第 20 行和 25 行有两个断点,而当前运行至第 20 行,按一下,则运行到下一个断点(即第 25 行),再按一下,则运行完整个流程,因爲后面已经没有断点了

Pause Program : 暂停程序,很少用不是很重要

Stop : 连续按两下关闭程序,有时关闭服务再启动时,报端口被占用,这是因为没有完全关闭服务的原因

View Breakpoints : 查看所有断点

Mute Breakpoints : 将所有断点变为灰色使断点失效,按 Resume Program 那个键(也就是第三个按键)可以直接运行完程序(因为所有打的断点都被设置为无效了),再次点击这个

Mute Breakpoints 按键可以使所有无效断点变成红色有效

2.Maven

框架阶段会使用到maven,作为坐标依赖,使用idea开发工具可以在这里先提前配置好。

学习maven的可行性

Java是比较适合于网站服务器开发的一种语言,一般开发的项目不会把源码发给用户,而是部署到服务器上,web阶段会采用打成jar包或war包的形式,使用maven可以帮助开发人员避免做这种重复性的工作,而项目的构建Maven也直接帮忙构建了,由于人们工作生活的多样性,所以代码就需要实现很多的功能,所以依赖的jar包就会增加很多,maven作为坐标依赖也极大的帮助开发人员管理jar包,所以学习maven会帮助开发人员集中精力开发逻辑代码,增加效率。

好处

联网状态下,写好坐标依赖就直接进行下载,如果下载的jar包不能使用,在文件夹中删除掉,再重新下载就好。

要使用的jar包可能依赖于其他的jar包,使用maven可以帮助开发人员免去查找jar包间关系,而直接下载好。

Jar包相互间会存在冲突的问题,maven可以避免下载那些冲突的版本。

Maven是apache公司开源的一款项目管理软件,充分用到面向对象的思想,如继承,然后富有多态性,扩展功能。

Maven管理项目的整个生命周期。

Maven可以使一个项目分模块构建,这也是开发人员会分到不同的小组的原因,加大开发效率,降低耦合度。

Maven仓库

本地仓库,本地的程序员设定好的一个文件夹,专门放jar包依赖的,下好之后,以后的项目再使用就直接从这个仓库中找,以后下的java相关jar包都会存放在这里,如果丢失会很麻烦,很多依赖要重新下载。

中央仓库,maven团队维护的一个jar包依赖仓库,程序员想使用需要的jar包,就从这个仓库中去下载。

远程仓库,公司私服对外开放的jar包仓库,如阿里云,这也是常用的一种方式,国外网连接比较吃劲。

Maven坐标

标志性的三个元素

Groupid 创建项目起的名字

Artifactld 模块名

Version 版本

<dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.12</version>

    <scope>test</scope>

</dependency>

Maven的下载

下载地址:Index of /dist/maven/maven-3

一般3.5.4或者3.6.1版本比较好

下载好之后直接解压就可以

点击进入

Bin目录中是maven的一些命令

Boot目录中是第三方的一个框架

Conf目录是maven的配置文件(需修改的地方)

Lib目录是存放jar包的,是maven功能自己的一个放jar包的目录

Repository目录是个人创建的,名字意义是本地仓库,以后下载的jar包都放在这里,这个个人创建的目录名是随意的,但是要在conf目录中做绑定,配置方式是在settings.xml文件中进行修改,如<localRepository>E:\repository</localRepository>,这其中</localRepository>标签就是用来配置本地仓库的,在这个标签之中写将来要下载jar包要存放的文件夹位置,要写绝对路径,以后maven工具存取jar包就在这个自定义的文件夹中。

还有镜像标签<mirror>

            <id>alimaven</id>

            <name>aliyun maven</name>

            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>

            <mirrorOf>central</mirrorOf>

        </mirror>

这里配置的本国的阿里云服务器的镜像,这样以后本地仓库没有的jar包,就从阿里云的远程仓库进行下载。

Maven可以配置环境变量,右键计算机,属性,高级系统设置,环境变量,系统变量选择新建,变量名为MAVEN_HOME,变量值为本地仓库所在目录的名字。

还有path那里也要选择新建,写成%MAVEN_HOME%。

配置环境变量之后,可以进行测试。

Win+r,cmd,输入mvn,如果配置成功会出现一堆提示,但是环境变量也可以不进行配置。

Idea与maven进行绑定,在settings中,选择build tools,然后选择maven,maven home directory改成自己下载的maven工具的目录,如E:\apache-maven-3.5.4,然后在下面use setting file改成conf目录匹配的setttings文件,如E:\apache-maven-3.5.4\conf\settings.xml,然后下面的绑定的本地仓库将自动绑定好所在的目录,然后importing中将import maven project automatically勾选上,这个就是自动将maven配置在项目中。

runner中进行配置在vm options处填写-DarchetypeCatalog=internal这个就是在项目中不要进行骨架的下载,浪费时间,没什么意义。

绑定完成。

使用maven建立se项目,选择maven,勾选create from archetype(maven骨架),选择org.apache.maven.archetypes:maven-archetype-quickstart,然后在出现的groupid填写公司名或者组织名(com.xxx),artifactid填写项目名(xxx),然后选择next,会有maven本地仓库和配置文件的绝对路径,然后选择下一步,然后出现模块名,模块路径,然后选择finish,如果这个时候显示iml已经存在,就将原来的目录删除,再重新建立。

然后建立好了,双击项目名会有src目录,src目录又分为main和test,main是主程序区,下面的包java是写有关java的包,类,或者接口,test是测试区,下面的java一般是写测试类的,这样的分离式的分布是非常好的;下面的比较重要的代表maven项目的是pom.xml,这是每个maven项目都有的,pom是project object module的缩写,中文意思是工程对象模型,他是核心配置文件,配置的是项目的信息和管理的jar包。

主程序区写的程序,然后测试区可以运用面向对象的思想进行调用,然后由于测试程序没有main方法,所以一般使用junit进行单元测试。

Idea版本问题

2019.1 版本maven无问题

2019.2 版本maven存在问题,在bulid,excution,deployment的build tools,maven,repositories,不显示本地和远程的仓库列表。

2019.3 版本maven存在问题,显示本地和远程仓库列表,但是是反的,如果使用,建议不要联网使用,因为他会优先检测远程的,不检测本地的。

Javese的maven项目需要有配置文件,要与java同级建立一个名为resources的文件夹,这样以后的配置文件都放在这里,但是这里需要进行配置,在main目录中建立的resources文件夹选择mark directory as选择resources root,在test目录中建立的resources文件夹选择mark directory as选择test resources root。

Javaweb项目

选择maven,勾选create from archetype(maven骨架),选择org.apache.maven.archetypes:maven-archetype-webapp,然后如果出现父类模块选择none,其他操作和创建se项目类似,然后会创建好有关ee项目的目录,自己要在main目录下创建java目录和resources目录,然后以前创立web项目目录是web,maven创立的webapp,webapp目录存储页面,css,js,html这些前端的文件,web-info目录配置web.xml文件,除此之外,还多了一个index.jsp文件,这个文件可以看成是一个默认的可以进行测试的首页html页面即可。

Web项目部署就需要tomcat服务器进行支持,所以需要在这里配置tomcat服务器,选择界面中的run,选择edit configuration,这里没有tomcat服务器的话,就点击加号,然后选择tomcat server,然后先在本地开发,选择local,然后出现的界面选择deployment,选择加号,选择artifact,然后选择对应名字的war exploded的这个文件,而不是war压缩包,选择这个exploded包,可以支持热部署。(热部署,页面文件,css,js修改后,不需要重开服务器,就可以立即更新,但是修改类文件不行。 ),然后在下面application context处只保留/,这样在访问页面的时候,可以不需要写那么多前缀名字。然后回到server 的界面,open browser处after launch那里不进行勾选,就是不选择默认浏览器直接打开,然后on update action处选择update classes and resources,on frame deactivation 处选择update classes and resources,

(On update action的作用是更新类和资源;on frame deactvation的作用是idea失活时,就是idea不使用的时候,更新页面文件),运行tomcat服务器就点击旁边的绿色箭头,这样tomcat启动完成的提示完成,就可以正式的进行访问,因为之前的项目写的是/,所以tomcat启动完成之后,在浏览器输入localhost:8080/index.jsp就可以进行访问,index.jsp中有什么内容,就会呈现什么。然后下面控制台界面有一个三箭头的绿钮,叫做deploy all,这个绿钮的作用就是重新部署一下项目,这个一般在页面或者代码有修改过时使用。

Web项目的版本问题,凡是web版本2.5和以下版本,wen项目的配置文件web.xml必须存在,因为它不支持注解开发(存在就可以使用注解进行开发)。Web版本3.0及以后版本,web.xml可以没有,因为它支持注解开发(无所谓),这些在创建项目的时候,选择jdk版本和对应的web版本时,要注意的区别。

web项目中tomcat中自带的servlet,maven是没有的,如果想使用servlet接口,javax.servlet这个jar包需要自己导入,就是在pom.xml中导入坐标依赖

<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>javax.servlet-api</artifactId>

    <version>3.1.0</version>

</dependency>

然后在自己所创建的包中,选择new,然后下面直接就有create new servlet的选项,改一下名字,就直接会创建一个servlet底层访问模板,然后注解那里将name修改成urlPatterns,然后地址修改成/xxx,然后在下面的doget方法中打个输出语句,这样在浏览器访问localhost:8080/xxx的时候,控制台就会打印相应的输出语句,这是maven要使用servlet这个类的时候注意的问题。

Maven创建无骨架项目

创建项目选择maven,然后不勾选create from archetype(maven骨架),然后输入组织名,还有项目名,输入好这些,点击finish,就会有无骨架的项目建立完成,这里如果想变成web项目,就在main文件夹下新建文件夹webapp,然后再创建文件夹WEB-INF,在WEB-INF这个文件夹中添加web.xml这个文件,这些都是固定的,然后以后如果这里有网页等文件,还要部署到tomcat服务器中去,选择界面中的run,选择edit configuration,但是在deployment界面,点击加号,并没有相应的war包,这里需要在pom.xml文件中添加配置,<packaging>war<packaging>,se项目默认打包方式为<packaging><packaging>,打包方式为jar,ee项目默认打包方式为<packaging>war<packaging>,打包方式为war,然后在右侧maven小工具选择两个小箭头的刷新选项,webapp文件夹就会发生变化,就可以部署到tomcat服务器中了,在deployment界面,点击加号,就可以找到对应的war包,依旧选择war exploded,然后去除其他的war包,这样tomcat启动后进行访问会更快。

Web.xml文件中内容为

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

Idea maven版本问题

2019.1 之前没问题

2019.3 版本有仓库列表,但是远程仓库在上面,本地仓库在下面

(build exeution->build tools->maven->repositories)

Maven特点优先控制远程仓库,不检测本地仓库

如果希望优先检测本地仓库,可以选择关掉网络。

maven坐标依赖 pom.xml填写

Pom.xml管理jar包的文件

定义jar包的坐标(jar包在仓库的位置)

<dependencies><dependencies>     (复数形态)                                                                                  

标签的作用添加依赖jar

<dependency><dependency> 配置单个jar包的坐标

Dependency标签中,包含三个子标签

Groupid:jar包公司名或者组织名(本地第一个文件夹)

Artifactid:jar包项目名(第二个文件夹,在第一个里面)

Version:版本号(第三个文件夹)

这三个对应的内容都可以在本地仓库中找到。

这些jar都是在pom.xml中进行编写,可以在网上进行搜索,或者开发时有人提前预备好依赖。

版本问题的解决办法

2019.2或者2019.3写maven的配置文件的时候,写依赖jar包的坐标的时候,要么没有相关提示,要么会到网上检测中央仓库jar包,会卡顿,不会检测本地仓库。

解决方法:复制确定的配置文件,直接粘。

Maven具有依赖传递功能

当引入一个A.jar包的时候,需要依赖另一个B.jar包,maven中引入A.jar,自动引入B.jar,非常好的功能。

Maven的jar包依赖范围

Jar包存在作用域,scope默认是compile

Scope即作用域

Compile编译需要jar,测试需要jar,运行需要jar

Test只在测试时有效,其他时候无效(如junit)

Provided(提供者)编译需要,测试需要,运行不需要(如servlet)

Runtime(运行时)编译不需要,测试需要,运行需要(如数据库驱动mysql)

Maven的依赖排除

导入一个jar包A,它依赖于另一个jar包B,想要排除jar包B,在dependency标签里面,对应的主jar包下面写<exclusions>标签,再在里面写<exclusion>标签,里面写它的坐标,不需要写版本号。

如在spring标签中排除expression这个依赖jar:

<dependency>

<groupid>org.springframework<groupid>

<artifactid>spring-context<artifactid>

<version>5.2.6.RELEASE<version>

<exclusions>

<exclusion>

<groupid>org.springframework<groupid>

<artifactid>spring-expression<artifactid>

<exclusion>

<exclusions>

<dependency>

这样在idea右侧maven工具中看到原来导入的jar包,有的依赖就排除了。

标签properties版本控制,版本管理,标签体的里面,定义版本号

如,

<properties>

<mysql.version>5.1.46<mysql.version>

<dbutils.versionn>1.6<dbutils.version>

<properties>

<dependencies>

<dependency>

<groupid>mysql<groupid>

<artifactid>mysql-connector-java<artifactid>

<!--引入properties标签,配置的版本-->

<version>${mysql.version}<version>

<dependency>

<dependencies>

他的作用是配置jar包的坐标的时候,可以不需要再写版本号,写成${jar包名.version},这样以后修改版本号,在properties中修改,管理也更加的方便。

Maven的插件技术

Maven没有的功能,可以添加,以jar包形式添加

<plugins>配置多个插件

<plugin>配置单个插件

推荐的插件:编译插件,tomcat插件

编译插件:默认的编译环境是jdk1.5,maven添加编译插件,编译版本锁定为1.8

这个编译插件的好处是方便改变代码的jdk版本和编码形式

<build>

<plugins>

<plugin>

<groupid>org.apache.maven.plugins<groupid>

<artifactid>maven-compiler-plugin<artifactid>

<version>3.8.1<version>

<configuration>

<target>1.8<target>

<source>1.8<source>

<encoding>utf-8<encoding>

<configuration>

<plugin>

<plugins>

<build>

 这个需要时直接粘到pom.xml中即可(在project标签之中)。

Tomcat插件

分布式项目用这个插件非常好用。

(分布式,一个项目拆散,放在多个tomcat中运行)

如果使用idea原来部署tomcat的方式会很麻烦

使用tomcat插件可以同时启动多个tomcat服务器

<plugin>

    <groupId>org.apache.tomcat.maven</groupId>

    <artifactId>tomcat7-maven-plugin</artifactId>

    <version>2.1</version>

    <configuration>

        <port>8080</port>

        <server>tomcat7</server>

<path>/<path>

    </configuration>

</plugin>

(maven没有tomcat8插件,官方不支持,这其中的path标签中内容就是在idea中配置过的路径)

Tomcat插件在pom.xml写入后,想要启动就在maven的右侧工具栏中找到plugins,点开找到plugins,在里面找到tomcat7,找到tomcat7:run,然后双击就可以启动tomcat,将项目部署到tomcat中。

但是这里需要注意的是,如果项目导入servlet进行开发,会有servlet的jar包版本冲突问题,因为导入了servlet依赖,tomcat7本身又自带servlet依赖,访问地址的时候,会导致冲突,页面报500的错误,解决办法就是改变导入servlet依赖的作用域<scope>provided<scope>,改成运行时期由tomcat提供。

如果这里希望再次启动一个新的tomcat,就将port的端口号进行更改,然后进行运行,缺点是耗内存。

Maven的生命周期

Maven集成的右侧工具栏有一个life选项,点开lifecycle,下面的命令都是生命周期:

clean命令

清除编译产生的target文件夹内容,双击生成的target文件就没有了。

complie命令

将类又编译了一下,再次生成target目录

test命令

自动运行写好的方法

package命令

打好一个jar包

install命令

将程序打包然后安装在本地仓库,另外执行install会将前面的命令都执行一遍

创建子父项目

父项目:

直接像平常一样建立一个项目

作用就是定义jar包的依赖,让子项目去继承,不需要写代码,可以删除src目录,

父项目打包方式,不是jar,也不是war,而是pom

<packaging>pom<packaging>

一旦以这种方式进行打包,刷新右侧maven工具栏,会出现新建的项目,这里的jar包以后都可以继承给子项目,pom.xml中最好配置一个编译插件。

子项目:

因为web开发有三层架构,第一个子项目为web表现层开发,鼠标点在父项目模块,右侧new module,勾选为有骨架项目,选择org.apache.maven.archetypes:maven-archetype-webapp选项,然后点击next,在下一菜单,会看见父项目的标志,然后写好子项目的名字,下一步可以看到子项目的创建目录是在父项目的目录之中的,建立之后,可以看到这个项目的打包方式为war包,会在pom.xml中看到parent标签,然后这其中的<properties>标签,如果之前父项目有编译插件,这里可以注释掉,然后这里面的依赖标签中内容,还有build标签中内容都可以直接删掉,因为继承了父项目,继承以后的依赖都可以直接拿来使用。  

第二个子项目为业务层开发,鼠标点在父项目模块,右侧new module,选择无骨架开发,pom.xml中有父标签

第三个子项目为数据库层开发,鼠标点在父项目模块,右侧new module,选择无骨架开发,pom.xml中有父标签,打开数据库,数据表,对应一个java类,javaBean的类,这个JavaBean的类放在哪个子项目中都可以,但是一般放在dao层,在数据库子模块之中,java目录下创建好对应类的名字,属性的定义一般写成包装类;然后resources目录下,写druid的配置文件,driverClassName,url,root,password,其中url对应的数据下可携带代表编码的参数?characterEncoding=utf8,在java目录下创建一个工具包,里面写德鲁伊工具类,这个工具类是开发人员最基本要求;然后创建一个处理dao层的类,里面用QueryRunner(框架到学习的时候再说)来执行SQL语句的执行。

第二个子项目需要使用dao层的pojo类,但是引入不了,解决办法就是业务层项目,依赖dao层项目,导入dao层的jar依赖

<dependencies>

<dependency>

<groupid>组织名<groupid>

<artifactid>dao层项目的模块名<artifactid>

<version>1.0-SNAPSHOT<version>

<dependency>

<dependencies>

这里业务层的练习代码要做的是,请求和响应的编码问题,获取客户端浏览器的数据,将获取到的客户端信息,存储在javaBean对象中,引入dao层的方法,就存在数据库中了。

第一个子项目的关于前端的页面都写在webapp的目录之下,然后建立一个适合练习的页面,例如对应pojo类相应的一个属性填写,form标签最终跳转到后台写的servlet之中,action与后台跳转的位置相同,练习初次体验一下maven,练习内容web网页获取客户端浏览器的参数,参数封装到javaBean对象,调用业务层的方法,传递javaBean对象,给客户端响应,然后这里web层需要javaBean对象,就可以在pom.xml文件中引入,web层依赖于业务层,业务层依赖于dao层,所以只要在web层引入业务层的依赖就可以。                                                                                           

<dependencies>

<dependency>

<groupid>组织名<groupid>

<artifactid>service层项目的模块名<artifactid>

<version>1.0-SNAPSHOT<version>

<dependency>

<dependencies>

然后再在这个web层的pom.xml文件中写好tomcat插件,

<build>

<plugins>

<plugin>

    <groupId>org.apache.tomcat.maven</groupId>

    <artifactId>tomcat7-maven-plugin</artifactId>

    <version>2.1</version>

    <configuration>

        <port>8080</port>

        <server>tomcat7</server>

<path>/<path>

    </configuration>

</plugin>

<plugins>

<build>

项目聚合

然后在maven小工具找到web层的子项目,在他的plugins中找到tomcat7:run双击启动,但是这里直接运行会报错误,web层需要依赖于业务层,这里的业务层只是写了一些代码,并没有打成jar包,解决办法就是项目聚合,找到父项目,找到其lifestyle,找到install安装,(就是安装父项目,将父项目打成本地jar包,安装到本地仓库中,他会把所有的子项目全部安装到本地仓库中。),双击运行,这样父项目作为依赖传递,不打包,dao层,service层就打好jar包,web层打好war包,此时,回到web层再次启动tomcat7:run就可以。

此时在网页上进行测试,一个添加信息到数据可的简单功能就可以实现了。

Maven部署tomcat服务器

将web层开发打成一个war包,在小工具中找到web层的lifestyle,选择install

此时在本地仓库中找到web层的那个war包,然后关闭idea,将这个war包放在真实的tomcat服务器之中,在之前下好的tomcat软件之中,找到webapps目录,将里面的东西删掉,再将之前写好的war包放在这个目录之中,因为在servlet那个类还有页面跳转的地址配置的都是”/”,所以这属于是tomcat的默认项目,这里就需要把这个war包的名字改成ROOT.war,这个名字的修改是强制性的,否则tomcat会认为这个项目不是tomcat的默认项目,然后在下好的tomcat软件中找到bin目录,然后win10系统选择startup.bat,双击运行,浏览器输入之前在浏览器输入过的网址,此时如果之前的所有步骤没有发生错误,浏览器中输入的内容会保存在数据库之中。

3.关联版本控制工具git

Git是版本控制工具,这个工具可以管理java代码,前端等,是团队协作开发的重要工具,他是管理项目源码的版本控制工具(对于生成的字节码文件不进行管理),一般只管理纯文本文件,一般不会做非纯文本文件的管理(比如说ppt,音乐,word等),在实际开发中,因为开发的需要,需要很多开发人员进行开发,他们如果使用u盘进行代码的传输,并进行上传,项目一般是庞大的,有相当多的类,如果使用这样的方式进行代码的迭代,工程是巨大的,所以此时,需要一个代码的版本控制工具git。

使用git的原因:

1.如果没有版本控制工具,团队内协作开发非常不方便

2.如果没有版本控制工具,项目无法进行版本的回退与穿梭

3.如果没有版本控制工具,无法对代码进行历史追踪

4.权限管理

版本控制的作用

冲突解决,权限管理,代码备份,协同开发,版本还原,历史追查,版本记录,分支管理,代码审查

那么一般代码的书写是在idea之中,所以git也要配置在idea之中

Idea整合git

Idea配置

点击file,点击settings,找到version control,找到GIT,然后在Path to git executable配置git的安装目录选中git.exe,然后点击test进行测试,如果能弹出显示git的版本,就证明git与idea配置成功。

在idea中使用git的方法

将项目进行git管理

选中要进行提交的模块鼠标选中,点击vcs,然后选中import into version control,然后选中create git repository,然后找到想要控制的那个模块,选中它,点击ok

然后在本地的那个项目中会看到多了一个.git的目录,这是git的本地仓库,可以查看这些项目中目录的状态,git status,发现他们是红色的,此时他们在工作区

添加忽略文件

一旦一个项目被git控制住之后,应该立即添加创建gitignore忽略文件,但是需要在idea中先安装一个插件,在settings,找到plugins,在marketplace搜索.ignore,然后选择install,联网下载安装成功即可,安装之后还需要重启一下idea

此时就可以右键选中需要版本控制的模块,右键选择new找到.ignore file再找到gitignore file(Git)这个选项,然后什么都不需要选择,直接generate生成即可,此时就在该项目中生成了.gitignore文件,然后就可以将那些如.idea结尾的,.iml结尾的文件或者target文件,在ignore文件中进行标注。

比如target文件放入忽略目录中,右键选中target文件,然后找到git,选择add to ignore,选择ignore,这样target目录就不会被加入到暂存区。

选中项目右键git,commit的时候,一般是src目录,.gitignore,pom.xml文件进行提交,然后提交信息也一定要写,提交到本地库之后,代码的颜色会由绿色变为黑色。

远程提交代码

写好的项目也要提交到远程仓库,一般是gitee,在gitee上新建一个仓库,仓库名和项目名保持一致,然后直接进行创建就可以,然后选中项目,右键git,选择repository,选择push,然后需要自定义远程仓库地址url,选择define remote,然后出现url,然后在网站上的远程仓库地址https的整体地址进行复制,复制到idea的url上。然后选择ok,选择push即可,然后使用的账号是之前默认配置过的。

如果这个项目上传的网址想进行改变,上传到其他url,在本地库找到.git文件,进行删除,然后再重启idea,在下面红色的部分,选择configure,然后将项目的缓存进行移除,选择version control,选择曾控制的那个项目,然后点击减号,进行移除,然后项目再重新进行git的管理。

克隆项目到本地

选择vcs,选择git,选择clone,在gitee码云上找到要克隆的仓库地址,然后复制到idea之中,然后directory选择一个自己想要放置的位置。

远程仓库更新到本地

选中项目,右键选择git,repository,pull,出现提示框的第一项是与本地进行合并。

Git简介

Git是一种去中心化的分布式版本控制工具。

Git这种分布式版本控制工具不仅仅在git的服务器端保存版本库,他在各个开发者那里也有自己的一份本地版本库,就算服务器挂掉,也可以在开发者个人电脑里进行历史的回退,只要不是同时全部挂掉,就还可以找到代码进度。

实际开发中,一般会把自己的项目推送到git的服务器进行开发,git的服务器有很多种,比如github,码云gitee(github是国外开发的,gitee是中国开发的),gitlab(一般是公司内部自己搭建的)

Git的优势

不严重依赖于服务器端,git服务器一般是集群搭建,高可用,所以一般项目会稳定下载下来。

Git的工作机制

根据乐观锁的机制(原理就是版本号机制),不同的开发者将项目推送到服务器上,必须保证服务器最新版本之上进行的更改,才可以推送上去。

Git的工作流程

Git中的一些概念

工作区(本地):是电脑中实际的目录,写代码的位置。

暂存区(本地):过渡,缓冲的位置,如果代码有问题,可以在暂存区这里将代码删除。

本地仓库(本地):真正向远程服务器推送代码的位置,暂存区提交过来的内容无法删除。

远程仓库(远程服务器):github,gitee,gitlab等。

如图是git的工作流程

 

Git的卸载

在控制面板找到程序和功能卸载git和tortoisegit

Git的安装

Git支持Linux unix mac windows系统

下载地址 Git - Downloads

本人下载版本为git-2.19.1-bit.exe安装包

安装方式为双击,除了安装目录路径,其余全部选默认next

桌面右键会有git gui here和git bash here

不使用git gui here,他是图形化界面,并且比较丑陋。

验证安装成功方式,右键git bash here,输入git --version命令。

配置用户签名

用于追踪提交代码人的信息(和GitHub或者码云登录的账号没有关系)

用gitbash命令行的方式

git config --global user.name ‘xxx’ 

git config --global user.email xxx@xx.com

邮箱和地址只是提交用于区别的一个身份,没大意义

这些信息保存在C:\Users\{用户名}路径下的.gitconfig 文件之中

Git本地命令

本地操作:git流程图中,工作区到暂存区再到本地库这都是本地操作的命令

git add 文件名 将工作区中指定文件添加到暂存区

git add . 将工作区的所有内容添加到暂存区

git commit -m ‘说明信息’ 文件名 将指定文件从暂存区添加到本地库

git commit -m ‘说明信息’ 将暂存区中所有内容添加到本地库

git init 初始化本地库,初始化一个工作区,生成.git文件

git config --global user.name ‘xxx’  设置用户签名

git config --global user.email xxx@xx.com 设置用户签名

git status 查看本地库状态

git reflog 查看历史记录,只针对于添加到本地库的文件进行查看

git reset --hard 版本号 版本穿梭

建立一个文件夹,比如aaa,在文件夹中右键命令行git bash here,输入git init,然后在.git文件中所有文件都是工作区文件,不要进行更改。

此时aaa文件就是一个被git所管理的文件夹,这个文件夹所在的区域就是工作区,这时建立一个Helloworld.java的文件,命令行输入git status,会发现这个文件是红色的,说明此时文件在工作区并且发生了变化,此时在命令行输入git add Helloworld.java,然后命令行输入git status,会发现文件变成绿色的,说明此时文件是加入到了暂存区中,然后git commit -m ‘说明信息xxx’ Helloworld.java,然后命令行输入git status,因为这里只创建过Helloworld.java这个文件,所以这里显示nothing to commit,说明此时文件已提交到本地库,且无法进行更改。此时命令行输入git log,会显示所有文件提交到本地库的详细历史记录,此时命令行输入git reflog,会显示所有文件提交到本地库的版本库大致历史记录(显示版本号的前七位),如果在命令行输入git log Helloworld.java,会显示对于Helloworld.java这个文件提交到本地库的详细历史记录,此时命令行输入git reflog Helloworld.java,会显示对于Helloworld.java这个文件提交到本地库的版本库大致历史记录(显示版本号的前七位),此时命令行输入git reset --hard 版本号,这时就会回退到指定版本号文件的状态,如果此时不小心鼠标右键删除了工作区的某个文件,将文件恢复到工作区,命令行输入git check out -- 文件名,此时文件就会恢复到工作区中,如果想删除某个文件,可以鼠标右键进行删除,然后命令行输入git add .,再输入git commit -m ‘说明信息’,说明信息必须写,写好后,此时文件就彻底的删除了。

演示的例子只能在工作区中进行操作,在其他位置无法执行。

tortoiseGit与中文语言支持包安装

TortoiseGit-2.8.0.0-64bit.msi安装包---图形化软件安装

Location处可以自己指定安装目录

其余选择next就可以

然后TortoiseGit-LanguagePack-2.8.0.0-64bit-zh_CN.msi安装包进行安装

依旧选择next

tortoiseGit安装之后要进行计算机重启,这样文件状态颜色才会发生变化

图形化界面git操作

设置中文方式:选择tortoiseGit,选择settings,选择语言,选择中文

创建版本库:在想要成为版本库的文件夹中,右键鼠标选择Git在这里创建版本库,然后出现的弹窗提示的地方不要进行选择,使其默认就好,如果进行选择打勾,则不会生成.git隐藏目录。

然后在这个文件中建立一个新的文件,如xx.txt,一般都是红色显示,也可以使用命令行的方式git bash here,查看git status,命令行显示这个文件为红色,想把这个文件添加到暂存区,就选择tortoiseGit,选择添加,然后勾选想要添加的文件,然后该文件会蓝色十字架显示,如果想提交到本地库,可以在这个弹出界面选择提交选项,也可以退出这个界面,然后鼠标右键选择git提交,提交的时候必须写明提交信息,提交之后文件图标显示绿色,表示该文件工作区,暂存区,本地库状态一致。如果该文件又做了修改,文件颜色就会发生改变,变成红色,红色表示工作区的内容发生了变化,另外如果一个文件已经从工作区到暂存区提交到本地库,那么下次这个文件做了修改可以直接将文件从工作区提交到本地库。查看历史记录,右键选中该文件,选中tortoiseGit,选择显示日志,此时会展示该文件的所有日志信息,如果此时想进行版本的回退,就右键选择目标的文件,选择重置此版本到master,然后再选择硬重置才可以,然后选择确定,就可以回退到之前的版本。此时如果想进行版本的穿梭,在文件夹中右键选择tortoiseGit(不要选择文件),然后选择显示引用记录,然后就可以在其中找到之前的其他版本,进行版本的穿梭。文件的删除,右键选中文件,然后选择tortoiseGit,然后选择删除,然后想还原,就鼠标右键文件夹中,然后选择tortoiseGit,然后选择还原,选中要还原的文件,就可以将文件进行还原。但是如果删除之后,又进行了提交,就不能将删掉的文件进行还原。

 把一个java项目交给git进行管理,找一个项目,在idea开发环境下开发的项目,一般会有src,iml,.idea,out这几个目录,这其中除了src这个源码目录,剩下的都是不要被git管理的目录,有些开发环境其他人下载之后,可能会使用不了。首先在这个项目中建立一个.git的本地库,进行git的管理,然后选中除src和.git的目录鼠标右键选择tortoiseGit,然后选择添加到忽略列表,然后选择按照名称忽略,忽略类型选择递归忽略,然后忽略文件选择第二项.gitignore放在当前文件/文件夹所在的目录,然后选择确定,这样那些被忽略的文件就不会被加到暂存区归git进行管理,同时生成了一个.gitignore文件,此时在文件夹中右键选择tortoiseGit,选择添加的时候,src和.gitignore文件就会出现选项,而其他文件就不会出现,并且这个.gitignore文件也要进行添加到暂存区的操作,然后添加之后,选择提交,提交时写好提交信息,然后此时就提交到本地库了,并且只有src和.gitignore文件颜色变成了绿色。

将文件添加至忽略列表

在工作目录中创建一个名为.gitignore的文件(文件名称固定),具体语法如下:

所有以.a结尾的文件都会被git忽略

*.a

!取反的意思,lib.a结尾的不会被忽略,会被git进行管理

!lib.a

在TODO文件前面写一个’/’,表示TODO文件会被忽略,忽略了一个文件

/TODO

在bulid文件后面写一个’/’,表示build/目录下面的所有文件都忽略,忽略了目录下面的文件

build/

doc目录下面,以.txt文件结尾的都会忽略

doc/*.txt

doc目录下面的子目录和孙子目录,以.pdf结尾的都会忽略

doc/**/*.pdf

另外.gitingore文件的创建方式前面已经使用过,如果想自己创建一个.gitignore文件则需要用命令行的方式git bash here,然后在被git管理的文件夹中输入touch .gitignore,然后上面的那些关于文件进行忽略的语法就可以自己进行添加,Linux上的命令这里也可以使用,另外Windows系统不能创建这样的文件。另外其实没有特殊要求,也不需要自己特别创建。

远程操作的代码托管平台网站一般有GitHub,gitee,gitlab,这里使用gitee。

百度输入码云,然后找到第一项进入,进行注册,码云上就会有你的一片空间。

Git的远程操作

注册,然后进行登录,在界面找到‘+’,然后点击新建仓库,仓库名一般和项目名称保持一致

本地的项目只有提交到本地库,才可以向远程仓库进行提交。

远程仓库建立之后,一般会有一个地址如https://gitee.com/elsius/test.git,然后本地仓库推送到远程仓库,

git remote add origin https://gitee.com/elsius/test.git

这个命令的意思是给这个地址取一个别名,因为需要通过地址来进行远程推送,而这个地址的名字过长,所以起一个别名

git push -u origin "master"

然后将这个项目推送到主分支

首先将项目src目录和.gitignore文件进行提交,然后在该项目中使用命令行的方式,右键选择git bash here,然后命令行输入上面的两条命令,第一次提交需要输入用户名密码,这个用户名密码是在码云上进行注册过的。

克隆,远程仓库别名的操作

从远程仓库下载代码(首次需要)

git clone 远程仓库地址(https)

推送到远程仓库的代码可以下载,但是如果是非本人操作想进行推送,必须创建仓库的本人赋予想进行推送者权限才可以。

增删查仓库的别名

找到一个想放下在代码的文件夹,鼠标右键git bash here命令行输入

git clone 远程仓库地址 别名

别名可加可不加,不加就是默认项目原来的名字

查看仓库的别名,需进入到本地已下载好的仓库之中,需含有.git隐藏文件夹,右键命令行输入git bash here,然后输入

git remote 查看远程仓库的别名

或者git remote -v 查看远程仓库别名和地址

git remote rm 别名 删除远程仓库别名

更新远程仓库代码到本地

如果本地下载过其他人放在码云或者github或者gitlab上推送过的代码,那么第一下载的时候,使用git clone命令,以后的时候如果其他人代码有做过修改更新推送了,那么本人就使用命令行输入

git pull 远程仓库地址(https) master

这样本地就下载好最新的代码

如果本地仓库与远程仓库有联系,就是git remote -v进行查看还有别名,那么就git pull 别名 master

Git团队内协作开发

当一个团队进行代码的协作开发的时候,一般高级程序员会建立一个远程仓库,然后与手下共同工作共用这一片空间,此时如果高级程序员不给这些成员赋予权限,则这些成员就只有下载代码,却无法修改代码并且进行推送,所以此时高级程序员需要赋予员工对应的权限。

高级程序员需要在自己网站找到相应开发的那个仓库,然后选择管理,然后找到仓库成员管理,然后选择开发者,然后选择添加仓库成员,邀请用户,选择直接添加,然后在gitee处直接填写其他开发者的名字,名字是个人主页@xxx的这个xxx名字,然后选中那个名字,点击添加,然后选择提交,并且邀请那个成员必须收到邮件并且同意邀请。

Git分支操作

前面描述的一般都是在master分支上进行开发,但是实际开发会把一个功能分成一个分支,然后在该分支上进行开发。

一般一个项目会有很多的功能,然后这些功能开发好之后,会向主分支进行合并,向主分支合并之前,会有预合并分支供测试人员进行测试,如果有bug交给开发者修改,如果通过向主分支合并。

分支最大的作用就是多个任务并行开发。

创建分支的本质是创建一个当前位置的指针,主分支和其他分支会有相同状态的时候,其他分支会有继续的开发,但是合并的动作一般是由主分支来进行完成,即master分支合并其他分支。

切换分支的本质,就是将head指针移动到对应的分支上。

分支操作

git branch 分支名 创建分支

git branch -v 查看分支

git checkout 分支名 切换分支

git checkout -b 分支名 创建并切换分支

git merge 分支名 合并分支

git branch -D 分支名 删除分支

版本冲突

版本冲突发生的条件是在多个开发者共同开发的情况下发生的,是在推送代码的时候,更改推送是在老版本的基础上进行推送,即他们的版本号冲突。(git remote可以查看),冲突的解决方案

git pull(获取最新内容,修改合并,默认本地已经clone过代码)

git add

git commit

然后再进行推送

造成冲突有两种情况

代码仓库管理者/非管理者进行了文件内容的更改或者新增了文件,使老版本发生了改变,代码仓库管理者/非管理者下载代码之后,在他们之前本地的老版本基础上在进行本地的更新,然后进行推送,这样造成了版本冲突(代码不同及版本号不同),解决方案是上面的三板斧,即

git pull(获取最新内容,修改合并,默认本地已经clone过代码)

git add

git commit

然后再进行推送

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值