最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Maven聚合開發(fā)實(shí)例詳解

 更新時(shí)間:2023年03月20日 14:18:34   作者:會(huì)洗碗的CV工程師  
這篇文章主要介紹了Maven聚合開發(fā)實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、Maven聚合開發(fā)_繼承關(guān)系

        Maven中的繼承是針對(duì)于父工程和子工程。父工程定義的依賴和插件子工程可以直接使用。注意父工程類型一定為POM類型工程。

多繼承

        在Maven中對(duì)于繼承采用的也是單繼承,也就是說一個(gè)子項(xiàng)目只能有一個(gè)父項(xiàng)目。但我們可以在 <dependencyManagement> 配置多繼承的。

寫法如下:

二、Maven聚合案例

1. 搭建dao模塊

dao子工程中一般寫實(shí)體類和dao層:

在父工程下創(chuàng)建maven模塊,不選擇模板,創(chuàng)建時(shí)一定要選擇父工程。

子模塊的pom文件中寫入父工程證明繼承成功。 如下圖所示:

準(zhǔn)備數(shù)據(jù)庫(kù) 

//新建數(shù)據(jù)庫(kù)
CREATE DATABASE student;
 
//建表
CREATE TABLE student(
  id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name varchar(255) DEFAULT NULL,
  sex varchar(10) DEFAULT NULL,
  address varchar(255) DEFAULT NULL 
)ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT
CHARSET=utf8
 
//插入數(shù)據(jù)
insert into student values(1,'幾何心涼','男','北京');
insert into student values(2,'哈士奇','女','上海');

編寫實(shí)體類 Student

package com.mavenstudy.pojo;
 
public class Student {
    private int id;
    private String name;
    private String sex;
    private String address;
 
    public Student(){
 
    }
 
    public Student(int id, String name, String sex, String address) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.address = address;
    }
 
    public int getId() {
        return id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getSex() {
        return sex;
    }
 
    public void setSex(String sex) {
        this.sex = sex;
    }
 
    public String getAddress() {
        return address;
    }
 
    public void setAddress(String address) {
        this.address = address;
    }
 
    @Override
    public String toString() {
        return "Student [" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                ']';
    }
}

在resources中編寫連接數(shù)據(jù)庫(kù)的配置文件db.properties,

編寫dao類和對(duì)應(yīng)的方法

package com.mavenstudy.dao;
 
import com.mavenstudy.pojo.Student;
 
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
 
public class StudentDao {
    //查詢所有學(xué)生
    public List<Student> findAll() throws Exception{
        //讀取配置文件
        Properties properties = new Properties();
        InputStream is = this.getClass().getClassLoader().getResourceAsStream("db.properties");
        properties.load(is);
 
        String url = properties.getProperty("jdbc.url");
        String user = properties.getProperty("jdbc.user");
        String password = properties.getProperty("jdbc.password");
 
        //查詢數(shù)據(jù)庫(kù)
        Connection connection = DriverManager.getConnection(url,user,password);
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery("select * from student");
 
        //處理結(jié)果集
        List<Student> students = new ArrayList<>();
        while(resultSet.next()){
            int id = resultSet.getInt(1);
            String name = resultSet.getString(2);
            String sex = resultSet.getString(3);
            String address = resultSet.getString(4);
 
            Student student = new Student(id,name,sex,address);
            students.add(student);
        }
 
        //釋放資源
        resultSet.close();
        statement.close();
        connection.close();
 
        return students;
    }
}

測(cè)試dao方法 這里我們可以用到Junit這個(gè)注解來幫我們測(cè)試

現(xiàn)在讓我們來運(yùn)行一下是否真的能夠執(zhí)行吧!

OK!,確實(shí)是沒有問題的,那接下來我們搭建service模塊

2. 搭建service模塊  

service子工程中一般寫service層的內(nèi)容,也需要繼承父工程,由于需要調(diào)用dao子工程的方法,所以需要導(dǎo)入dao子工程的依賴。

在父工程下創(chuàng)建maven模塊,不選擇模板,選擇父工程。(這里和上面都是一樣的就不截圖了)

在service模塊的pom文件中引入dao子工程的依賴。

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

編寫Service類和對(duì)應(yīng)的方法

package com.mavenstudy.service;
 
import com.mavenstudy.dao.StudentDao;
import com.mavenstudy.pojo.Student;
 
import java.util.List;
 
public class StudentService {
    private StudentDao studentDao = new StudentDao();
 
    public List<Student> findAllStudent() throws Exception{
        return studentDao.findAll();
    }
}

編寫測(cè)試service方法

package com.mavenstudy.service;
 
import com.mavenstudy.pojo.Student;
import org.junit.Test;
 
import java.util.List;
 
public class StudentServiceTest {
    //測(cè)試findAllStudent
    @Test
    public void findAllStudentTest() throws Exception {
        StudentService studentService = new StudentService();
        List<Student> students = studentService.findAllStudent();
        students.forEach(System.out::println);
    }
}

測(cè)試結(jié)果

OK!結(jié)果還是和我們預(yù)想的一樣,接下來讓我們搭建web模塊吧!

3. 搭建web模塊 

web子工程中一般要寫控制器和前端頁(yè)面的內(nèi)容。它不是普通的java工程,而是一個(gè)web工程,需要繼承父工程,導(dǎo)入service子工程的依賴。

在父工程下創(chuàng)建maven模塊,選擇web工程模板,選擇父工程。

創(chuàng)建好后,添加父工程,刪除pom文件中的jdk編譯版本,刪掉junit依賴,引入service依賴。

