package com.bite.mybook.action;
import com.alibaba.fastjson.JSON;
import com.bite.mybook.bean.Book;
import com.bite.mybook.biz.BookBiz;
import com.bite.mybook.util.DateHelper;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
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 javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
/*
* 1. query 查询
* 2.
* */
@WebServlet("/book")
public class BookServlet extends HttpServlet {
// Book类型的业务操作对象
BookBiz bookBiz = new BookBiz();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
/**
* /book?type=add 添加图书
* /book?type=modifypre&id=xx 修改前准备
* /book?type=modify 修改
* /book?type=remove&id=xx 删除
* /book?type=query&pageIndex=1 :分页查询(request:转发)
* /book?type=details&id=xx 展示书籍详细信息
* /book?type=doajax&name=xx :使用ajax查询图书名对应的图书信息
*
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
//验证用户是否登录
HttpSession session = req.getSession();
if (session.getAttribute("user") == null) {
out.println("<script>alert('请登录');parent.window.location.href='login.html';</script>");
return;
}
String type = req.getParameter("type");
switch (type) {
case "add":
try {
add(req, resp, out);
} catch (FileUploadException e) {
e.printStackTrace();
resp.sendError(500, "文件上传失败");
} catch (Exception e) {
e.printStackTrace();
resp.sendError(500, e.getMessage());
}
break;
case "modifypre":
//book?type=modifypre&id=xx
long bookId = Long.parseLong(req.getParameter("id"));
Book book = bookBiz.getBookByBookId(bookId);
req.setAttribute("book", book);
req.getRequestDispatcher("book_modify.jsp").forward(req, resp);
break;
case "modify":
try {
modify(req, resp, out);
} catch (Exception e) {
e.printStackTrace();
}
break;
case "remove":
//1.获取删除的bookid
long removeId = Long.parseLong(req.getParameter("id"));
//2. 调用biz删除方法
try {
boolean count = bookBiz.remove(removeId);
if (count) {
out.println("<script>alert('图书删除成功'); location.href='book?type=query&pageIndex=1';</script>");
} else {
out.println("<script>alert('图书删除失败'); location.href='book?type=query&pageIndex=1';</script>");
}
} catch (Exception e) {
e.printStackTrace();
out.println("<script>alert('" + e.getMessage() + "'); location.href='book?type=query&pageIndex=1';</script>");
}
//3. 提示+跳转=>out (查询的servlet)
break;
case "query":
query(req, resp, out);
break;
case "details":
details(req, resp, out);
break;
case "doajax":
String name = req.getParameter("name");
Book book2 = bookBiz.getBookByName(name);
if (book2 == null) {
out.print("{}");//null json 对象
} else {
out.print(JSON.toJSONString(book2));
}
break;
default:
resp.sendError(404);
}
}
/**
* 修改图书信息的方法
*
* @param req
* @param resp
* @param out
*/
private void modify(HttpServletRequest req, HttpServletResponse resp, PrintWriter out) throws Exception {
//1.构建一个磁盘工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//1.1 设置大小
factory.setSizeThreshold(1024 * 9);
//1.2 临时仓库
File file = new File("c:\\temp");
if (!file.exists()) {
file.mkdir();//创建文件夹
}
factory.setRepository(file);
//2.文件上传+表单数据
ServletFileUpload fileUpload = new ServletFileUpload(factory);
//3.将请求解析成一个个FileItem(文件+表单元素)
List<FileItem> fileItems = fileUpload.parseRequest(req);
//4.遍历FileItem
Book book = new Book();
for (FileItem item : fileItems) {
if (item.isFormField()) {
//4.1 元素名称和用户填写的值 name: 文城
String name = item.getFieldName();
String value = item.getString("utf-8");//防止乱码
switch (name) {
case "id":
book.setId(Long.parseLong(value));
break;
case "pic":
book.setPic(value);
break;
case "typeId":
book.setTypeId(Long.parseLong(value));
break;
case "name":
book.setName(value);
break;
case "price":
book.setPrice(Double.parseDouble(value));
break;
case "desc":
book.setDesc(value);
break;
case "publish":
book.setPublish(value);
break;
case "author":
book.setAuthor(value);
break;
case "stock":
book.setStock(Long.parseLong(value));
break;
case "address":
book.setAddress(value);
break;
}
} else {
//4.2 文件: 图片的文件名 文城.png,用户不选择图片时,fileName的数据为""
String fileName = item.getName();
//避免文件替换:当前的系统时间.png
if (fileName.trim().length() > 0) {
//4.2.1 获取后缀名 .png
String filterName = fileName.substring(fileName.lastIndexOf("."));
//4.2.2 修改文件名 20211117112512234.png
fileName = DateHelper.getImageName() + filterName;
//保存到哪里
//虚拟路径: Images/cover/1-1.png
//文件的读写:实际路径 D://xx --> 虚拟路径: Images/cover对应的实际路径
String path = req.getServletContext().getRealPath("/Images/cover")
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Java语言的Servlet技术完成的图书管理系统源码+部署教程.zip 本项目是本人在大三阶段,学习完了Java Web相关的知识点,为了对知识点进行总结和更好的掌握,编写的一款基于Java语言,Servlet、Jsp、MySQL等技术的实现的图书借阅管理系统。也是本人第一款独立完成能够实现其功能的项目。 此项目主要完成了会员管理、图书管理、图书类型管理、图书借阅管理...等功能模块,能够实现基本的会员、图书、图书类型的增删改查,以及对会员借阅图书功能的完成。 项目当中部分功能的实现会在所难免的有小瑕疵,会在文章的末尾进行标注记录,方便后续的重构优化,也方便各位友人的学习和参考。 项目环境 Windows 11 IntelliJ IDEA 2021.3.1 Java:JDK1.8 Tomcat 8.5.60 Servlet:3.1 Mysql:5.6 JSP 项目依赖 c3p0-0.9.5.5 commons-dbutils-1.7 commons-fileupload-1.4 commons-io-2.8.0 fastjson-1.2.47 jstl-1.2
资源推荐
资源详情
资源评论
收起资源包目录
基于Java语言的Servlet技术完成的图书管理系统源码+部署教程.zip (109个子文件)
skin.css 4KB
login_content_bg.gif 20KB
menu_bg2.gif 4KB
logo.gif 3KB
menu_bgs.gif 2KB
mime.gif 2KB
menu_bg1.gif 1KB
menu-top-line.gif 1KB
nav_right_bg.gif 735B
icon_demo.gif 648B
icon_phone.gif 633B
ts.gif 597B
icon_mail.gif 592B
out.gif 565B
top_top_bg.gif 556B
index.gif 550B
left_top_right.gif 391B
buttom_right.gif 383B
buttom_left.gif 353B
content_bg.gif 257B
buttom_bgs.gif 225B
login_top_bg.gif 174B
mail_right_bg.gif 169B
news_title_bg.gif 166B
mail_left_bg.gif 131B
login.html 4KB
mysql-connector-java-5.1.42-bin.jar 973KB
mchange-commons-java-0.2.19.jar 616KB
fastjson-1.2.47.jar 534KB
c3p0-0.9.5.5.jar 490KB
jstl-1.2.jar 405KB
standard-1.1.2.jar 384KB
commons-io-2.8.0.jar 279KB
commons-dbutils-1.7.jar 95KB
commons-fileupload-1.4.jar 71KB
BookServlet.java 14KB
MemberServlet.java 8KB
RecordServlet.java 6KB
MemberDao.java 6KB
TypeServlet.java 5KB
BookDao.java 5KB
UserServlet.java 4KB
MemberBiz.java 4KB
DBHelper.java 4KB
BookBiz.java 4KB
RecordBiz.java 4KB
RecordDao.java 4KB
TypeDao.java 3KB
ValCodeServlet.java 3KB
TypeBiz.java 3KB
Book.java 2KB
Record.java 2KB
UserDao.java 2KB
Member.java 2KB
Membertype.java 1KB
MembertypeDao.java 1KB
UserBiz.java 1KB
User.java 1KB
TypeServlertContextListener.java 931B
MembertypeBiz.java 892B
Type.java 747B
BookServletContextListener.java 616B
DateHelper.java 434B
book.jpg 292KB
login_bg.jpg 20KB
top_bt.jpg 20KB
jquery-3.3.1.min.js 85KB
jquery-migrate-1.2.1.js 20KB
moo.fx.pack.js 8KB
prototype.lite.js 4KB
moo.fx.js 4KB
Ajax.js 229B
book_rent.jsp 15KB
return_list.jsp 14KB
book_modify.jsp 13KB
book_add.jsp 11KB
mem_add.jsp 11KB
mem_modify.jsp 11KB
book_details.jsp 11KB
book_list.jsp 8KB
type_modify.jsp 8KB
rent_list.jsp 8KB
set_pwd.jsp 7KB
mem_list.jsp 6KB
type_add.jsp 6KB
mem_recharge.jsp 6KB
main.jsp 6KB
left.jsp 6KB
type_list.jsp 6KB
index.jsp 1KB
top.jsp 1KB
项目部署.md 3KB
img.png 522KB
101-1.png 304KB
101-3.png 283KB
manhu.png 280KB
101-4.png 209KB
101-2.png 205KB
101-5.png 79KB
img3.png 52KB
共 109 条
- 1
- 2
资源评论
onnx
- 粉丝: 9384
- 资源: 5588
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功