基于javaweb的JSP+Servlet网上书店图书商城(前台、后台)(java+jsp+servlet+javabean+mysql+tomcat)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

前台:登录注册、管理个人信息、修改密码、收藏图书、下单购买

后台:管理个人信息、书籍管理、分类管理、图书管理、订单管理、用户管理、添加管理员,销售统计信息

230123142502

前台

110123142502

120123142502

130123142502

150123142502

160123142502

170123142502

后台

180123142502

190123142502

200123142502

210123142502

220123142502

技术框架

JSP Servlet MySQL JDBC Tomcat CSS JavaScript bootstrap jquery

基于javaweb的JSP+Servlet网上书店图书商城(前台、后台)(java+jsp+servlet+javabean+mysql+tomcat)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
        DiskFileItemFactory factory = new DiskFileItemFactory();
// 构建核心类对象
ServletFileUpload sfu = new ServletFileUpload(factory);
List<FileItem> items = new ArrayList<FileItem>();
items = sfu.parseRequest(req);
Book book = new Book();
for (FileItem item : items) {
if (item.isFormField()) {
// 普通字段:把数据分装到book对象中
processFormField(item, req, book);
} else {
// 上传字段:上传
processUplodFiled(item, req, book);
}
}
// 把书籍信息保存到数据库中
service.addBook(book);
resp.getWriter().write("<div style='text-align: center;margin-top: 260px'><img src='" + req.getContextPath()
+ "/img/duigou.png'/>添加成功!</div>");
}

