项目管理与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>


相关文章
|
3月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
13天前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
31 0
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
3月前
|
Java 数据库连接 Maven
SSM框架整合图书管理项目
这篇文章是关于SSM框架整合到图书管理项目的详细教程,涵盖了从Maven项目构建、依赖导入、数据库连接、配置文件编写、实体类和接口实现到SpringMVC整合的完整步骤。
SSM框架整合图书管理项目
|
2月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
35 0
|
3月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
52 1
|
3月前
|
Java 应用服务中间件 Maven
Mac使用Idea配置传统SSM项目(非maven项目)
Mac使用Idea配置传统SSM项目(非maven项目)
54 1
|
3月前
|
Java 数据库
使用ssm框架搭建的图书管理系统
本文介绍了使用SSM框架搭建的图书管理系统,包括图书信息管理、借阅记录管理、公告管理、出入库管理以及用户管理等功能。
使用ssm框架搭建的图书管理系统
|
4月前
|
Java 编译器 项目管理
如何在Java中使用Maven进行项目管理
如何在Java中使用Maven进行项目管理
|
5月前
|
Java
SSM框架Controller层可以做什么
SSM框架Controller层可以做什么

推荐镜像

更多