用户信息列表展示案例

〇、写在前面 本文是【黑马程序员】用户信息列表展示案例的实践。
本文实践所需资料(jar包、页面、配置文件)下载地址为:案例资料(提取码:java)。
(前排提醒:不要用MySQL 8.x!我踩坑踩了好久!MySQL 5.x就很好!)
一、需求 用户信息的增删改查操作。
二、设计 技术选型:Servlet + JSP + MySQL + JDBCTempleat + Duird + BeanUtilS + Tomcat
数据库设计:

CREATE DATABASE demo2; USE demo2; CREATE TABLE user( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL, gender VARCHAR(5), age INT, address VARCHAR(32), qq VARCHAR(20), email VARCHAR(50) );

【用户信息列表展示案例】使用SQLyog图形管理MySQL。用户信息列表展示案例
文章图片

三、开发 (一)数据库环境
CREATE DATABASE demo2; USE demo2; CREATE TABLE user( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL, gender VARCHAR(5), age INT, address VARCHAR(32), qq VARCHAR(20), email VARCHAR(50) );

(二)项目环境
  1. 在IDEA中创建JavaEE项目。用户信息列表展示案例
    文章图片
  2. 在IDEA集成配置Tomcat服务器。用户信息列表展示案例
    文章图片
    用户信息列表展示案例
    文章图片
  3. 导入jar包。
    新建src/main/webapp/WEB-INF/lib文件夹,将下载资料中的jar包复制到lib文件夹中。
    全选中后,右键 -> Add as Library用户信息列表展示案例
    文章图片
  4. 添加案例页面。
    将下载资料中页面文件夹中的所有文件、文件夹复制粘贴到本项目的src/main/webapp文件夹中。
    项目目录如下:用户信息列表展示案例
    文章图片
  5. 修改配置文件。
    将下载资料中的配置文件中的druid.properties复制粘贴到src/main/resources文件夹中。修改配置文件内容(数据库名、MySQL用户名、MySQL密码):
    driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql:///demo2 username=root password=你的数据库密码 # 初始化连接数量 initialSize=5 # 最大连接数 maxActive=10 # 最大等待时间 maxWait=3000

  6. 创建包。在src/main/java/com/.../demo2中domain、web、service、dao、util包。用户信息列表展示案例
    文章图片
  7. 测试。
    启动Tomcat服务器,访问http://localhost:8080/虚拟路径/index.html。(虚拟路径为第二步中Tomcat配置的虚拟路径。本文的虚拟路径为demo2。)
    如能正常交互则项目环境搭建成功。
(三)编码 domain/User.java
根据数据库设计编写User实体类。使用IDEA快捷键Alt + Insert快速生成构造器、Get/Set方法、toString方法。
package com.shadowck.demo2.domain; public class User { private int id; private String name; private String gender; private int age; private String address; private String qq; private String email; public User() { }public User(int id, String name, String gender, int age, String address, String qq, String email) { this.id = id; this.name = name; this.gender = gender; this.age = age; this.address = address; this.qq = qq; this.email = email; }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 getGender() { return gender; }public void setGender(String gender) { this.gender = gender; }public int getAge() { return age; }public void setAge(int age) { this.age = age; }public String getAddress() { return address; }public void setAddress(String address) { this.address = address; }public String getQq() { return qq; }public void setQq(String qq) { this.qq = qq; }public String getEmail() { return email; }public void setEmail(String email) { this.email = email; }@Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", gender='" + gender + '\'' + ", age=" + age + ", address='" + address + '\'' + ", qq='" + qq + '\'' + ", email='" + email + '\'' + '}'; } }

util/JDBCUtils.java
将下载资料中配置文件文件夹中JDBCUtils.java的内容复制粘贴即可。
package com.shadowck.demo2.util; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import javax.xml.crypto.Data; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; /** * JDBC工具类 使用Durid连接池 */ public class JDBCUtils {private static DataSource ds ; static {try { //1.加载配置文件 Properties pro = new Properties(); //使用ClassLoader加载配置文件,获取字节输入流 InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"); pro.load(is); //2.初始化连接池对象 ds = DruidDataSourceFactory.createDataSource(pro); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }/** * 获取连接池对象 */ public static DataSource getDataSource(){ return ds; }/** * 获取连接Connection对象 */ public static Connection getConnection() throws SQLException { returnds.getConnection(); } }

dao/UserDAO.java
编写用户操作的DAO。
package com.shadowck.demo2.dao; import com.shadowck.demo2.domain.User; import java.util.List; public interface UserDAO {public List findAll(); }

dao/impl/UserDAOImpl.java
package com.shadowck.demo2.dao.impl; import com.shadowck.demo2.dao.UserDAO; import com.shadowck.demo2.domain.User; import com.shadowck.demo2.util.JDBCUtils; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import java.util.List; public class UserDAOImpl implements UserDAO {private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); @Override public List findAll() {//1. 定义sql String sql = "SELECT * FROM user"; List users = template.query(sql, new BeanPropertyRowMapper(User.class)); return users; } }

service/UserService.java
编写用户管理的业务接口。
package com.shadowck.demo2.service; import com.shadowck.demo2.domain.User; import java.util.List; public interface UserService {public List findAll(); }

service/impl/UserServiceImpl.java
package com.shadowck.demo2.service.Impl; import com.shadowck.demo2.dao.UserDAO; import com.shadowck.demo2.dao.impl.UserDAOImpl; import com.shadowck.demo2.domain.User; import com.shadowck.demo2.service.UserService; import java.util.List; public class UserServiceImpl implements UserService {private UserDAO dao = new UserDAOImpl(); @Override public List findAll() { //调用DAO return dao.findAll(); } }

index.jsp
index.html的内容复制后进行改动。注意使用EL表达式动态获取虚拟目录:${pageContext.request.contextPath}
首页查询所有用户信息

web/servlet/UserListServlet.java
package com.shadowck.demo2.web.servlet; import com.shadowck.demo2.domain.User; import com.shadowck.demo2.service.Impl.UserServiceImpl; 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("/userListServlet") public class UserListServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1. 调用userService完成查询。 UserServiceImpl service = new UserServiceImpl(); List users = service.findAll(); //2. 将List存入request域 req.setAttribute("user", users); //3. 转发到list.jsp req.getRequestDispatcher("/list.jsp").forward(req, resp); }@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } }

list.jsp
用户信息管理系统td, th { text-align: center; }用户信息列表
编号 姓名 性别 年龄 籍贯 QQ 邮箱 操作
${s.count} ${user.name} ${user.gender} ${user.age} ${user.address} ${user.qq} ${user.email} 修改  删除
添加联系人

    推荐阅读