![](https://i-blog.csdnimg.cn/blog_migrate/045e69495f17e0b4db156fe151d23f65.png)
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
![](https://i-blog.csdnimg.cn/blog_migrate/656c18a5caa14d30ec6a066ee439ad29.png)