2020-10-21(servlet实现DVD的增删改查及借阅归还)...简单实现

it2025-04-01  24

package controller; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.DVDdao; import dao.Impl.DVDdaoImpl; import model.DVD; /** * Servlet implementation class DvdServlet */ public class DvdServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public DvdServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String action = request.getParameter("action"); if("del".equals(action)){ del(request, response); }else if("add".equals(action)){ add(request, response); }else if ("addWindow".equals(action)) { addWindow(request, response); }else if("lendDVD".equals(action)){ lendDVD(request, response); }else if("returnDVD".equals(action)){ returnDVD(request, response); }else if("updateFind".equals(action)){ updateFind(request, response); }else if("update".equals(action)){ update(request, response); }else{ show(request, response); } } private void lendDVD(HttpServletRequest request, HttpServletResponse response) throws IOException { PrintWriter pw = response.getWriter(); String id = request.getParameter("id"); DVDdao dao = new DVDdaoImpl(); int a = dao.seachDvdStateById(id); if (a == 1) { pw.write("借阅失败,DVD已借出!"); } else { dao.lendDvdById(id); response.sendRedirect("dvd"); } } private void returnDVD(HttpServletRequest request, HttpServletResponse response) throws IOException { PrintWriter pw = response.getWriter(); String id = request.getParameter("id"); DVDdao dao = new DVDdaoImpl(); int a = dao.seachDvdStateById(id); if (a == 0) { pw.write("归还失败,DVD未借出"); } else { dao.backDvdById(id); response.sendRedirect("dvd"); } } private void addWindow(HttpServletRequest request, HttpServletResponse response) throws IOException { StringBuffer sb=new StringBuffer(); PrintWriter pw = response.getWriter(); sb.append("<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><title>Insert title here</title></head><body>"); sb.append("<form action=\"dvd?action=add\" method=\"post\">"); sb.append("ID:<input type=\"text\" name=\"id\" ><br/>"); sb.append("DVD名称:<input type=\"text\" name=\"name\"><br/>"); sb.append("类型:<input type=\"text\" name=\"type\" ><br/>"); sb.append("<input type=\"submit\" value=\"提交\"><br/>"); sb.append("</body></html>"); pw.print(sb); System.out.println(sb); } private void add(HttpServletRequest request, HttpServletResponse response) throws IOException { DVDdao dao = new DVDdaoImpl(); String id = request.getParameter("id"); String name = request.getParameter("name"); String type = request.getParameter("type"); DVD d = new DVD(id, name, type); int i = dao.addDvdByDvd(d); if (i==1){ System.out.println("增加成功"); response.sendRedirect("dvd"); }else { System.out.println("增加失败"); } } private void updateFind(HttpServletRequest request, HttpServletResponse response) throws IOException { StringBuffer sb=new StringBuffer(); PrintWriter pw = response.getWriter(); DVDdao dao = new DVDdaoImpl(); String id = request.getParameter("id"); DVD d = dao.seachDvdById(id); sb.append("<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><title>Insert title here</title></head><body>"); sb.append("<form action=\"dvd?action=update&oldId="+d.getId()+"\" method=\"post\">"); sb.append("ID:<input type=\"text\" name=\"id\" value=\""+d.getId()+"\"><br/>"); sb.append("DVD名称:<input type=\"text\" name=\"name\" value=\""+d.getName()+"\"><br/>"); sb.append("类型:<input type=\"text\" name=\"type\" value=\""+d.getType()+"\"><br/>"); sb.append("<input type=\"submit\" value=\"修改\"><br/>"); sb.append("</body></html>"); pw.print(sb); } private void update(HttpServletRequest request, HttpServletResponse response) throws IOException { String oldId = request.getParameter("oldId");//修改之前的ID,重定向转过来的, String id = request.getParameter("id");//修改之后的id String name = request.getParameter("name"); String type = request.getParameter("type"); DVD d1 = new DVD(id, name, type); DVDdao dao = new DVDdaoImpl(); int a = dao.changeDvdById(oldId, d1); if (a==1) { System.out.println("修改成功"); response.sendRedirect("dvd"); }else{ System.out.println("修改失败"); } } private void del(HttpServletRequest request, HttpServletResponse response) throws IOException { String id = request.getParameter("id"); DVDdao dao = new DVDdaoImpl(); int a = dao.delDvdById(id); if(a==1){ System.out.println("删除成功"); response.sendRedirect("dvd"); }else{ System.out.println("删除失败"); response.sendRedirect("aaa.html"); } } private void show(HttpServletRequest request, HttpServletResponse response) throws IOException{ request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); DVDdao dao=new DVDdaoImpl(); List<DVD> list = dao.showDvd(); StringBuffer sb=new StringBuffer(); sb.append("<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><title>Insert title here</title></head><body>"); sb.append("<table border=\"2px\" cellspacing=\"0px\" align=\"center\" bordercolor=\"red\" width=\"1100px\" height=\"600px\"><caption><h1>DVD管理系统</h1></caption><tbody align=\"center\"><tr><th>ID</th><th>DVD名称</th><th>类型ַ</th><th>状态</th><th>借出时间</th><th>归还时间</th><th></th><th></th><th></th></tr>"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (DVD d:list) { sb.append("<tr>"); sb.append("<td>"+d.getId()+"</td><td>"+d.getName()+"</td><td>"+d.getType()+"</td><td>"+(d.isStatus()?"已借出":"未借出")+"</td><td>"+(d.getLendTime()==null?"":sdf.format(d.getLendTime()))+"</td><td>"+(d.getReturnTime()==null?"":sdf.format(d.getReturnTime()))+"<td><a href=\"dvd?action=lendDVD&id="+d.getId()+"\">借阅</a></td>"+"<td><a href=\"dvd?action=returnDVD&id="+d.getId()+"\">归还</a></td>"+"<td><a href=\"dvd?action=del&id="+d.getId()+"\">删除</a></td><td><a href=\"dvd?action=updateFind&id="+d.getId()+"\">修改</a></td>"); sb.append("</tr>"); } sb.append("</table>"); sb.append("</body></html>"); System.out.println(sb); sb.append("<td><a href=\"dvd?action=addWindow\" target:\"_blank\" >添加</a></td>"); PrintWriter writer = response.getWriter(); writer.print(sb); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } package dao.Impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.util.List; import dao.DVDdao; import model.DVD; import util.JDBCUtil; public class DVDdaoImpl implements DVDdao { Connection con = null; Statement stm = null; PreparedStatement pre = null; ResultSet rs = null; ArrayList<DVD> list = new ArrayList<>(); @Override public List<DVD> showDvd() { try { boolean status = true; con = JDBCUtil.getCon(); stm = con.createStatement(); String sql = "SELECT * from dvd_1;"; rs = stm.executeQuery(sql); // 把查询之后返回的ResultSet rs 存储到list集合中去,方便操作 while (rs.next()) { String id = rs.getString("id"); String name = rs.getString("DVD_name"); String type = rs.getString("type"); // DVD对象中的状态为boolean类型 int s = rs.getInt("state"); if (s == 1) { status = true; } else if (s == 0) { status = false; } /** * 获取时间类型的方法, 1.getTimestamp()获取年月日时分秒 * 2.getDate()只能获取年月日,时分秒会默认为00:00:00 3.注意获取的时间可能为null */ Timestamp timestamp = rs.getTimestamp("lend_time"); Timestamp timestamp2 = rs.getTimestamp("return_time"); java.util.Date lendTime = null; java.util.Date returnTime = null; if (timestamp == null) { lendTime = null; } else { lendTime = new Date(timestamp.getTime()); } if (timestamp2 == null) { returnTime = null; } else { returnTime = new Date(timestamp2.getTime()); } DVD d = new DVD(id, name, type, status, lendTime, returnTime); list.add(d); } JDBCUtil.close(con, stm, rs); } catch (Exception e) { e.printStackTrace(); } return list; } @Override public int addDvdByDvd(DVD dvd) { int a = 0; try { con = JDBCUtil.getCon(); String sql = "INSERT INTO dvd_1(id,DVD_name,type,state) VALUES (?,?,?,0);"; pre = con.prepareStatement(sql); pre.setString(1, dvd.getId()); pre.setString(2, dvd.getName()); pre.setString(3, dvd.getType()); a = pre.executeUpdate(); JDBCUtil.close(con, pre); } catch (Exception e) { e.printStackTrace(); } return a; } @Override public int delDvdById(String id) { int a = 0; try { con = JDBCUtil.getCon(); String sql = "DELETE FROM dvd_1 WHERE id=?;"; pre = con.prepareStatement(sql); pre.setString(1, id); a = pre.executeUpdate(); JDBCUtil.close(con, pre); } catch (Exception e) { e.printStackTrace(); } return a; } @Override public int changeDvdById(String id, DVD dvd) { int a = 0; try { con = JDBCUtil.getCon(); String sql = "UPDATE dvd_1 SET id=?,DVD_name=?,type=? WHERE id=?;"; pre = con.prepareStatement(sql); pre.setString(1, dvd.getId()); pre.setString(2, dvd.getName()); pre.setString(3, dvd.getType()); pre.setString(4, id); a = pre.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } return a; } @Override public int lendDvdById(String id) { int a = 0; try { Date d = new Date(); java.sql.Timestamp date = new java.sql.Timestamp(d.getTime()); con = JDBCUtil.getCon(); String sqls = "UPDATE dvd_1 SET state=1,lend_time=? WHERE id=?;"; pre = con.prepareStatement(sqls); pre.setTimestamp(1, date); pre.setString(2, id); a = pre.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } return a; } @Override public int backDvdById(String id) { int a = 0; try { Date d = new Date(); java.sql.Timestamp date = new java.sql.Timestamp(d.getTime()); con = JDBCUtil.getCon(); String sqls = "UPDATE dvd_1 SET state=0,return_time=? WHERE id=?;"; pre = con.prepareStatement(sqls); pre.setTimestamp(1, date); pre.setString(2, id); a = pre.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } return a; } @Override public Boolean searchDvdById(String id) { boolean b = true; try { // SELECT count(id) FROM dvd where id=? limit 1 con = JDBCUtil.getCon(); String sql = "SELECT id FROM dvd_1 where id=? limit 1;"; pre = con.prepareStatement(sql); pre.setString(1, id); rs = pre.executeQuery(); if (rs.next()) { b = true; } else { b = false; } } catch (Exception e) { // TODO: handle exception } finally { JDBCUtil.close(con, pre); } return b; } @Override public int seachDvdStateById(String id) { int a = 0; try { con = JDBCUtil.getCon(); String sql = "SELECT state FROM dvd_1 where id=?;"; pre = con.prepareStatement(sql); pre.setString(1, id); rs = pre.executeQuery(); while (rs.next()) { a = rs.getInt("state"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return a; } @Override public DVD seachDvdById(String id) { DVD d = null; boolean status = true; try { con = JDBCUtil.getCon(); String sql = "SELECT * FROM dvd_1 where id=?;"; pre = con.prepareStatement(sql); pre.setString(1, id); rs = pre.executeQuery(); while (rs.next()) { String id1 = rs.getString("id"); String name = rs.getString("DVD_name"); String type = rs.getString("type"); // DVD对象中的状态为boolean类型 int s = rs.getInt("state"); if (s == 1) { status = true; } else if (s == 0) { status = false; } /** * 获取时间类型的方法, 1.getTimestamp()获取年月日时分秒 * 2.getDate()只能获取年月日,时分秒会默认为00:00:00 3.注意获取的时间可能为null */ Timestamp timestamp = rs.getTimestamp("lend_time"); Timestamp timestamp2 = rs.getTimestamp("return_time"); java.util.Date lendTime = null; java.util.Date returnTime = null; if (timestamp == null) { lendTime = null; } else { lendTime = new Date(timestamp.getTime()); } if (timestamp2 == null) { returnTime = null; } else { returnTime = new Date(timestamp2.getTime()); } d = new DVD(id1, name, type, status, lendTime, returnTime); } }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return d; } } package dao; import java.util.List; import model.DVD; public interface DVDdao { /** * 展示所有的dvd信息方法 * @return 返回一个存储dvd信息的list集合 */ public List<DVD> showDvd(); /** * 增加DVD的方法 * @param dvd 增加传入的DVD * @return 返回影响的行数 */ public int addDvdByDvd(DVD dvd); /** * 删除dvd的方法 * @param id 通过传入的id删除dvd * @return 返回影响的行数 */ public int delDvdById(String id); /** * 修改dvd * @param id 通过传入的id把dvd信息修改为传入的dvd * @return 返回影响的行数 */ public int changeDvdById(String id,DVD dvd); /** * 借出dvd * @param id 通过传入的id借出dvd * @return 返回影响的行数 */ public int lendDvdById(String id); /** * 归还dvd * @param id 通过传入的id归还dvd * @return 返回影响的行数 */ public int backDvdById(String id); /** * 判断dvd是否存在 * @param id 通过传入的id判断DVD是否存在 * @return 返回DVD是否存在 */ public Boolean searchDvdById(String id); /** * 查看dvd状态 * @param id 通过传入的id查看DVD的状态 * @return 返回DVD的状态(0表示未借出,1表示已借出) */ public int seachDvdStateById(String id); /** * 通过传入的ID查找某一个DVD信息 * @param id * @return */ public DVD seachDvdById(String id); } package model; import java.text.SimpleDateFormat; import java.util.Date; public class DVD { private String id;//编号 private String name;//片名 private String type;//类型 private boolean status;//状态 private Date lendTime;//借出时间 private Date returnTime;//归还时间 public DVD() { super(); } public DVD(String id, String name, String type) { super(); this.id = id; this.name = name; this.type = type; } public DVD(String id, String name, String type, boolean status, Date lendTime, Date returnTime) { super(); this.id = id; this.name = name; this.type = type; this.status = status; this.lendTime = lendTime; this.returnTime = returnTime; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public boolean isStatus() { return status; } public void setStatus(boolean status) { this.status = status; } public Date getLendTime() { return lendTime; } public void setLendTime(Date lendTime) { this.lendTime = lendTime; } public Date getReturnTime() { return returnTime; } public void setReturnTime(Date returnTime) { this.returnTime = returnTime; } @Override public String toString() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日-HH:mm:ss"); String lt=lendTime==null?" ":sdf.format(lendTime); String rt=returnTime==null?" ":sdf.format(returnTime); return "编号:" + id + ",片名:《" + name + "》,类型:" + type + ", 状态:" + (status==true?"已借出":"未借出") + ", 借出时间:" + lt + ", 归还时间:" + rt; } } package util; import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; public class JDBCUtil { private static DruidDataSource ds; private static Properties p = new Properties(); static{ try { //加载配置文件内容 InputStream in = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); p.load(in); ds = (DruidDataSource)DruidDataSourceFactory.createDataSource(p); // ds = DruidDataSourceFactory.createDataSource(p); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("驱动注册失败"); } } //获取Connection public static Connection getCon(){ try { return ds.getConnection(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } //关闭资源 public static void close(Connection con,Statement stm,ResultSet rs) { try { if (rs != null) { rs.close(); } if (stm != null) { stm.close(); } if (con != null) { con.close(); } } catch (SQLException e2) { e2.printStackTrace(); } } public static void close(Connection con,Statement stm) { JDBCUtil.close(con, stm, null); } } driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/dvd username=root password=1234 initialSize=10 maxActive=50 minIdle=5 maxWait=5000

最新回复(0)