人员信息管理

页面总体效果如下所示:

点击删除之后会删除掉选中的这一行只显示剩下几行内容,点击添加用户之后会跳转到一个新的页面需要你填入新增的人员信息点击添加即可,点击更新之后同样会跳转到一个新的页面这个页面会显示原来的信息。你只需要把要修改的信息修改完成点击确认就可以更新成功了。

效果展示一 :

总体图

效果展示二:

点击添加用户后跳转到如下图显示的添加人员信息页面
添加

效果展示三:

点击孙悟空后面的更新之后跳转到如下图显示的更新页面,修改原有信息点击确认即可
在这里插入图片描述

  1. 准备设计数据库
    1.1建立一个名为UserManager的数据库.列表
    1.2在数据库里建立一个名为users的表并添加几条数据.
    内容
  2. 实现对数据库人员信息的增删改查:(使用MVC三层架构
项目列表展示

在这里插入图片描述
2.1 在bean包中新建User.Java类(人员类)

package com.hnpi.bean;public class User {private Integer id;private String name;private String sex;private Integer age;private String phone;private String address;public Integer getId() {return id;}public void setId(Integer 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 Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public User() {super();// TODO Auto-generated constructor stub}}

2.2 在Service包里新建一个UserService.java接口

package com.hnpi.service;import java.util.List;import com.hnpi.bean.User;public interface UserSevice {List<User> list();boolean	delUser(Integer id);boolean	delUser(User user);boolean addUser(User add);boolean updateUser(User update);}

2.3 在Service包里的Impl包里新建一个UserServiceImpl.java实现类(注意新建的时候一定要实现UserService.java的接口)

package com.hnpi.service.impl;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.hnpi.bean.User;
import com.hnpi.service.UserSevice;
import com.hnpi.util.DBUtil;public class UserServiceImpl implements UserSevice {//查询public List<User> list() {List<User> users = new ArrayList<User>();// TODO 从数据库中获取数据,然后组装成List<User> 然后返回Connection conn = DBUtil.getConn();String sql = "select * from users";PreparedStatement ps = null;ResultSet rs = null;try {ps = conn.prepareStatement(sql);rs = ps.executeQuery();while (rs.next()) {User user = new User();user.setId(rs.getInt(1));user.setName(rs.getString(2));user.setSex(rs.getString(3));user.setAge(rs.getInt(4));user.setPhone(rs.getString(5));user.setAddress(rs.getString(6));users.add(user);}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closeConn(conn, ps, null);}return users;}//删除public boolean delUser(Integer id) {Connection conn = DBUtil.getConn();String sql = "delete from users where id = ?";PreparedStatement ps = null;int count = 0;try {ps = conn.prepareStatement(sql);ps.setInt(1, id);count = ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closeConn(conn, ps, null);}if (count > 0)return true;elsereturn false;}//删除public boolean delUser(User user) {Connection conn = DBUtil.getConn();String sql = "delete from users where id = ?";PreparedStatement ps = null;int count = 0;try {ps = conn.prepareStatement(sql);ps.setInt(1, user.getId());count = ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closeConn(conn, ps, null);}if (count > 0)return true;elsereturn false;}//添加public boolean addUser(User add) {Connection conn = DBUtil.getConn();String sql="insert into users(name,sex,age,phone,address)values(?,?,?,?,?)";PreparedStatement ps = null;int count = 0;try {ps = conn.prepareStatement(sql);ps.setString(1, add.getName());ps.setString(2, add.getSex());ps.setInt(3, add.getAge());ps.setString(4, add.getPhone());ps.setString(5, add.getAddress());count = ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closeConn(conn, ps, null);}if (count > 0)return true;elsereturn false;}//更新public boolean updateUser(User update) {Connection conn = DBUtil.getConn();String sql="update users set name=?,sex=?,age=?,phone=?,address=? where id=?";PreparedStatement ps = null;int count = 0;try {ps = conn.prepareStatement(sql);ps.setInt(6, update.getId());ps.setString(1, update.getName());ps.setString(2, update.getSex());ps.setInt(3, update.getAge());ps.setString(4, update.getPhone());ps.setString(5, update.getAddress());count = ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closeConn(conn, ps, null);}if (count > 0)return true;elsereturn false;}}

2.4 创建四个Servlet分别实现对人员的增改删查
2.4.1 UserListServlet.java 查询

package com.hnpi.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.hnpi.bean.User;
import com.hnpi.service.UserSevice;
import com.hnpi.service.impl.UserServiceImpl;
import com.hnpi.util.DBUtil;public class UserListServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 从数据库中获取数据 并且显示在userList.jsp中UserSevice userSevice = new UserServiceImpl();List<User> users = userSevice.list();HttpSession session = request.getSession();session.setAttribute("userList", users);request.getRequestDispatcher("userList.jsp").forward(request, response);}}

2.4.2 UserAddServlet.java 增加

package com.hnpi.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.hnpi.bean.User;
import com.hnpi.service.UserSevice;
import com.hnpi.service.impl.UserServiceImpl;public class UserAddServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");//获取内容String name = request.getParameter("name");String sex = request.getParameter("sex");String  age = request.getParameter("age");String phone = request.getParameter("phone");String address = request.getParameter("address");UserSevice userSevice = new UserServiceImpl();User add = new User();add.setName(name);add.setSex(sex);add.setAge(Integer.parseInt(age));add.setPhone(phone);add.setAddress(address);if (userSevice.addUser(add)) {// 成功!response.sendRedirect("userList");} else {// 失败!response.sendRedirect("userList");}}}

2.4.3 UserDelServlet.java 删除

package com.hnpi.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.hnpi.bean.User;
import com.hnpi.service.UserSevice;
import com.hnpi.service.impl.UserServiceImpl;public class UserDelServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 删除// 1:获取所要删除的idString idStr = request.getParameter("id");// 2:根据id删除数据UserSevice userSevice = new UserServiceImpl();User user = new User();user.setId(Integer.parseInt(idStr));if (userSevice.delUser(user)) {// 成功!response.sendRedirect("userList");} else {// 失败!response.sendRedirect("userList");}}}

2.4.4 UserUpdateServlet.java 更新

package com.hnpi.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.hnpi.bean.User;
import com.hnpi.service.UserSevice;
import com.hnpi.service.impl.UserServiceImpl;public class UserUpdateServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");String id = request.getParameter("id");String name = request.getParameter("name");String sex = request.getParameter("sex");String age = request.getParameter("age");String phone = request.getParameter("phone");String address = request.getParameter("address");UserSevice userSevice = new UserServiceImpl();User update = new User();update.setId(Integer.parseInt(id));update.setName(name);update.setSex(sex);update.setAge(Integer.parseInt(age));update.setPhone(phone);update.setAddress(address);if (userSevice.updateUser(update)) {// 成功!response.sendRedirect("userList");} else {// 失败!response.sendRedirect("userList");}}}

2.5 在util包里新建一个DBUtil.java类(这个类十分重要,实现对数据库的链接)

package com.hnpi.util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class DBUtil {public static Connection getConn() {String url = "jdbc:sqlserver://localhost:1433;databaseName=UserManager";String user = "sa";String pwd = "1";Connection conn = null;try {Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");conn = DriverManager.getConnection(url, user, pwd);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;}public static void closeConn(Connection conn, PreparedStatement ps,ResultSet rs) {try {if (conn != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}try {if (ps != null) {ps.close();}} catch (SQLException e) {e.printStackTrace();}try {if (rs != null) {rs.close();}} catch (SQLException e) {e.printStackTrace();}}}

2.6 JSP页面一共需要三个(查询,增加,更新)
2.6.1 userList.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%String path = request.getContextPath();String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><c:forEach items="${sessionScope.userList}" var="user"varStatus="status">${user.name} ${user.sex} ${user.age} ${user.phone} ${user.address}<a href="userDel?id=${user.id}">删除</a><a href="updateUser.jsp?id=${user.id}">更新</a><br /></c:forEach><hr><a href="addUser.jsp">添加用户</a></body>
</html>

2.6.2 addUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'addUser.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="addUser" method="post"><tr>姓名:<input type="text" name="name"/></tr><br><br><tr>性别:<input type="text" name="sex"/></tr><br><br><tr>年龄:<input type="text" name="age"/></tr><br><br><tr>电话:<input type="text" name="phone"/></tr><br><br><tr>地址:<input type="text" name="address"/></tr><br><br><tr><input type="submit" value="添加"/></tr></form></body>
</html>

2.6.3 updateUser.jsp(更新:先查找原来的人员数据放入更新页面的相应输入框内,对输入框的内容进行修改,直接点击确认即可更新完成)

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="com.hnpi.util.DBUtil"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'updateUser.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><%String id = request.getParameter("id");Connection conn = DBUtil.getConn();String sql = "select * from users where id = ?";session.setAttribute("id", id);PreparedStatement ps = null;ResultSet rs = null;try {ps = conn.prepareStatement(sql);ps.setString(1, id);rs = ps.executeQuery();while (rs.next()) {String name=rs.getString("name");String sex = rs.getString("sex");int age = rs.getInt("age");String phone = rs.getString("phone");String address = rs.getString("address");%>此用户信息为:<br><br><form action="update" method="post"><table><tr><td><input type="text" name="id" value=<%=id%>></td></tr><tr><td><input type="text" name="name" value=<%=name%>></td></tr><tr><td><input type="text" name="sex" value=<%=sex%>></td></tr><tr><td><input type="text" name="age" value=<%=age%>></td></tr><tr><td><input type="text" name="phone" value=<%=phone%>></td></tr><tr><td><input type="text" name="address" value=<%=address%>></td></tr><tr><td><input type="submit" value="确认"></td><td><input type="reset" value="取消"></td></tr></table></form><%	}} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closeConn(conn, ps, null);}%></body>
</html>

请大家注意一定要使用相应的架包 否则是无论如何都无法运行成功的

以上代码实现了对sqlServer数据库人员信息的增改删查等功能,希望能对大家有所帮助

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV 例程200篇】28. 图像的旋转(直角旋转)cv2.rotate

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】28. 图像的旋转&#xff08;直角旋转&#xff09; 旋转角度为 90&#xff0c;180&#xff0c;270 度时&#xff0c;可以用 cv2.rotate(src, rotateCode) 函数实现&#xff0c;该方法实际上是通过矩阵…

爱心表白

程序员并不是没有一点乐趣整天枯燥无味的游走在代码中的&#xff0c;在这里给大家提供了一个表白代码 功能描述&#xff1a; 1&#xff1a;能够计算任意两个时间的之间相隔的天数&#xff0c;2&#xff1a;在相隔天数下面输出心形并且心形里面还有英文我爱你字样。相信你已经迫…

OC与C混合编程

OC与C混合编程 oc中使用c语言函数 类的实现文件中可以定义c语言风格的函数&#xff0c;但仅限于implementation的前面&#xff0c;implementation和end之间&#xff0c;end之后 如果函数的作用域仅限于这个文件&#xff0c;那么给函数加上static修饰符比较好。 函数不能之间调用…

2021爱智先行者—(1)开箱点评

【本文正在参与"2021爱智先行者-征文大赛"活动】&#xff0c;活动链接&#xff1a;https://bbs.csdn.net/topics/602601454 2021爱智先行者—&#xff08;1&#xff09;开箱点评 欢迎关注 『Python小白的项目实战』 系列&#xff0c;持续更新 2021爱智先行者—&…

随机抽取

随机抽取程序是对数字字母的随机抽取&#xff0c;可用作抽奖程序中中奖号码的选择也可用于老师在课堂上随机点名随机抽人回答问题。 请大家先欣赏效果&#xff1a; 程序解读&#xff1a; 定义数组存储需要抽取的数据设置相应按键&#xff0c;继续或者结束的按钮输出提示文字…

OC里面的类类型

OC里面的类类型 类类型 比如说Volume *v1,*v2 v1和v2都是Volume类型&#xff0c;实际上就是一个指针&#xff0c;如果把v1赋值给v2后&#xff0c;那么v2和v1有相同的属性 空指针nil 返回值为id的类型的方法中&#xff0c;如果出错的话&#xff0c;一般会返回nil 调用端会采用如…

【youcans 的图像处理学习课】5. 图像的几何变换

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的图像处理学习课】5. 图像的几何变换 文章目录【youcans 的图像处理学习课】5. 图像的几何变换1. 几何变换简介1.1 仿射变换基本例程&#xff1a;1.3…

键盘中按键对应的键码值

最近很多人想知道键盘中的按键对应的按键值 下面给大家分享一些键码值 键盘各种按键对应的ASII码如下&#xff1a; keycode 8 BackSpace BackSpace keycode 9 Tab Tab keycode 12 Clear keycode 13 Enter keycode 16 Shift_L keycode 17 Control_L keycode 18 Alt_L k…

python科学计算

1 软件包的安装和介绍 1.1 安装软件包 1.1.1 安装 和Matlab不同&#xff0c;Python的科学软件包由众多的社区维护和发布&#xff0c;因此要一一将其收集齐安装到你的电脑里是一件很费时间的事情。幸好这些工作已经有人帮我们整理好了。只需要下载一个文件&#xff0c;一次安…

【OpenCV 例程200篇】29. 图像的翻转(cv2.flip)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】29. 图像的翻转&#xff08;cv2.flip&#xff09; 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 翻转也称镜像&#xff0c;是指将图像沿轴线进行轴对称变换。水平镜像是将图像…

【OpenCV 例程200篇】30. 图像的缩放(cv2.resize)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】30. 图像的缩放&#xff08;cv2.resize&#xff09; 缩放只是调整图像的大小。 OpenCV 提供了 cv2.resize 函数&#xff0c;实现图像的缩放和大小变换 。 函数说明&#xff1a; cv2.resize(src, d…

JAVA50道经典编程题

加强对基础知识的巩固提升&#xff0c;拓展逻辑思维。 JAVA50道经典编程题&#xff1a; 【程序1】 题目&#xff1a;古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子…

【OpenCV 例程200篇】31. 图像金字塔(cv2.pyrDown)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】31. 图像金字塔&#xff08;cv2.pyrDown&#xff09; 扩展例程&#xff1a;1.40 图像金字塔 图像金字塔是一种以多分辨率来解释图像的结构&#xff0c;常用于图像分割、图像压缩和机器视觉。 在需要…

JQuery警报灯

利用鼠标点击改变背景颜色制作一个警报器&#xff0c;供大家参考&#xff01; 请先看一下效果图&#xff1a;&#xff08;警报器是蓝色的和点击之后警报器是红色的&#xff09; 程序解说&#xff1a;首先要有一个警报器的样式和两个分别为打开警报器和关闭警报器的按钮&…

python里面的tuple与list对比

python里面的tuple与list对比 tuple 另一种有序列表叫元组&#xff1a;tuple。tuple和list非常类似&#xff0c;但是tuple一旦初始化就不能修改&#xff0c;比如同样是列出同学的名字&#xff1a; >>> classmates (Michael, Bob, Tracy)现在&#xff0c;classmates…

【OpenCV 例程200篇】32. 图像的扭变(错切)

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】32. 图像的扭变&#xff08;错切&#xff09; 图像的错切变换也称斜切&#xff0c;是指平面景物在投影平面上的非垂直投影&#xff0c;使图像中的图形在水平方向或垂直方向产生扭变。 以水平扭变为例…

【OpenCV 例程200篇】33. 图像的复合变换

『youcans 的 OpenCV 例程200篇 - 总目录』 【youcans 的 OpenCV 例程200篇】33. 图像的复合变换 图像的复合变换是指对给定的图像连续进行多次上述的平移、旋转、翻转、缩放、错切等基本变换&#xff0c;也称为级联变换。 对给定图像按一定顺序执行若干次基本变换&#xff0c…

表格生成器

能自动生成表格的小程序 当你在相应的输入框内输入表格的行高&#xff0c;列宽&#xff0c;多少行&#xff0c;多少列的数字后&#xff0c;点击创建表格就会自动生成你想要的表格。 未输入数据之前&#xff1a; 输入要生成表格数据之后点击创建表格&#xff1a;&#xff08;为…

开心农场

仿照qq农场实现了一个简易的开心农场&#xff0c;使我们在开心快乐中学习 在农场里我们可以进行基本的操作播种&#xff0c;生长&#xff0c;开花和结果。 先看一下效果图 生长 结果 一番欣赏之后是不是感觉很有趣很好玩~~~~ **程序解读&#xff1a;**准备好相关的图片和…

基于ssm企业人事管理系统设计与实现论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统企业人事信息管理难度大&#xff0c;容错率低&#xff0c…