
【Maven】
☞Maven入门教程-Maven项目实战☜
六、Maven项目中pom配置文件的使用
1. pom文件的作用
在maven项目中,通过maven来获取和管理第三方的资源。每个maven项目默认是有一个pom文件的。该文件是用来告诉maven当前项目中需要使用的资源的,该文件会被maven自动加载识别。我们需要在pom配置文件中声明需要使用的资源的坐标即可。
注意:
当pom文件被修改的时候,maven会自动的重新加载pom文件,并根据文件的最新内容加载最新的资源。可以理解为maven给pom文件增加了一个onchange的事件。
2. pom文件的配置内容
2.1 modelverson
声明模块的版本
2.2 当前项目的资源坐标
给maven查看,并便于maven查找到该项目给其他项目使用
2.3 配置第三方的资源坐标
让maven根据坐标从本地仓库中引入第三方的资源到项目中使用,如果
本地仓库中没有,则会自动从云仓库中下载。
注意1:
我们可以在https://mvnrepository.com/下来搜索需要的资源坐标,然后当我们将资源坐标变更后,需要点击import changes让maven重新加载pom文件,根据最新的资源坐标获取资源到项目中

注意2:
maven将资源引入到项目中后,在idea的项目视图中是看不到第三方资源的,需要点击idea右侧栏上的maven,进入maven的资源管理视图中,查看当前项目中引入的第三方的资源。

2.4 properties自定义资源版本号管理
一个第三方资源会有很多的版本,比如mybatis,spring等如果我们需要引入的第三方资源过多,当我们对某一个资源的版本号进行修改时,不好修改。可以使用properties标签将资源的版本号单独 的声明在外部,便于我们的修改。

2.5 引入第三方的插件资源

3. jar类型和war类型配置示例
3.1 jar类型的配置示例
<?xml version="1.0" encoding="UTF-8"?>
3.2 war类型的配置示例
问题:
在以前的JAVAEE项目中,IDE工具会自动的将JDK以及tomcat的资源依赖到项目中,我们在web-inf下的lib文件夹下声明的是自定义的第三方资源,而maven中的war类型项目中默认是没有给我们引入任何第三方资源的,造成我们在war类型项目中无法直接创建jsp和声明Servlet完成最基本的web开发。
解决:
在war类型的项目的pom文件中配置最基础的web开发相关的第三方的资源坐标:
- servlet的资源坐标
- jsp的资源坐标
- jstl的资源坐标
配置示例:
<?xml version="1.0" encoding="UTF-8"?>
七、Maven的war类型项目的本地启动运行
1. 问题
以前我们使用idea工具直接创建javaEE项目,而idea在帮我们创建javaEE项目的时候就已经指定了项目运行所需要的tomcat,我们直接启动tomcat访问项目即可。但是使用maven创建的war类型的项目,在创建的时候并没有指明项目运行所需要的tomcat,那么maven的war类型项目,在功能开发完成后如何启动运行呢?
2. 解决
maven的项目中涉及到的资源需要maven来进行管理。war类型的项目在开发完成后,需要告诉maven去调用一个tomcat来运行我们当前的war项目,而maven的资源都是从本地仓库中加载或者从云仓库中下载,那么能不能我们自己在war类型项目中告诉maven去下载一个tomcat,来运行我们的war项目呢?答案是可以的。
3. 实现
3.1 在war类型项目的pom文件中配置tomcat插件的资源坐标,并配置tomcat的端口号以及项目的访问路径
<build>
3.2 通过maven启动当前war项目的tomcat容器,运行项目

八、使用Maven完成对用户信息的增删改查功能
1. 功能需求
用户访问用户信息管理页面,在管理页面中显示所有的用户信息,并可以对用户信息进行增加,删除,修改操作。
2. 功能分析
- 用户管理页面创建
- 用户信息的查询
- 用户信息的删除
- 用户信息的增加
- 用户信息的修改
3. 功能实现
3.1 数据库设计
用户信息表:
- 用户Id
- 用户名
- 用户性别
- 手机号
##
3.2 项目开发环境的搭建
3.2.1 使用Maven创建war项目
3.2.2 配置项目的java和resources目录

