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

6 篇文章 0 订阅
2 篇文章 0 订阅

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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值