JAVA WEB实现图书管理系统 —— 图书的增删改查_web书店项目增删改表_小朱同学的笔记本的博客-程序员宅基地

技术标签: java  web  jsp  servlet  

本文章要实现的功能如下:
1.主页点击添加按钮,可跳转到添加页面,进行图书的添加
在这里插入图片描述

2.点击删除链接,可将对应的图书删除
3.主页点击修改按钮,可跳转到修改页面,进行图书信息的修改
在这里插入图片描述

4.主页搜索栏输入要搜索的图书,可跳转到显示图书详细信息的页面
在这里插入图片描述

一、要实现这些功能所需要的接口及实现类

BookDao:

	boolean add(Book book);
	boolean delete(String name);
	boolean update(Book book);
	Book SearchByName(String name);

BookDaoImp:

	@Override
	public boolean add(Book book) {
    
		// TODO Auto-generated method stub
		boolean flag=false;
		DBCon dbcon=new DBCon();
		cn=dbcon.getConnection();
		String sql="insert into books(name,price,num,type) values(?,?,?,?)";
		try {
    
			psm=cn.prepareStatement(sql);
			psm.setString(1, book.getName());
			psm.setString(2, book.getPrice());
			psm.setString(3, book.getNum());
			psm.setString(4, book.getType());
			psm.executeUpdate();
			flag=true;
			cn.close();
			psm.close();
		} catch (SQLException e) {
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return flag;
	}

	@Override
	public boolean delete(String name) {
    
		// TODO Auto-generated method stub
		boolean flag=false;
		DBCon dbcon=new DBCon();
		cn=dbcon.getConnection();
		String sql="delete from books where name=?";
		try {
    
			psm=cn.prepareStatement(sql);
			psm.setString(1, name);
			if(psm.executeUpdate()!=0) {
    
				flag=true;
			}
			cn.close();
			psm.close();
		} catch (SQLException e) {
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return flag;
	}

	@Override
	public boolean update(Book book) {
    
		// TODO Auto-generated method stub
		boolean flag=false;
		DBCon dbcon=new DBCon();
		cn=dbcon.getConnection();
		String sql="update books set price=?,num=?,type=? where name=?";
		try {
    
			psm=cn.prepareStatement(sql);
			psm.setString(1, book.getPrice());
			psm.setString(2, book.getNum());
			psm.setString(3, book.getType());
			psm.setString(4, book.getName());
			if(psm.executeUpdate()!=0) {
    
				flag=true;
			}
			cn.close();
			psm.close();
		} catch (SQLException e) {
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return flag;
	}

	@Override
	public Book SearchByName(String name) {
    
		// TODO Auto-generated method stub
		DBCon dbcon=new DBCon();
		cn=dbcon.getConnection();
		Book book=new Book();
		String sql="select * from books where name=?";
		try {
    
			psm=cn.prepareStatement(sql);
			psm.setString(1, name);
			rs=psm.executeQuery();
			if(rs.next()) {
    
				String bookname=rs.getString(2);
				String price=rs.getString(3);
				String num=rs.getString(4);
				String type=rs.getString(5);
				book.setName(bookname);
				book.setPrice(price);
				book.setNum(num);
				book.setType(type);
			}
			cn.close();
			psm.close();
		} catch (SQLException e) {
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return book;
	}

二、增加、修改客户端页面

add.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>图书管理系统添加图书</title>
</head>

<body style="text-align:center;">
	<center><h3>图书管理系统添加图书</h3></center>
	<form action="${pageContext.request.contextPath}/AddServlet" method="post">
		<table border="0" width="350px" cellpadding="0" cellspacing="0" align="center" style="background:#CFF;" >
			<tr>
				<td height="50" align="center">&nbsp;&nbsp;名:&nbsp;&nbsp;
				<input type="text" name="bookname" /></td>
			</tr>
			<tr>
				<td height="50" align="center">&nbsp;&nbsp;格 :&nbsp;&nbsp;
				<input type="text" name="price" /></td>
			</tr>
			<tr>
				<td height="50" align="center">&nbsp;&nbsp;量 :&nbsp;&nbsp;
				<input type="text" name="num" /></td>
			</tr>
			<tr>
				<td height="50" align="center">&nbsp;&nbsp;类 :&nbsp;&nbsp;
				<input type="text" name="type" /></td>
			</tr>
			<tr>
				<td height="50">
					<input type="submit" value="提交" />
					&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="reset" value="重置" />
				</td>
			</tr>
		</table>
	</form>

</body>
</html>

update.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>图书管理系统修改图书</title>
</head>
<body style="text-align:center;">
	<center><h3>图书管理系统修改图书</h3></center>
	<form action="${pageContext.request.contextPath}/UpdateServlet" method="post" >
		<table border="0" width="350px" cellpadding="0" align="center" style="background:#CFF;">
			<tr>
				<td height="50" align="center">要修改的图书:&nbsp;&nbsp;
				<input type="text" name="bookname" /></td>
			</tr>
			<tr>
				<td heignt="50" align="center">修改后价格:&nbsp;&nbsp;
				<input type="text" name="price" /></td>
			</tr>
			<tr>
				<td height="50" align="center">修改后数量:&nbsp;&nbsp;
				<input type="text" name="num" /></td>
			</tr>
			<tr>
				<td height="50" align="center">修改后分类:&nbsp;&nbsp;
				<input type="text" name="type" /></td>
			</tr>
			<tr>
				<td>
					<input type="submit" value="提交" />
					&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="reset" value="重置" />
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

三、服务器端实现增删改查

AddServlet.java:

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import daoImp.BookDaoImp;
import entity.Book;
@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
    
	private static final long serialVersionUID = 1L;
    public AddServlet() {
    
        super();
        // TODO Auto-generated constructor stub
    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
		String bookname=request.getParameter("bookname");
		String price=request.getParameter("price");
		String num=request.getParameter("num");
		String type=request.getParameter("type");
		Book book=new Book();
		book.setName(bookname);
		book.setPrice(price);
		book.setNum(num);
		book.setType(type);
		BookDaoImp bdi=new BookDaoImp();
		if(bdi.add(book)) {
    
			String url="/bookManage/index.jsp";
			response.sendRedirect(url);
		}
	}
}

DeleteServlet.java:

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import daoImp.BookDaoImp;
@WebServlet("/DeleteServlet")
public class DeleteServlet extends HttpServlet {
    
	private static final long serialVersionUID = 1L;
    public DeleteServlet() {
    
        super();
        // TODO Auto-generated constructor stub
    }
//传入信息时是以get方式传入,因此这里的servlet要在get()方法中进行信息操作
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		String name=request.getParameter("name");
		BookDaoImp bdi=new BookDaoImp();
		if(bdi.delete(name)) {
    
			String url="/bookManage/index.jsp";
			response.sendRedirect(url);
		}
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
		// TODO Auto-generated method stub
		doGet(request, response);
		
	}

}

UpdateServlet.java:

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import daoImp.BookDaoImp;
import entity.Book;
@WebServlet("/UpdateServlet")
public class UpdateServlet extends HttpServlet {
    
	private static final long serialVersionUID = 1L;
    public UpdateServlet() {
    
        super();
        // TODO Auto-generated constructor stub
    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
		// TODO Auto-generated method stub
		//doGet(request, response);
		String bookname=request.getParameter("bookname");
		String price=request.getParameter("price");
		String num=request.getParameter("num");
		String type=request.getParameter("type");
		Book book=new Book();
		book.setName(bookname);
		book.setPrice(price);
		book.setNum(num);
		book.setType(type);
		BookDaoImp bdi=new BookDaoImp();
		if(bdi.update(book)) {
    
			String url="/bookManage/index.jsp";
			response.sendRedirect(url);
		}
	}
}

SearchBNameServlet.java:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import daoImp.BookDaoImp;
import entity.Book;
@WebServlet("/SearchBNameServlet")
public class SearchBNameServlet extends HttpServlet {
    
	private static final long serialVersionUID = 1L;
    public SearchBNameServlet() {
    
        super();
        // TODO Auto-generated constructor stub
    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
		// TODO Auto-generated method stub
		//doGet(request, response);
		response.setContentType("text/html;charset=utf-8");
		String bookname=request.getParameter("bookName");
		Book book=new Book();
		BookDaoImp bdi=new BookDaoImp();
		book=bdi.SearchByName(bookname);
		PrintWriter out=response.getWriter();
		out.write("书名:"+book.getName()+"<br />");
		out.write("价格:¥"+book.getPrice()+"<br />");
		out.write("数量:"+book.getNum()+"<br />");
		out.write("分类:"+book.getType()+"<br />");
	}
}

至此图书管理系统所有功能已经全部实现,工程目录如下:
在这里插入图片描述
源码下载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42197887/article/details/108443394

智能推荐

[optee]-TA的签名和验签_代码改变世界ctw的博客-程序员宅基地

TA签名验签1、TA的签名2、TA的验签1、TA的签名在optee或sdk的目录下,有一个default_ta.pem(RSA2048 priv key)和sign.py签名脚本. 在编译TA结束后,会使用这个脚本和key对TA进行签名…export-ta_arm64/keys/default_ta.pemexport-ta_arm64/scripts/sign.py在编译TA时,会调用到TA中的link.mk, 在该文件文件中可以看到rsakey和签名脚本sign.py的引用和makefil

oracle控制台密码重置,weblogic 修改控制台密码_抹茶柚子冰的博客-程序员宅基地

关掉weblogic所有进程切换到域下面$cd /home/weblogic/Oracle/Middleware/user_projects/domains/jydomain/security$java -classpath /home/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.jar weblogic.securi...

使用eclipse 开发 嵌入式Linux驱动(注意事项)(make:***没有规则可言创建目标"all".停止 的解决方法)_eclipse make: *** 没有规则可制作目标_psvoldemort的博客-程序员宅基地

http://blog.csdn.net/cp1300/article/details/82668061.准备工作  首先得安装好gcc工具链,以及开发环境,可以看看我的前面的几步。   还得编译好内核,一般开发板都带了,现在我还不知道配置内核,只能按照开发板默认的去编译,编译前需要先编译uboot,建议像我一样的新手先学会驱动编写,慢慢的去学习 内核的配置裁剪

[洛谷P2783]有机化学之神偶尔会做作弊_arex71991的博客-程序员宅基地

第一次做出来黑题祭虽然感觉难度其实并不到黑题的难度题解:其实这道题并没用什么特别的知识,只是Tarjan求双联通分量和LCA的结合。所以,我们可以很显然的发现(如此恶劣的词汇,逃这道题其实就是给你一个无向图,其中一个点双联通分量算作一个点,询问两个点之间(包括这两个点)有多少点(注意重边不需要缩点)。注意这里的图是无向图,所以我们如果用单纯的Tarjan求强连通分量,就...

VMware16安装centos8详细教程_诸葛延昌的博客-程序员宅基地

配置虚拟机创建-&gt;典型-&gt;下一步稍后安装 下一步linux centos 8 下一步下一步大小加大 下一步自定义硬件设置内存和处理器设置镜像源网络设置最后删掉打印机声卡点击完成安装系统开启虚拟机直接安装很顺利到这一步,选中文下一步解决爆红配置,没有顺序,1.安装目的地只点完成,其他不要动要不然2.密码3.网络4.软件选择现在电脑普遍性能过剩, 可以带界面其他默认就行等啊等舒服了...

使用Git拉取远程仓库的项目_拉取git远端仓库下所有工程脚本_Terisadeng的博客-程序员宅基地

Git和TortoiseGit安装完成之后,这时应该已经配置了用户名和邮箱,再C盘用户目录下可以看到一个.gitconfig的文件:其中就是注册的用户名和邮箱,如果没有注册,可以通过Git Bash中git config --global user.name=”xxx”和git config –global user.email=”xxx”。如果想要从git仓库克隆项目下来,首先需...

随便推点

python常用概率分布直方图绘制_python 概率分布直方图_小游园的博客-程序员宅基地

import numpy.random as nprimport matplotlib.pyplot as pltfrom pylab import mplmpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['axes.unicode_minus'] = FalseI=1000x_norm = npr.normal(l...

【CodeForces】222B - Cosmic Tables(思维)_wyg1997的博客-程序员宅基地

点击打开题目B. Cosmic Tablestime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThe Free Meteor Association

python做游戏文字对战游戏6000字_花海编程的博客-程序员宅基地

文字对战游戏主要的系统分类:角色系统:种族系统和技能系统战斗系统:采用回合制商城系统:游戏的道具贩卖系统充值系统:充值各系统功能细化:角色系统--种族系统分为2大种类:法师和战士游戏世界有五大属性(金、木、水、火、土)金克木,木克土,土克水,水克火,火克金。无论战士还是法师都有自己的属性。当一个属性被另一个属性克制的时候,攻击力和防御力都会减弱。法师系:属性:五种属性中的一种。对同类属性的道具有加成。血量值较低 初值较低为战士的75% 血量成长系数

已解决Cannot download “https://github.com/sass/node-sass/releases/download/v4.12.0/win32-x64-83_binding_拾年一剑的博客-程序员宅基地

问题执行 npm install时,遇到下面错误Downloading binary from https://github.com/sass/node-sass/releases/download/v4.12.0/win32-x64-83_binding.nodeCannot download "https://github.com/sass/node-sass/releases/download/v4.12.0/win32-x64-83_binding.node":HTTP error 404

Linux安装yum教程_linux yum安装_苏木力格的博客-程序员宅基地

Linux安装yum标签:教程1.检查是否安装查看是否安装yum 若是安装了还有那些包rpm -qa |grep yum2.删除原有的yumrpm -aq|grep yum|xargs rpm -e –nodeps3.专门存放下载的路径cd /usr/local/src4.下载安装依赖包py下载地址:进度条100%表示已完成wget http://mirrors....

LINK error2019_不明确的入口点 maincrtstartup_**:天下第一的博客-程序员宅基地

正在编译...1>Hash_table.cpp1>正在链接...1>LINK : warning LNK4067: 不明确的入口点;选定“mainCRTStartup”1>Hash_table.obj : error LNK2019: 无法解析的外部符号 "int __cdecl hash(class Record const &)" (?hash@@YAHABVRecord@@@

推荐文章

热门文章

相关标签