3.2.3 配置项目的pom.xml文件声明资源依赖(导包)
<?xml version="1.0" encoding="UTF-8"?>
3.3.4 在java源码目录下创建MVC的包结构

3.2.5 在pojo包中声明User实体类
package
3.2.6 在mapper层将User表的增删该查功能实现
package
3.2.7 在resources下创建并配置mybatis.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
3.3 创建用户管理页面
要求:
在页面加载成功后就要显示所有的用户信息
实现:
使用ajax技术来实现,在页面加载成功后,发起ajax请求,请求所有的用户信息。
代码示例:
<%--
Created by IntelliJ IDEA.
User: zyp
Date: 2020/5/6
Time: 17:14
To change this template use File | Settings | File Templates.
--%>
3.4.查询所有用户信息后台功能实现
UserServlet的创建和实现
package
UserService接口的创建和实现
package
UserServiceImpl的创建和实现
package
3.5 删除用户信息功能实现
删除功能需求:
用户点击行的删除按钮,发起删除请求,将当前的行数据删除。并在当前页面中显示删除成功提示语,并重新加载用户资源。
功能实现:
① 页面功能实现:
因为点击删除后,要在当前页面中显示删除结果的提示语。所以采用ajax 技术实现。
- 请求地址:/userDelServlet
- 请求数据:uid
- 响应数据:“true”|“false”
② 后台功能实现:
根据用户ID删除用户信息
3.6 更新用户信息功能实现
更新功能需求:
用户点击更新按钮,弹出更新页面,并在页面中显示要更新的用户信息。修改完成后,点击更新按钮,在当前页面中提示用户更新结果。并重新加载表格中的内容。
功能实现:
① 更新子窗口以及数据的回显
1) 点击更新按钮,弹出更新的子窗口
技能:window.open
2) 在更新窗口中回显示要更新的数据
② 更新功能实现
3.7 更新用户信息功能实现
增加的功能需求:
用户在页面中点击增加按钮,弹出用户信息增加窗口。并在窗口中输入用户信 息后点击增加完成用户信息的增加。
功能实现:
- 创建增加增加并完成增加窗口的效果
- 完成用户信息的增加
九、Maven项目java目录下的配置文件不会被编译到项目中
1. 问题
maven的项目,是由maven来进行编译的。maven会将项目编译为以前的javaSE和javaEE的结构来运行。但是maven在编译项目的时候,不会讲java目录下的配置文件编译到项目中。mapper包中除了java代码以外,还有mapper.xml文件,maven是不会将mapper.xml文件被编译到项目中的,造成项目运行失败,怎么办呢?

2. 解决
我们需要告诉maven在编译项目中java代码时,在java目录下除了java代码,还有配置文件,需要将配置文件也编译到项目中使用。我们需要在项目的pom.xml文件中配置相关标签即可
3. 实现
在项目的pom.xml文件的build标签下使用resources子标签来告诉maven需要将源码中的xml文件也进行编译:
<build>
十、使用maven打包自己的项目到本地仓库中
1. 问题
假如我们使用maven在本地同时开发两个项目,分别为项目A和项目B,项目A已经开发完成了。而我们想在项目B中使用项目A的功能,怎么办?
2. 解决
项目B是由Maven进行管理的,项目B中的资源需要通过Maven来获取,而Maven会从本地仓库中加载对应的资源给项目B使用。而本地仓库中是没有项目A的资源。那么能不能让maven讲项目A打包并上传到其自己的本地仓库中一份儿,这样其他的项目就可以通过项目A的资源坐标来获取项目A的资源来 使用了。答案是可以的。
3. 实现
注意:
- jar类型的项目打成jar包放到maven的本地仓库中
- war类型的项目打成war包放到maven的本地仓库中

