用户信息列表展示案例
〇、写在前面
本文是【黑马程序员】用户信息列表展示案例的实践。
本文实践所需资料(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)
);
(二)项目环境
- 在IDEA中创建JavaEE项目。
文章图片
- 在IDEA集成配置Tomcat服务器。
文章图片
文章图片
- 导入jar包。
新建src/main/webapp/WEB-INF/lib
文件夹,将下载资料中的jar包
复制到lib文件夹中。
全选中后,右键 -> Add as Library
。
文章图片
- 添加案例页面。
将下载资料中页面
文件夹中的所有文件、文件夹复制粘贴到本项目的src/main/webapp
文件夹中。
项目目录如下:
文章图片
- 修改配置文件。
将下载资料中的配置文件
中的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
- 创建包。在
src/main/java/com/.../demo2
中domain、web、service、dao、util包。
文章图片
- 测试。
启动Tomcat服务器,访问http://localhost:8080/虚拟路径/index.html
。(虚拟路径为第二步中Tomcat配置的虚拟路径。本文的虚拟路径为demo2
。)
如能正常交互则项目环境搭建成功。
根据数据库设计编写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}
修改
删除
添加联系人
推荐阅读
- 书评——《小行星》
- 编写字典程序
- 魔灵末路?第二十八章
- 精细化的思考
- 用科学的思维做最好的自己
- cocosbcx白皮书解读(一)|cocosbcx白皮书解读(一)| 区块链如何统一开发者、发行商、用户之间的利益
- java|java b2b2c shop 多用户商城系统源码- config 修改配置
- 何以解忧,企业信息化、数字化选型焦虑之五·系统安全隐患大
- 学习与知识管理
- 借呗用户被银行拉黑贷不到款(马云(怪我咯?))