史上最全Maven教程(五)

news2024/9/20 18:38:55

文章目录

    • 🔥Maven聚合案例_搭建dao模块
    • 🔥Maven聚合案例_搭建service模块
    • 🔥Maven聚合案例_搭建web模块
    • 🔥Maven聚合案例_运行项目
    • 🔥依赖传递失效及解决方案

🔥Maven聚合案例_搭建dao模块

dao子工程中一般写实体类和dao层:

  1. 在父工程下创建maven模块,不选择模板,创建时一定要选择父工程。
    在这里插入图片描述
  2. 子模块的pom文件中写入父工程证明继承成功。
    在这里插入图片描述
  3. 准备数据库
CREATE DATABASE 'student';
USE 'student';
DROP TABLE IF EXISTS 'student';
CREATE TABLE `student` (
  'id' int(11) NOT NULL AUTO_INCREMENT,
  'name' varchar(255) DEFAULT NULL,
  'sex' varchar(10) DEFAULT NULL,
  'address' varchar(255) DEFAULT NULL,
  PRIMARY KEY ('id')
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
insert  into
'student'('id','name','sex','address')values (1,'程序员','男','北京'),(2,
'程序猿','女','北京');
  1. 编写实体类
public class Student {
    private int id;
    private String name;
    private String sex;
    private String address;
    
    // 省略getter/setter/tostring/构造方法
}
  1. 在resources中编写连接数据库的配置文件db.properties
jdbc.url=jdbc:mysql:///student
jdbc.user=root
jdbc.password=root
  1. 编写dao方法
public class StudentDao {
    // 查询所有学生
    public List<Student> findAll() throws Exception {
        // 读取配置文件
        Properties properties = new Properties();
        InputStream is = this.getClass().getClassLoader().getResour
ceAsStream("db.properties");
        properties.load(is);
        String url = properties.getProperty("jdbc.url");
        String user = properties.getProperty("jdbc.user");
        String password = properties.getProperty("jdbc.password");

        // 查询数据库
        Connection connection = DriverManager.getConnection(url, user,
password);
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery("select * from
student");

        // 处理结果集
        List<Student> students = new ArrayList();
        while (resultSet.next()){
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            String sex = resultSet.getString("sex");
            String address = resultSet.getString("address");
            Student student = new Student(id, name, sex, address);
            students.add(student);
       }
        // 释放资源
        resultSet.close();
        statement.close();
        connection.close();
        return students;
   }
}
  1. 测试 dao 方法
public class StudentDaoTest {
    // 测试findAll
    @Test
    public void testFindAll() throws Exception {
        StudentDao studentDao = new StudentDao();
        List<Student> all = studentDao.findAll();
        all.forEach(System.out::println);
   }
}

🔥Maven聚合案例_搭建service模块

service子工程中一般写service层的内容,也需要继承父工程,由于需要调用dao子工程的方法,所以需要导入dao子工程的依赖。

  1. 在父工程下创建maven模块,不选择模板,选择父工程。
  2. 在service模块的pom文件中引入dao子工程的依赖。
<dependencies>
    <dependency>
     <groupId>com.it</groupId>
	 <artifactId>maven_demo2_dao</artifactId>
     <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>
  1. 编写Service方法
public class StudentService {
    private StudentDao studentDao = new StudentDao();
    public List<Student> findAllStudent() throws Exception {
        return studentDao.findAll();
   }
}
  1. 测试service方法
public class StudentServiceTest {
    // 测试findAllStudent
    @Test
    public void testFindAll() throws Exception {
       StudentService studentService = new StudentService();
        List<Student> allStudent = studentService.findAllStudent();
      	allStudent.forEach(System.out::println);
   }
}

🔥Maven聚合案例_搭建web模块

web子工程中一般要写控制器和前端页面的内容。它不是普通的java工程,而是一个web工程,需要继承父工程,导入service子工程的依赖。

  1. 在父工程下创建maven模块,选择web工程模板,选择父工程。
    在这里插入图片描述

  2. 创建好后,添加父工程,删除pom文件中的jdk编译版本,删掉junit依赖,引入service依赖。

<parent>
    <artifactId>maven_demo2</artifactId>
    <groupId>com.itbaizhan</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>

<dependencies>
    <dependency>
        <groupId>com.itbaizhan</groupId>
        <artifactId>maven_demo2_service</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>
  1. 编写控制器
@WebServlet("/allStudent")
public class FindAllStudentServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        StudentService studentService = new StudentService();
        List<Student> allStudent = null;
        try {
            allStudent = studentService.findAllStudent();
       } catch (Exception e) {
            e.printStackTrace();
		req.setAttribute("allStudent",allStudent);
		req.getRequestDispatcher("allStudent.jsp").forward(req,resp);
   }
}
  1. 编写JSP页面
<%@ page contentType="text/html;charset=UTF-8" language="java"isELIgnored="false" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
	<html>
		<head>
    		<title>所有学生</title>
		</head>
	<body>
		<table align="center" border="1"cellspacing="0" cellpadding="0"
width="500px">
    <tr>
        <th>id</th>
        <th>姓名</th>
        <th>性别</th>
        <th>地址</th>
    </tr>
    <c:forEach items="${allStudent}" 
    			var="student">

      	 <tr>
            <td>${student.id}</td>
            <td>${student.name}</td>
            <td>${student.sex}</td>
            <td>${student.address}</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

🔥Maven聚合案例_运行项目

有以下两种方式可以运行项目:

  1. 配置tomcat插件运行父工程,此时会自动聚合运行项目。
    点开配置tomcat7插件:
    在这里插入图片描述
    进行如下配置:
    在这里插入图片描述
    点击运行箭头即可访问 http://localhost:8080/allStudent

  2. 配置tomcat插件运行web子工程。
    运行web子工程时会从本地仓库下载依赖的jar包,所以必须将dao模块和service模块发布到本地仓库,我们可以直接发布整个项目。
    在这里插入图片描述

之后按照tomcat插件配置父工程的方式配置web工程即可:
在这里插入图片描述

点击运行箭头即可访问
http://localhost:8080/allStudent

🔥依赖传递失效及解决方案

在这里插入图片描述
之前的案例中,junit是在父工程当中引入的,如果在dao工程引入,service工程引入dao工程,即 service --> dao --> junit 。按照依赖的传递性,service工程也可以使用junit。可实际情况却是无法使用。这就是依赖传递失效问题。
在这里插入图片描述

Maven在定义依赖传递时,一些依赖范围的依赖无法传递,表格如下:
在这里插入图片描述

在实际开发中,不需要记这张表格,遇到依赖没有传递过来时,我们直接在本工程再次添加一遍依赖即可。

<dependencies>
<dependency>
     <groupId>com.itbaizhan</groupId>
	<artifactId>maven_demo2_dao</artifactId>
     <version>1.0-SNAPSHOT</version>
</dependency>

<dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.12</version>
     <scope>test</scope>
</dependency>
</dependencies>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/467759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux交叉编译环境搭建 gcc + openocd + stlink + cubeMX + cortex Debug

文章目录 运行环境&#xff1a;1.1 gcc1)下载并解压gcc2)环境配置 2.1 openocd1)下载并解压openocd2)环境配置&#xff08;没有权限就加sudo&#xff09; 3.1 stlink1)下载并双击安装stlink 4.1 cubeMX1)下载并解压cubeMX2)生成makefile工程 5.1 cortex Debug1)setting设置2)la…

国家信息安全水平考试中NISP二级网络安全证书介绍

国家信息安全水平考试中NISP二级网络安全证书介绍 1、什么是NISP? 国家信息安全水平考试&#xff08;National Information Security Test Program&#xff0c;简称NISP&#xff09;&#xff0c;是由中国信息安全测评中心实施培养国家网络空间安全人才的项目。 2、考取NISP…

电信运营商网络运维方案

随着新一代信息技术加快普及应用&#xff0c;5G、云和人工智能正加速智能社会的到来&#xff0c;三大技术正在重构网络。随着我国5G产业快速推进&#xff0c;中国移动、中国联通、中国电信加快步伐&#xff0c;全业务运营时代已经到来。全业务运营时代的特点是&#xff1a;网络…

ros2 foxy创建一个包和节点-ubuntu20.04

文章目录 创建工作区目录创建包和节点colcon build编译CMakeLists.txt文件find_packageadd_executable package.xml面相过程的方式生命一个节点以面向对象的方式创建一个节点 创建工作区目录 mkdir -p ~/ros2_ws/src cd ~/ros2_ws我们创建了两个目录&#xff0c;ros2_ws和在他…

echarts实用经验:tooltip悬浮框添加button按钮;toolbox添加自定义按钮;显示隐藏切换导致图表太小渲染不及时的解决办法

一、tooltip悬浮框添加点击事件 这里我配置的是在柱状图中&#xff0c;echarts配置项文档 注意&#xff1a; 1、tooltip&#xff0c;默认是鼠标移动时触发&#xff08;‘mousemove’&#xff09;。这种情况下&#xff0c;是无法点击到悬浮框的&#xff0c;更别说点击框内的按钮…

从0到1:拍卖小程序开发的实践经验分享

在当今智能手机普及的时代&#xff0c;拍卖小程序开发正成为越来越多企业的选择。本文将分享在开发拍卖小程序过程中的实践经验。 拍卖小程序开发的重要性 随着移动互联网的发展&#xff0c;拍卖小程序的需求越来越大。开发一个拍卖小程序可以带来多种好处&#xff0c;包括提…

openQA----openQA的架构

【原文链接】openQA----openQA的架构 openQA简介 openQA是一款用于完整的操作系统安装测试的测试工具&#xff0c;它通过创建虚拟机的方式执行测试过程并在每一个测试步骤中检查控制台回显和屏幕结果&#xff0c;并可以通过按键或者命令进入下一个步骤。openQA可以检查操作系…

Windows Java JavaFX IntelliJ IDEA 开发环境搭建 创建工程 编译运行 打包分发 自定义运行时

博文目录 文章目录 本文说明JavaFX 简单说明JavaFX 版本说明JavaFX 与 JDK 的关系JavaFX 与 JDK Modular (JDK 9 模块化系统)JavaFX 模块说明 (JavaFX 20)JavaFX Scene Builder创建 JavaFX 应用程序的两种选择 环境搭建版本选择IntelliJ Idea 安装配置Modular JavaFX Project …

图像质量评价指标FID、LPIPS、NIQE及其代码

文章目录 FIDLPIPSNIQE FID FID的全称是Frchet Inception Distance&#xff0c;用于衡量两个多元正态分布的距离&#xff0c;数值越小越好。具体的&#xff0c;FID使用Inception Net-V3全连接前的2048维向量作为图片的特征向量&#xff0c;再计算两张图像特征之间的距离。 F I…

医疗行业数据库老牌厂商 InterSystems 的新实践

作者 | 宋慧 出品 | CSDN 云计算 数据赛道火爆&#xff0c;呈现了爆发式增长&#xff0c;CSDN 的《新程序员》杂志曾做过主题为“新数据库时代”的系列专题报道&#xff0c;而且从 Gartner2022 年魔力象限也能看到&#xff0c;仍然有众多厂商汇集在云数据库这个领域的象限中。…

使用脚手架新建Vue项目

1.安装阿里云镜像仓库 npm config get registry 然后我们进行安装vue的客户端&#xff0c;npm install -g vue/cli 然后我们可以进行查看版本输入vue --version 然后我们到目录下面新建一个vue项目 vue create 项目名称&#xff08;选择的时候选择Vue2版本&#xff09; 这是第…

C++文件读写类介绍

一、现有的文件读写方案 方案一&#xff1a;采用C标准库读写 该库拥有输入输出模板类及两个标准实例化集&#xff1a;一个是用于操作char类型元素的实例化集(即常用的cin&#xff0c;cout等)&#xff0c;另一个用于操作wchar_t类型元素的实例化集。 模板类以basic_作为前缀&…

CentOS----本地YUM源配置

1.cd /etc/yum.repos.d 2. cp -p CentOS-Media.repo M.repo mkdir yuan mv CentOS-* yuan 3. vi M.repo (修改配置文件内容如下,/mnt/cdrom 为yum源目录) 4.创建挂载目录 和 上面配置文件中file:///mnt/cdrom 一致 mkdir -p /mnt/cdrom 5.将本地yum 挂载到刚创建的文件…

【思考】聊聊低代码的实践之路

文章目录 背景一、最初的疑惑二、简单聊聊原理三、组织内实践案例四、实践带来的反思五、最后聊几句问题 背景 这个概念由来已久&#xff0c;但是在国内兴起&#xff0c;是最近几年&#xff1b; 低代码即Low-Code&#xff1b; 指提供可视化开发环境&#xff0c;可以用来创建和…

(一)Kubernetes - 介绍

Kubernetes介绍 1. 介绍1.1 什么是Kubernetes1.2 K8s主要功能1.3 K8s架构1.4 K8S核心概念1.5 完整流程 2. K8S安装方式选择2.1 kubeadm2.2 手动部署(二进制)2.3 Rancher2.4 kubespray 3. 思维导图 1. 介绍 1.1 什么是Kubernetes ​ Kubernetes是Google公司在2014年6月开源的一…

根据cadence设计图学习硬件知识day06 了解一些电源转化芯片和 稳压器 和 开关芯片

1. TPL920 (高精度线性稳压器) 1.1.TPL920 介绍 TPL920系列产品是2A大电流、6μVRMS低噪声、高PSRR、高精度线性稳压器&#xff0c;通常具有在2A负载条件下的110 mV超低电压降。这TPL920系列产品同时支持固定输出电压范围从0.8伏到3.95伏&#xff0c;输出电压可调范围为0.8V至…

d2l BERT预训练(model+dataset*+train)

千呼万唤始出来&#xff0c;终于来到了bert。本篇博客先介绍预训练部分&#xff0c;dataset部分只介绍简洁输入输出&#xff0c;详细的另行更新新的blog。 目录 1.model 1.1bert总述 1.2输入表示 1.3Encoder 1.3.1验证输出 1.4掩敝语言模型mlm 1.4.1forward探索 Layer…

有什么台灯性价比高又实惠的品牌?护眼台灯性价比高的led大灯

不管你处在学生被动学习还是上班后主动学习的阶段&#xff0c;为自己挑选一款合适的台灯非常重要&#xff0c;因为夜晚的氛围能达到很高的学习效率&#xff0c;而台灯可以保证我们有一个舒适的阅读感受。那在为学习需求挑选台灯时&#xff0c;不应该以平价作为选购标准&#xf…

FA-PEG-Silane 叶酸-聚乙二醇-硅烷 Silane-PEG2000-FA,PEG分子量2000

FA-PEG-Silane 叶酸-聚乙二醇-硅烷 中文名称&#xff1a;叶酸聚乙二醇硅烷 英文名称&#xff1a;FA-PEG-Silane&#xff0c;Folic acid PEG Silane 性状&#xff1a;液体或者固体&#xff0c;取决于分子量 溶剂&#xff1a;溶于水、DMSO、DMF等常规性有机溶剂 分子量&…

第十二讲 常用数据结构之集合

在学习了列表和元组之后&#xff0c;我们再来学习一种容器型的数据类型&#xff0c;它的名字叫集合&#xff08;set&#xff09;。说到集合这个词大家一定不会陌生&#xff0c;在数学课本上就有这个概念。如果我们把一定范围的、确定的、可以区别的事物当作一个整体来看待&…