项目管理与SSM框架 Maven(四)

简介: 项目管理与SSM框架 Maven(四)

5.3 搭建dao模块

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

1、在父工程下创建maven模块,不选择模板,创建时一定要选择父工程。

2、准备数据库

3、编写实体类

public class User {
    private int userid;
    private String username;
    private String userpwd;
    private String usersex;
    private String phonenumber;
    private String qqnumber;
//构造方法,get\set方法略
}

4、在resources中编写连接数据库的配置文件db.properties

#本地数据库localhost可以省略
jdbc.url=jdbc:mysql:///test
jdbc.user=root
jdbc.password=123456

5、编写dao方法

package com.zj.dao;
import com.zj.pojo.User;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class UserDao {
    //查询全部用户
    public List<User> getUsers() throws IOException, SQLException {
        User user = null;
        //使用工具类读取配置文件
        Properties properties = new Properties();
        InputStream resourceAsStream = UserDao.class.getClassLoader().getResourceAsStream("db.properties");
        properties.load(resourceAsStream);
        String url = properties.getProperty("jdbc.url");
        String username = properties.getProperty("jdbc.user");
        String password = properties.getProperty("jdbc.password");
        //查询数据库
        Connection connection = DriverManager.getConnection(url, username, password);
        PreparedStatement ps = connection.prepareStatement("SELECT * FROM users");
        ResultSet resultSet = ps.executeQuery();
        //处理结果集
        List<User> users = new ArrayList<>();
        while (resultSet.next()) {
            int userid = resultSet.getInt("userid");
            String username1 = resultSet.getString("username");
            String userpwd = resultSet.getString("userpwd");
            String usersex = resultSet.getString("usersex");
            String phonenumber = resultSet.getString("phonenumber");
            String qqnumber = resultSet.getString("qqnumber");
            user = new User(userid, username1, userpwd, usersex,phonenumber,qqnumber);
            users.add(user);
        }
        //释放资源,注意关闭资源的顺序。
        resultSet.close();
        ps.close();
        connection.close();
        return users;
    }
}

6、测试dao方法

package com.zj.dao;
import com.zj.pojo.User;
import org.junit.Test;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
public class UserDaoTest {
    @Test
    public void testGetUsers() throws IOException, SQLException {
        UserDao userDao = new UserDao();
        List<User> users = userDao.getUsers();
        for (User user : users) {
            System.out.println(user);
        }
    }
}

测试结果:

5.4 搭建service模块

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

1、在父工程下创建maven模块,不选择模板,选择父工程。

2、在service模块的pom文件中引入dao子工程的依赖。

<dependencies>
        <!--service依赖dao-->
        <dependency>
            <groupId>com.zj</groupId>
            <artifactId>maven2_dao</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

3、编写Service方法

package com.zj.service;
import com.zj.dao.UserDao;
import com.zj.pojo.User;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
public class UserService {
  private UserDao userDao = new UserDao();
    //查询全部
    public List<User> getUsers() throws IOException, SQLException {
          return userDao.getUsers();
    }
}

4、测试service方法

package com.zj.service;
import com.zj.pojo.User;
import org.junit.Test;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
public class TestUserService {
    @Test
    public void TestGetUsers() throws IOException, SQLException {
        UserService userService = new UserService();
        List<User> users = userService.getUsers();
        for (User user : users) {
            System.out.println(user);
        }
    }
}

5.5 搭建web模块

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

1、在父工程下创建maven模块,选择web工程模板,选择父工程。

2、引入service模块

<dependencies>
        <dependency>
            <groupId>com.zj</groupId>
            <artifactId>maven2_service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

3、编写控制器

package com.zj.servlet;
import com.zj.pojo.User;
import com.zj.service.UserService;
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.sql.SQLException;
import java.util.List;
@WebServlet("/get")
public class GetAllUsersServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        UserService userService = new UserService();
        try {
            List<User> users = userService.getUsers();
            req.setAttribute("users", users);
            req.getRequestDispatcher("all.jsp").forward(req, resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

4、编写前端页面

<%@ 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</title>
</head>
<body>
<table border="1" align="center">
    <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>性别</th>
        <th>密码</th>
        <th>电话</th>
        <th>QQ</th>
    </tr>
<c:forEach items="${list}" var="user">
    <tr>
        <td>${user.userid}</td>
        <td>${user.username}</td>
        <td>${user.usersex}</td>
        <td>${user.userpwd}</td>
        <td>${user.phonenumber}</td>
        <td>${user.qqnumber}</td>
    </tr>
</c:forEach>
</table>
</body>
</html>

千万注意:使用EL表达式的时候一定加上isELIgnored 属性。要不不能使用。

5.6 运行项目

配置tomcat插件运行父工程,此时会自动聚合运行项目。

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

之前的案例中,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>


相关文章
|
30天前
|
Java 项目管理 Maven
Maven项目管理与构建自动化完全指南
Maven彻底改变了Java项目管理方式,通过POM模型、依赖管理和标准化构建流程,大幅提升开发效率。本文深入解析其核心概念、多模块管理、私服搭建及与Spring Boot、Docker等现代技术栈的集成实践,助力开发者实现高效、规范的项目构建与团队协作。
Maven项目管理与构建自动化完全指南
|
4月前
|
SQL Java 数据库连接
2-SSM框架篇
Spring框架核心知识点总结,涵盖IOC、DI、Bean作用域、事务管理、AOP、Spring MVC流程及MyBatis相关问题。内容包括控制反转与依赖注入原理、Bean生命周期与线程安全、事务传播机制、JDK与CGLIB代理区别、MyBatis动态SQL与缓存机制等高频面试题。
65 0
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
8月前
|
前端开发 Java 数据库连接
Spring MVC 扩展和SSM框架整合
通过以上步骤,我们可以将Spring MVC扩展并整合到SSM框架中。这个过程包括配置Spring MVC和Spring的核心配置文件,创建控制器、服务层和MyBatis的Mapper接口及映射文件。在实际开发中,可以根据具体业务需求进行进一步的扩展和优化,以构建更加灵活和高效的企业级应用程序。
177 5
|
9月前
|
Java 关系型数据库 MySQL
ssm063基于SSM框架的德云社票务系统的设计与实现(文档+源码)_kaic
基于SSM框架的德云社票务系统旨在解决传统相声订票方式费时费力的问题,提供便捷的在线订票平台。系统采用Java技术、MySQL数据库,结合B/S架构,确保数据安全性和操作简便性。用户可轻松查询、预订相声票务信息,管理员则能高效管理票务和会员信息。该系统功能齐全、运行稳定,适用于现代信息化生活需求,有效提升德云社的票务管理效率与用户体验。
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
12月前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
279 0
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
168 1
|
Java 应用服务中间件 Maven
Mac使用Idea配置传统SSM项目(非maven项目)
Mac使用Idea配置传统SSM项目(非maven项目)
169 1
|
Java 数据库
使用ssm框架搭建的图书管理系统
本文介绍了使用SSM框架搭建的图书管理系统,包括图书信息管理、借阅记录管理、公告管理、出入库管理以及用户管理等功能。
使用ssm框架搭建的图书管理系统

推荐镜像

更多