// 处理文件上传
private void processUplodFiled(FileItem item, HttpServletRequest req, Book book) {
try {
// 存放路径:不要放在web-inf中
// 01.获取存放文件的真实目录
// String dirImages = getServletContext().getRealPath("/images");
String dirImages = req.getServletContext().getRealPath("/") + "images/";
// String dirImages = getServletContext().getRealPath("/img");
// 02. 通过io存文件
// 03. 生成文件名 (用户上传图片, 图片名可能重复)
String FieldName = item.getFieldName();// 输入框的name值
String name = item.getName();
String fileType = name.substring(name.lastIndexOf(".") + 1);
String fileName = UUID.randomUUID().toString();// 生成用不重复的文件名
// 生成文件夹名
Date time = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String strTime = simpleDateFormat.format(time);
// path属性filename
String path = strTime + File.separator + "books";// 存放到book对象中的路径
// String path = "books";// 存放到book对象中
String filename = fileName + "." + fileType;
// fileDir:图片最终存在于fileDir
File fileDir = new File(dirImages, path + File.separator + filename);
// InputStream inputStream = item.getInputStream(); 从请求 对象中 通过流的方式
// 把 上传的文件加载到 内存中 构建输出流
File parentDir = new File(dirImages, path);// 父目录
if (!parentDir.exists()) {
parentDir.mkdirs();
}
book.setFilename(filename);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
}
// 编辑书籍信息前获取书籍的信息回显
if (op.equals("editBookUI")) {
editBookUI(req, resp);
}
// 编辑书籍
if (op.equals("editBook")) {
try {
editBook(req, resp);
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 删除书籍
if (op.equals("delBook")) {
delBook(req, resp);
}
// 获取书籍分类列表
if (op.equals("categoryList")) {
categoryList(req, resp);
}
// 获得分类信息
if (op.equals("editCategoryUI")) {
editCategoryUI(req, resp);
}
// 修改书籍分类信息
if (op.equals("editCategory")) {
editCategory(req, resp);
}
// 删除书籍分类
if (op.equals("delCategory")) {
delCategory(req, resp);
}
// 用户信息管理
if (op.equals("findUsers")) {
findUsers(req, resp);
}
// 添加工作人员
if (op.equals("addAdmin")) {
addAdmin(req, resp);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
	Cart cart = (Cart) session.getAttribute("cart");
User user = (User) session.getAttribute("user");
if (cart == null) {
session.setAttribute("message", "会话已经结束!");
req.getRequestDispatcher("../message.jsp").forward(req, resp);
return;
}
//先判断库存够不够!
Book book = cart.getBook();
String book_id = book.getBook_id();
Book findBookById = clientService.findBookById(book_id);
if(findBookById.getBook_kunumber()-cart.getTotalQuantity()<0) {
session.setAttribute("message", "库存不足,无法购买!");
session.removeAttribute("cart");
req.getRequestDispatcher("../message.jsp").forward(req, resp);
return;
}
Order order = new Order();
order.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
String ordernum = genOrdernum();
order.setOrdernum(ordernum);
order.setQuantity(cart.getTotalQuantity());
order.setMoney(cart.getTotalMoney());
order.setUser(user);
// 订单项
List<Orderitem> oItems = new ArrayList<Orderitem>();
for (Map.Entry<String, CartItem> me : cart.getItmes().entrySet()) {
CartItem cItem = me.getValue();
Orderitem oItem = new Orderitem();
oItem.setId(genOrdernum());
oItem.setBook(cItem.getBook());
oItem.setPrice(cItem.getMoney());
oItem.setQuantity(cItem.getQuantity());
oItem.setOrdernum(ordernum);
oItems.add(oItem);
}
// 建立订单项和订单的关系
order.setItems(oItems);
service.genOrder(order);
req.setAttribute("order", order);
req.getSession().removeAttribute("cart");
req.removeAttribute("cart");
req.getRequestDispatcher("/order.jsp").forward(req, resp);
}

// 生成订单号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
String op = req.getParameter("op");// 得到传过来的请求
// 生成订单
if (op.equals("genOrder")) {
genOrder(req, resp);
}
// 查看订单
if (op.equals("findAllOrders")) {
findAllOrders(req, resp);
}
// 管理员查看订单
if (op.equals("findOrders")) {
findOrders(req, resp);
}
// 发货
if (op.equals("faHuo")) {
faHuo(req, resp);
}
//删除订单
if(op.equals("deletes")) {
deletes(req,resp);
}
}

private void deletes(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String orderNumber = req.getParameter("orderNum");
Order findOrderByNum = service.findOrderByNum(orderNumber);
if(findOrderByNum.getItems().size()!=0) {
return;
}
try {
service.deleteByNumber(orderNumber);
resp.sendRedirect("../admin/managerOrder.jsp");
}catch (Exception e) {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
			+ "/img/duigou.png'/>修改成功!</div>");
}

private void search(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String search = req.getParameter("search");
List<Book> searchmessage = service.search(search);
req.setAttribute("books", searchmessage);
req.setAttribute("name", search==null?"":search);
req.getRequestDispatcher("/showBook.jsp").forward(req, resp);
}

private void particulars(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String book_id = req.getParameter("book_id");
Book book = findBookById(book_id);
req.setAttribute("book", book);
req.getRequestDispatcher("/particulars.jsp").forward(req, resp);
}

// 通过书籍id找到书籍信息
private Book findBookById(String book_id) {
Book book = service.findBookById(book_id);
return book;
}

private void addCart(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
String book_id = req.getParameter("book_id");
Book book = findBookById(book_id);
HttpSession session = req.getSession();
Cart cart = (Cart) session.getAttribute("cart");
if (cart == null) {
cart = new Cart();
cart.addBook(book);
cart.setBook(book);
session.setAttribute("cart", cart);
}else {
session.setAttribute("message", "购物车里有商品,请支付之后再来添加!");
req.getRequestDispatcher("../message.jsp").forward(req, resp);
return;
}
req.getRequestDispatcher("../showCart.jsp").forward(req, resp);
}

private void delItem(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String book_id = req.getParameter("book_id");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
        delBook(req, resp);
}
// 获取书籍分类列表
if (op.equals("categoryList")) {
categoryList(req, resp);
}
// 获得分类信息
if (op.equals("editCategoryUI")) {
editCategoryUI(req, resp);
}
// 修改书籍分类信息
if (op.equals("editCategory")) {
editCategory(req, resp);
}
// 删除书籍分类
if (op.equals("delCategory")) {
delCategory(req, resp);
}
// 用户信息管理
if (op.equals("findUsers")) {
findUsers(req, resp);
}
// 添加工作人员
if (op.equals("addAdmin")) {
addAdmin(req, resp);
}
// 书籍销售情况
if (op.equals("sales")) {
sales(req, resp);
}
//搜索
if (op.equals("search")) {
search(req, resp);
}
}

private void search(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("search");
if (name == null) {
name = "";
}
List<Book> findListByBookName = service.findListByBookName(name);
List<Category> categoryList = service.findAllCategory();// 分类
req.setAttribute("currentName", name);
req.setAttribute("books", findListByBookName);
req.setAttribute("categoryList", categoryList);
req.getRequestDispatcher("/admin/booksList.jsp").forward(req, resp);


项目链接:
https://javayms.github.io?id=472221462905102aw
https://javayms.pages.dev?id=472221462905102aw