基于javaweb+JSP+Servlet网上书店图书商城(前台、后台)

基于javaweb+JSP+Servlet网上书店图书商城(前台、后台)

开发工具:eclipse/idea/myeclipse/sts等均可配置运行

适用

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

		this.book_id = book_id;
	}

	public String getBook_name() {
		return book_name;
	}

	public void setBook_name(String book_name) {
		this.book_name = book_name;
	}

	public String getBook_author() {
		return book_author;
	}
	}

	public int getQuantity() {
		return quantity;
	}

	public void setQuantity(int quantity) {
		this.quantity = quantity;
	}

	public double getMoney() {
		return money;
	}

	public void setMoney(double money) {
		this.money = money;
	}

	public String getTime() {
		return time;
	}

	public void setTime(String time) {
		this.time = time;
	}

		order.setItems(oItems);
		service.genOrder(order);
		req.setAttribute("order", order);
		req.getSession().removeAttribute("cart");
		req.removeAttribute("cart");
		req.getRequestDispatcher("/order.jsp").forward(req, resp);
	}

	// 生成订单号
	private String genOrdernum() {
		Date now = new Date();
		DateFormat df = new SimpleDateFormat("yyyyMMdd");
		String s1 = df.format(now);
		return s1 + System.nanoTime();
	}

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

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}
package com.demo.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
        // 添加工作人员
        if (op.equals("addAdmin")) {
            addAdmin(req, resp);
        }
        // 书籍销售情况
        if (op.equals("sales")) {
            sales(req, resp);
        }
        //搜索
        if (op.equals("search")) {
            search(req, resp);
        }
    }

		order.setItems(oItems);
		service.genOrder(order);
		req.setAttribute("order", order);
		req.getSession().removeAttribute("cart");
		req.removeAttribute("cart");
		req.getRequestDispatcher("/order.jsp").forward(req, resp);
	}

	// 生成订单号
	private String genOrdernum() {
		Date now = new Date();
		DateFormat df = new SimpleDateFormat("yyyyMMdd");
		String s1 = df.format(now);
		return s1 + System.nanoTime();
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed"
                        data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"
                        aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span> <span
                        class="icon-bar"></span> <span class="icon-bar"></span> <span
                        class="icon-bar"></span>
                </button>
                <a href="${pageContext.request.contextPath}/client/ClientServlet?op=category"><img style="background-size:contain;height: 50px;width: 200px"
                                                       src="${pageContext.request.contextPath}/img/logo.png" />
                </a>
                <c:if test="${!empty user}">
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欢迎您:<span
                    style="color: red; font-weight: bold">${sessionScope.user.name}</span>&nbsp;&nbsp;&nbsp;&nbsp;网上书店伴您畅游书海。
                    <img src="/img/gerenzx.png"
                         style="margin-left: 1000px"/>&nbsp;&nbsp;
                    <a href="/personalCenter.jsp" style="color: black">个人中心</a>
                </c:if>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse"
			preparedStatement.setString(1, "%" + search + "%");
			ResultSet rs = preparedStatement.executeQuery();
			while (rs.next()) {
				Book books = new Book();
				books.setBook_id(rs.getString("book_id"));
				books.setBook_name(rs.getString("book_name"));
				books.setBook_author(rs.getString("book_author"));
				books.setBook_press(rs.getString("book_press"));
				Category category = findCategoryById(rs.getString("book_category"));
				books.setCategory(category);
				books.setFilename(rs.getString("filename"));
				books.setPath(rs.getString("path"));
				books.setBook_desc(rs.getString("book_desc"));
				books.setBook_kunumber(rs.getInt("book_kunumber"));
				books.setBook_xiaonumber(rs.getInt("book_xiaonumber"));
				books.setBook_price(rs.getDouble("book_price"));
				lists.add(books);
			}
			return lists;
		} catch (Exception e) {
			e.printStackTrace();
		}
                                            <label for="Ssex">性别:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
                                            <input type="radio" name="sex" value="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input
                                                type="radio" name="sex" value=""><br>
                                            <div class="form-group">
                                                <label for="exampleInputName2">手机号:</label> <input
                                                    type="text" name="tel" class="form-control"
                                                    id="tel" placeholder="请输入手机号">
                                            </div>
                                            <div class="form-group">
                                                <label for="exampleInputName2">地址:</label> <input
                                                    type="text" name="address" class="form-control"
                                                    id="address" placeholder="请输入地址">
                                            </div>
                                        </div>
                                        <div class="modal-footer">
                                            <button type="button" class="btn btn-default"
                                                    data-dismiss="modal">关闭
                                            </button>
                                            <button type="submit" class="btn btn-primary" id="add-register">注册</button>
                                        </div>
                                    </form>
                                </div>
				order.setQuantity(rs.getInt("quantity"));
				order.setStatus(rs.getInt("status"));
				order.setTime(rs.getString("time"));
				order.setUser(findUserByid(userId));
				list.add(order);
			}
			return list;
		} catch (Exception e) {
			e.printStackTrace();
		}
		throw new RuntimeException("");
	}

	//查询所有的订单
	@Override
	public List<Order> findOrders() {
		try {
			PreparedStatement prepareStatement = connection
					.prepareStatement("select * from orders order by ordernum desc");
			ResultSet rs = prepareStatement.executeQuery();
			List<Order> list = new ArrayList<Order>();
			while (rs.next()) {
				Order order = new Order();
				List<Orderitem> items = finOrdersItemsByNum(rs.getString("ordernum"));
				order.setItems(items);
				order.setMoney(rs.getDouble("money"));
				order.setOrdernum(rs.getString("ordernum"));

运行环境

Java≥8、Tomcat≥8.0、MySQL≥5.7

开发工具

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

技术框架

JSP Servlet MySQL JDBC Tomcat CSS JavaScript bootstrap jquery

适用

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

功能说明

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

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

20220314101718

前台

20220314091417

20220314091607

20220314091633

20220314091854

20220314091942

20220314091951

后台

20220314092055

20220314093550

20220314093604

20220314093620

20220314093646


  • 0
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
这个网上书城系统使用Eclipse开发的,代码完整,jar包齐全,sql脚本包含在里面,将下载下来的项目导入到Eclipse中即可运行,本项目做了很多校验,对可能出现的bug做了考虑,属于比较完善的系统。本系统包含九个模块,前台模块分为:用户模快,分类模块,图书模块,购物车模块,订单模块;后台模块分为:管理员模块,分类管理模快,图书管理模快,订单管理模块。书城界面简洁,易于操作,简单易懂,代码均有注释,各模块功能完善。各大模块的功能描述:前台: 1). 用户模块功能有: * 用户注册: > 表单页面是jQuery做校验(包含了ajax异步请求) # 在输入框失去焦点时进行校验; # 在提交时对所有输入框进行校验; # 在输入框得到焦点时,隐藏错误信息。 > 表单页面使用一次性图形验证码; > 在servlet中再次做了表单校验。 * 用户登录: > 表单校验与注册功能相同; > 登录成功时会把当前用户名保存到cookie中,为了在登录页面的输入框中显示! * 用户退出:销毁session 2). 分类模块 * 查询所有分类: > 有1级和2级分类 > 在页面中使用手风琴式菜单(Javascript组件)显示分类。 3). 图书模块: * 按分类查询 * 按作者查询 * 按出版社查询 * 按书名模糊查询 * 多条件组合查询 * 按id查询 除按id查询外,其他都是分页查询。 技术难点: > 组合查询:根据多个条件拼凑sql语句。 > 带条件分页查询:条件可能会丢失。使用自定义的PageBean来传递分页数据! > 页面上的分页导航:页码列表的显示不好计算! 4). 购物车模块: * 添加条目 * 修改条目数量 * 删除条目 * 批量删除条目 * 我的购物车 * 查询被勾选条目 购物车没有使用sesson或cookie,而是存储到数据库中。 技术难点: > 添加条目时,如果两次添加针对同一本书的条目,不是添加,而是合并; > 修改数量时使用ajax时请求服务器端,服务器端返回json。 > 大量js代码 5). 订单模块: * 生成订单 * 我的订单 * 查看订单详细 * 订单支付 * 订单确认收货 * 取消订单 后台 1). 管理员 * 管理员登录 2). 分类管理 * 添加1级分类 * 添加2级分类: 需要为2级分类指定所属1级分类 * 编辑1级分类 * 编辑2级分类: 可以修改所属1级分类 * 删除1级分类: 存在子分类时,不能删除 * 删除2级分类: 当前2级分类下存在图书时不能删除 * 查看所有分类 3). 图书管理 * 各种查询:与前台相同 * 添加图书: > 上传图片 > 页面中使用动态下拉列表显示2级分类,当指定1级分类后,2级分类下拉列表中动态显示该1级分类下所有2级分类名称 * 修改图书: 与添加图书相似,也使用动态下拉列表 * 删除图书: 需要删除图书对应图片,再删除图书 4). 订单管理 * 各种查询 * 订单发货 * 订单取消
javaweb是一种以Java为基础的web开发技术,它包括了servletjsp等相关技术。servletJavaEE规范中的一种组件,它主要用于处理用户发送的HTTP请求和返回HTTP响应。servlet可以接收前端页面传来的数据,然后对数据进行处理并返回给前端页面。mysql是一种关系型数据库管理系统,它能够存储大量的数据并提供有效的数据管理和查询功能。在javaweb开发中,我们可以通过servlet来连接mysql数据库,从而实现数据的持久化存储和操作。 jsp是一种基于Java的动态网页开发技术,它可以将Java代码嵌入到HTML页面中,从而实现动态页面的生成和展示。jsp可以使用Java代码来获取数据库中的数据并将其显示在前端页面上,实现了前后端的数据交互。 service是一种用于实现业务逻辑的组件或类,它负责处理具体的业务功能。在javaweb开发中,我们可以将业务逻辑封装在service中,然后在servlet中调用相应的service方法,实现对数据的处理和操作。 考试中无框架要求表示不可以使用现成的框架或库来完成开发任务,需要手动编写相关代码。在考试中,可以考察学生对javaweb技术的理解和应用能力,要求学生能够熟练地使用servletjsp等相关技术,并能够编写出符合需求的代码。此外,对于数据库操作,学生还需要了解mysql的基本操作和相关的jdbc编程技巧。 总而言之,javaweb servlet mysql jsp service的考试是考察学生对javaweb开发技术的掌握程度和应用能力的一种考试形式,学生需要熟练地使用这些技术,并能够灵活运用到实际的开发场景中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值