基于javaweb+mysql的jsp+servlet网上名片通讯录管理系统(java+servlet+jsp+bootstrap+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的JSP+Servlet网上名片通讯录管理系统(java+servlet+jsp+bootstrap+mysql)
管理员:
admin 123456
用户:
user1 123456
user2 123456
*不同用户只能对自己名片进行操作
Java web 期末课程设计–名片管理系统
-
Jsp+Servlet+JavaBean+Jdbc+DAO+MySQL+Bootstrap+jQuey。
-
其中也有一些不是很好的操作,譬如页面嵌套了iframe,其实应有更好的解决方案。
-
其中也牵扯对于ajax、EL表达式、JSTL、JSON等的应用
-
主要实现功能:
用户注册登录(注册时根据用户名检查用户是否存在)
不同用户只能对自己名片进行操作
名片增删(放入回收站)改查
批量勾选删除
四个字段的模糊查询(后端拼这个sql觉得真tm zz啊)
回收站管理(彻底删除名片、恢复删除名片)
用户权限管理(admin用户最起码得能管理其他普通用户吧)
admin可实现对普通用户帐号的密码重置与删除, 普通用户可自主更改密码 (由于本人太懒,所以只实现了密码重置与删除用户)
未登录用户控制(登录都没登录,总不能直接访问到页面吧)
密码md5加密(密码不能明文存储吧)
登录图片验证码(可点击图片刷新)
-
待实现功能:
RememberMe
分页查询(是在懒得改了)
int row = 0;
try {
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(DELETE_SQL);
pstmt.setInt(1,user.getId());
row = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.closeDB(conn,pstmt,rs);
}
return row;
}
/**
* 重置用户密码
* @param user
* @return
*/
@Override
public int reset(User user) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String RESET_SQL = "update tb_user set password='123456' where id = ?";
int row = 0;
try {
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(RESET_SQL);
pstmt.setInt(1,user.getId());
row = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.closeDB(conn,pstmt,rs);
}
return row;
}
/**
* 用户密码修改
* @param user
* @param newPwd
* @return
*/
@Override
public int editPwd(User user, String newPwd) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
public class SelectTrashServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String tel = request.getParameter("tel");
String address = request.getParameter("address");
String email = request.getParameter("email");
Card card = new Card(0,name,tel,address,email,0,0);
TrashDao trashDao = new TrashDao();
HttpSession session = request.getSession();
List<Card> cardList = trashDao.selectTrash(card,session);
request.setAttribute("cards",cardList); // 将list放入request域
request.getRequestDispatcher("trash.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
/**
* 用户密码修改
*/
public class EditPwdServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
HttpSession session = request.getSession();
int id = (int) session.getAttribute("userId");
String newPwd = request.getParameter("password2");
// 如果登录用户是管理员,则页面跳转到管理员管理页面
session.setAttribute("userType","1");
response.sendRedirect("frame");
} else {
// 否则跳转到用户管理页面
session.setAttribute("userType","2");
response.sendRedirect("frame");
}
} else {
// 密码错误,设置错误提示信息,页面转发到登录页面
request.setAttribute("message", "用户名或密码错误!"); // 验证失败
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} else {
// 验证码错误,设置错误提示信息,页面转发到登录页面
request.setAttribute("message", "验证码错误!"); // 验证失败
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
/**
* 名片更新
*/
public class UpdateServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String tel = request.getParameter("tel");
String address = request.getParameter("address");
String email = request.getParameter("email");
int userId = Integer.parseInt(request.getParameter("userId"));
int isDelete = Integer.parseInt(request.getParameter("isDelete"));
Card card = new Card(id,name,tel,address,email,userId,isDelete);
CardDao cardDao = new CardDao();
int n = cardDao.update(card);
if (n > 0) {
if (checkCode.equals(realCode)) {
if (user1 != null) {
session.setAttribute("userId", user1.getId());
session.setAttribute("user", user1);
session.setAttribute("username", user1.getUsername());
if (user1.getUsername().equals("admin")) {
// 如果登录用户是管理员,则页面跳转到管理员管理页面
session.setAttribute("userType","1");
response.sendRedirect("frame");
} else {
// 否则跳转到用户管理页面
session.setAttribute("userType","2");
response.sendRedirect("frame");
}
} else {
// 密码错误,设置错误提示信息,页面转发到登录页面
request.setAttribute("message", "用户名或密码错误!"); // 验证失败
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} else {
// 验证码错误,设置错误提示信息,页面转发到登录页面
request.setAttribute("message", "验证码错误!"); // 验证失败
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
/**
} finally {
DBConnection.closeDB(conn,pstmt,rs);
}
return row;
}
/**
* 查询所有名片记录
* @return
*/
@Override
public List<Card> findAll(HttpSession session) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Card> cards = new ArrayList<>();
// System.out.println(session.getAttribute("userId"));
String LIST_SQL = "select * from tb_card where user_id=" + session.getAttribute("userId") + " and isdelete = 0";
// System.out.println(LIST_SQL);
try {
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(LIST_SQL);
rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String tel = rs.getString("tel");
String address = rs.getString("address");
String email = rs.getString("email");
int userId = rs.getInt("user_id");
int isDelete = rs.getInt("isdelete");
Card card = new Card(id,name,tel,address,email,userId,isDelete);
cards.add(card);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.closeDB(conn,pstmt,rs);
}
return cards;
}
if (!card.getTel().equals("")) {
s+=" and tel like '%" + card.getTel() + "'";
}
if (!card.getAddress().equals("")) {
s+= " and address like'%" + card.getAddress()+"%'";
}
if (!card.getEmail().equals("")) {
s+= " and email like'%" + card.getEmail() + "%'";
}
String sql = "select * from tb_card WHERE user_id=? and isdelete=1 and";
try {
sql += s;
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,userId1);
rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String tel = rs.getString("tel");
String address = rs.getString("address");
String email = rs.getString("email");
int userId = rs.getInt("user_id");
int isDelete = rs.getInt("isdelete");
Card card1 = new Card(id,name,tel,address,email,userId,isDelete);
cards.add(card1);
}
} catch(SQLException e) {
e.printStackTrace();
} finally {
DBConnection.closeDB(conn,pstmt,rs);
}
return cards;
}
}
String[] id = ids.split("-");
for (String s : id) {
card.setId(Integer.parseInt(s));
n += cardDao.remove(card);
}
} else {
card.setId(Integer.parseInt(ids));
n = cardDao.remove(card);
}
response.setCharacterEncoding("utf-8");
if (n > 0) {
response.getWriter().write("删除成功!");
} else {
response.getWriter().write("删除失败!");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
/**
* 名片添加
*/
public class AddServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
HttpSession session = request.getSession();
String name = request.getParameter("name");
String tel = request.getParameter("tel");
String address =request.getParameter("address");
String email = request.getParameter("email");
int userId = (int) session.getAttribute("userId");
Card card = new Card(0,name,tel,address,email,userId,0);
CardDao cardDao = new CardDao();
int n = cardDao.create(card);
if (n > 0) {
request.getRequestDispatcher("list").forward(request,response);
} else {
request.setAttribute("message","名片插入失败!");
int id = rs.getInt("id");
String name = rs.getString("name");
String tel = rs.getString("tel");
String address = rs.getString("address");
String email = rs.getString("email");
int userId = rs.getInt("user_id");
int isDelete = rs.getInt("isdelete");
Card card1 = new Card(id,name,tel,address,email,userId,isDelete);
cards.add(card1);
}
} catch(SQLException e) {
e.printStackTrace();
} finally {
DBConnection.closeDB(conn,pstmt,rs);
}
return cards;
}
}
public class UserDao implements IUserDao{
protected static final String USER = "username,password,authrity";
protected static final String INSERT_SQL = "insert into " + TableContants.USERTABLE
+ "(" + USER + ")" + " values(?,?,?)";
protected static final String SELECT_SQL = "select * from " + TableContants.USERTABLE + " where username = ? and password = ?";
/**
* 用户注册
* @param user
* @return
*/
@Override
} else {
// 验证码错误,设置错误提示信息,页面转发到登录页面
request.setAttribute("message", "验证码错误!"); // 验证失败
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
/**
* 名片更新
*/
public class UpdateServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
int id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
String tel = request.getParameter("tel");
String address = request.getParameter("address");
String email = request.getParameter("email");
int userId = Integer.parseInt(request.getParameter("userId"));
int isDelete = Integer.parseInt(request.getParameter("isDelete"));
Card card = new Card(id,name,tel,address,email,userId,isDelete);
CardDao cardDao = new CardDao();
int n = cardDao.update(card);
if (n > 0) {
request.setAttribute("message","更新成功");
request.getRequestDispatcher("list").forward(request,response);
} else {
request.setAttribute("message","更新失败");
request.getRequestDispatcher("list").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
/**
* 回收站恢复名片
*/
public class RecoverServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
int id = Integer.parseInt(request.getParameter("id"));
Card card = new Card();
card.setId(id);
TrashDao cardDao = new TrashDao();
int n = cardDao.recover(card);
response.setCharacterEncoding("utf-8");
if (n > 0) {
response.getWriter().write("恢复成功!");
} else {
response.getWriter().write("恢复失败!");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
/**
* 回收站彻底删除
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Card card1 = null;
try {
int id = card.getId();
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(SELECT_SQL);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
while (rs.next()) {
String name = rs.getString("name");
String tel = rs.getString("tel");
String address = rs.getString("address");
String email = rs.getString("email");
int userId = rs.getInt("user_id");
int isDelete = rs.getInt("isdelete");
card1 = new Card(id, name, tel, address, email, userId, isDelete);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.closeDB(conn, pstmt, rs);
}
return card1;
}
/**
* 更新名片记录
* @param card
* @return
*/
@Override
public int update(Card card) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int row = 0;
try {
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(UPDATE_SQL);
pstmt.setString(1,card.getName());
pstmt.setString(2,card.getTel());
pstmt.setString(3,card.getAddress());
pstmt.setString(4,card.getEmail());
}
}
/**
* 卡片记录模糊筛选
*/
public class SelectServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String tel = request.getParameter("tel");
String address = request.getParameter("address");
String email = request.getParameter("email");
Card card = new Card(0,name,tel,address,email,0,0);
CardDao cardDao = new CardDao();
HttpSession session = request.getSession();
List<Card> cardList = cardDao.selectCard(card,session);
request.setAttribute("cards",cardList); // 将list放入request域S
request.getRequestDispatcher("list.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
user.setId(id);
UserDao userDao = new UserDao();
int n = userDao.reset(user);
response.setCharacterEncoding("utf-8");
if (n > 0) {
response.getWriter().write("重置成功!");
} else {
response.getWriter().write("重置失败!");
}
}
}
/**
* 查询全部card数据
*/
public class ListServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
CardDao cardDao = new CardDao();
List<Card> cards = cardDao.findAll(session);
request.setAttribute("cards",cards); // 将list放入request域
request.getRequestDispatcher("list.jsp").forward(request,response); // 跳转到list页面显示数据
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
String checkCode = request.getParameter("checkcode").toUpperCase(); // 输入验证码不区分大小写
String remeberMe = request.getParameter("rememberMe");
HttpSession session = request.getSession();
String realCode = (String) session.getAttribute("realCode"); // 获取session域中验证码
String passwordMd5 = MD5Util.MD5(password); // 加密后的密码
User user = new User();
user.setUsername(username);
user.setPassword(passwordMd5);
UserDao userDao = new UserDao();
User user1 = userDao.login(user);
if (checkCode.equals(realCode)) {
if (user1 != null) {
session.setAttribute("userId", user1.getId());
session.setAttribute("user", user1);
session.setAttribute("username", user1.getUsername());
if (user1.getUsername().equals("admin")) {
// 如果登录用户是管理员,则页面跳转到管理员管理页面
session.setAttribute("userType","1");
response.sendRedirect("frame");
} else {
// 否则跳转到用户管理页面
session.setAttribute("userType","2");
response.sendRedirect("frame");
}
} else {
// 密码错误,设置错误提示信息,页面转发到登录页面
request.setAttribute("message", "用户名或密码错误!"); // 验证失败
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} else {
// 验证码错误,设置错误提示信息,页面转发到登录页面
request.setAttribute("message", "验证码错误!"); // 验证失败
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
if (!card.getEmail().equals("")) {
s+= " and email like'%" + card.getEmail() + "%'";
}
String sql = "select * from tb_card WHERE user_id=? and isdelete=0 and";
try {
sql += s;
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,userId1);
rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String tel = rs.getString("tel");
String address = rs.getString("address");
String email = rs.getString("email");
int userId = rs.getInt("user_id");
int isDelete = rs.getInt("isdelete");
Card card1 = new Card(id,name,tel,address,email,userId,isDelete);
cards.add(card1);
}
} catch(SQLException e) {
e.printStackTrace();
} finally {
DBConnection.closeDB(conn,pstmt,rs);
}
return cards;
}
}
public class UserDao implements IUserDao{
protected static final String USER = "username,password,authrity";
s+=" and tel like '%" + card.getTel() + "'";
}
if (!card.getAddress().equals("")) {
s+= " and address like'%" + card.getAddress()+"%'";
}
if (!card.getEmail().equals("")) {
s+= " and email like'%" + card.getEmail() + "%'";
}
String sql = "select * from tb_card WHERE user_id=? and isdelete=0 and";
try {
sql += s;
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,userId1);
rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String tel = rs.getString("tel");
String address = rs.getString("address");
String email = rs.getString("email");
int userId = rs.getInt("user_id");
int isDelete = rs.getInt("isdelete");
Card card1 = new Card(id,name,tel,address,email,userId,isDelete);
cards.add(card1);
}
} catch(SQLException e) {
e.printStackTrace();
} finally {
DBConnection.closeDB(conn,pstmt,rs);
}
return cards;
}
}
String email = request.getParameter("email");
int userId = Integer.parseInt(request.getParameter("userId"));
int isDelete = Integer.parseInt(request.getParameter("isDelete"));
Card card = new Card(id,name,tel,address,email,userId,isDelete);
CardDao cardDao = new CardDao();
int n = cardDao.update(card);
if (n > 0) {
request.setAttribute("message","更新成功");
request.getRequestDispatcher("list").forward(request,response);
} else {
request.setAttribute("message","更新失败");
request.getRequestDispatcher("list").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
/**
* 批量单个删除
*/
public class DeleteServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
// int id = Integer.parseInt(request.getParameter("id"));
String ids = request.getParameter("id");
CardDao cardDao = new CardDao();
Card card = new Card();
int n = 0;
if (ids.contains("-")) {
String[] id = ids.split("-");
for (String s : id) {
card.setId(Integer.parseInt(s));
n += cardDao.remove(card);
}
} else {
card.setId(Integer.parseInt(ids));
n = cardDao.remove(card);
}
response.setCharacterEncoding("utf-8");
if (n > 0) {
response.getWriter().write("删除成功!");
/**
* 回收站恢复名片
*/
public class RecoverServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
int id = Integer.parseInt(request.getParameter("id"));
Card card = new Card();
card.setId(id);
TrashDao cardDao = new TrashDao();
int n = cardDao.recover(card);
response.setCharacterEncoding("utf-8");
if (n > 0) {
response.getWriter().write("恢复成功!");
} else {
response.getWriter().write("恢复失败!");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
/**
* 回收站彻底删除
*/
public class DelTrashServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
int id = Integer.parseInt(request.getParameter("id"));
Card card = new Card();
card.setId(id);
TrashDao trashDao = new TrashDao();