<dependencies>
    <dependency>
      <groupId>com.mavenstudy</groupId>
      <artifactId>maven_demo2_service</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

編寫控制器,F(xiàn)indAllStudentServlet類

package com.mavenstudy.servlet;
 
import com.mavenstudy.pojo.Student;
import com.mavenstudy.service.StudentService;
 
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
 
@WebServlet("/allStudent")
public class FindAllStudentServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        StudentService studentService = new StudentService();
        List<Student> students = null;
        try {
            students = studentService.findAllStudent();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        req.setAttribute("students",students);
 
        req.getRequestDispatcher("allStudent.jsp").forward(req,resp);
    }
}

編寫JSP頁(yè)面 ,其中我們需要用到EL表達(dá)式,但是maven是默認(rèn)不識(shí)別EL表達(dá)式的,所以我們需要加上一個(gè)屬性  isELIgnored="false" 和 一個(gè)引入

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

顯示所有學(xué)生信息的jsp頁(yè)面

<%@ 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>
      全部學(xué)生
    </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="${students}" 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>

4. 運(yùn)行項(xiàng)目

配置tomcat插件運(yùn)行父工程,此時(shí)會(huì)自動(dòng)聚合運(yùn)行項(xiàng)目。

 點(diǎn)開配置tomcat7插件 

OK!配置完點(diǎn)擊運(yùn)行按鈕即可 ,下面就是運(yùn)行結(jié)果

到此這篇關(guān)于Maven聚合開發(fā)的文章就介紹到這了,更多相關(guān)Maven聚合開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot+WebSocket搭建簡(jiǎn)單的多人聊天系統(tǒng)

    SpringBoot+WebSocket搭建簡(jiǎn)單的多人聊天系統(tǒng)

    WebSocket是一種在單個(gè)TCP連接上進(jìn)行全雙工通信的協(xié)議。這是一種比較官方的說法,簡(jiǎn)單點(diǎn)來說就是,在一次TCP連接中,通信的雙方可以相互通信。這篇文章主要介紹了SpringBoot+WebSocket搭建簡(jiǎn)單的多人聊天系統(tǒng),需要的朋友可以參考下
    2019-10-10
  • SpringBoot與JWT整合方式

    SpringBoot與JWT整合方式

    文章介紹了如何在Spring?Boot項(xiàng)目中整合JWT(JSON?Web?Token),包括JWT的結(jié)構(gòu)、使用方法、測(cè)試以及配置,主要內(nèi)容涵蓋了依賴配置、數(shù)據(jù)庫(kù)表設(shè)計(jì)、實(shí)體類、數(shù)據(jù)訪問層、服務(wù)層、JWT工具類、攔截器配置和控制器測(cè)試等多個(gè)方面
    2024-11-11
  • SpringMVC中RequestMapping注解(作用、出現(xiàn)的位置、屬性)

    SpringMVC中RequestMapping注解(作用、出現(xiàn)的位置、屬性)

    這篇文章主要介紹了SpringMVC中RequestMapping注解(作用、出現(xiàn)的位置、屬性),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • SpringBoot簡(jiǎn)單的SpringBoot后端實(shí)例

    SpringBoot簡(jiǎn)單的SpringBoot后端實(shí)例

    這篇文章主要介紹了SpringBoot簡(jiǎn)單的SpringBoot后端實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • SpringBoot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)

    SpringBoot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)

    這篇文章主要為大家詳細(xì)介紹了SpringBoot如何整合quartz實(shí)現(xiàn)定時(shí)任務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • SpringBoot文件上傳(本地存儲(chǔ))回顯前端操作方法

    SpringBoot文件上傳(本地存儲(chǔ))回顯前端操作方法

    這篇文章主要介紹了SpringBoot文件上傳(本地存儲(chǔ))回顯前端操作方法的相關(guān)資料,文中講解了文件上傳的基本原理,包括前端調(diào)用后端接口上傳文件,后端返回文件路徑給前端,前端通過路徑訪問圖片,需要的朋友可以參考下
    2024-11-11
  • 詳解java中static關(guān)鍵詞的作用

    詳解java中static關(guān)鍵詞的作用

    這篇文章主要介紹了java中static關(guān)鍵詞的作用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java8之函數(shù)式接口及常用函數(shù)式接口講解

    Java8之函數(shù)式接口及常用函數(shù)式接口講解

    這篇文章主要介紹了Java8之函數(shù)式接口及常用函數(shù)式接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • @Transactional遇到try catch失效的問題

    @Transactional遇到try catch失效的問題

    這篇文章主要介紹了@Transactional遇到try catch失效的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring security權(quán)限配置與使用大全

    Spring security權(quán)限配置與使用大全

    Spring Security 本質(zhì)上是借助一系列的 Servlet Filter來提供各種安全性功能,但這并不需要我們手動(dòng)去添加或者創(chuàng)建多個(gè)Filter,本文重點(diǎn)給大家介紹spring-security的配置與使用及實(shí)現(xiàn)方式,感興趣的朋友一起看看吧
    2021-09-09

最新評(píng)論

虞城县| 嘉禾县| 日土县| 怀远县| 屯昌县| 丰台区| 涟水县| 社会| 高阳县| 安庆市| 武冈市| 金阳县| 株洲县| 平顺县| 油尖旺区| 海林市| 泊头市| 来安县| 阿坝| 达日县| 隆子县| 崇礼县| 巧家县| 曲水县| 长沙县| 富顺县| 岳普湖县| 连州市| 繁峙县| 鹤峰县| 安平县| 河津市| 宁海县| 得荣县| 阿拉尔市| 金华市| 文昌市| 湟源县| 屏东市| 垦利县| 余江县|