最近博主参与了一个项目,是设计一个网上书店。在项目完成后,收获了许多,在这里分享一下开发过程:
首先是建立数据库:

接下来是创建项目结构,采用MVC开发模式:


实现效果如图所示:


项目更新

博主新开发了其他系统,分享给大家
商品销售系统

接下来列出几个主要代码,以数据查询为例:
首先是从index.jsp中发出查询功能:
其执行了判断,看分页查询中是否有值:

<c:if test="${empty page }"><jsp:forward page="../indexServlet?action=findAll"></jsp:forward></c:if>

分页封装代码:Page.java

package com.java.util;import java.util.ArrayList;
import java.util.List;/** 分页实体类*/
public class Page {//每页显示的条数private int pageNumber=4;//当前页private int curPage;//总条数private int rows;//总页数private int totalPage;//要现实的listprivate List list=new ArrayList();public int getPageNumber() {return pageNumber;}public void setPageNumber(int pageNumber) {this.pageNumber = pageNumber;}public int getCurPage() {return curPage;}public void setCurPage(int curPage) {this.curPage = curPage;}public int getRows() {return rows;}public void setRows(int rows) {this.rows = rows;}public int getTotalPage() {return totalPage;}public void setTotalPage(int totalPage) {this.totalPage = totalPage;}public List getList() {return list;}public void setList(List list) {this.list = list;}@Overridepublic String toString() {return "Page [pageNumber=" + pageNumber + ", curPage=" + curPage + ", rows=" + rows + ", totalPage=" + totalPage+ ", list=" + list + "]";}}

MenuServlet.java MVC中的Control,用于View与Model的联系,即完成书据交互

package com.java.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;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 sun.awt.RepaintArea;import com.java.pojo.Menus;
import com.java.pojo.Types;
import com.java.service.IAdminService;
import com.java.service.IMenusService;
import com.java.service.ITypeSrevice;
import com.java.service.impl.ITypeServiceImpl;
import com.java.service.impl.MenusServiceImpl;
import com.java.util.Page;
import com.jspsmart.upload.SmartFile;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;/*** Servlet implementation class MenusServlet*/
@WebServlet("/menusServlet")
public class MenusServlet extends HttpServlet {private static final long serialVersionUID = 1L;IMenusService menusService=new MenusServiceImpl(); ITypeSrevice typesService=new ITypeServiceImpl();/*** @see HttpServlet#HttpServlet()*/public MenusServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubresponse.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");String action=request.getParameter("action");if(action.equals("findAll")){findMenusAll(request,response);}else if(action.equals("delete")){deleteMenus(request,response);}else if(action.equals("findTypesAll")){findTypesAll(request,response);}else if(action.equals("add")){addMenus(request,response);}else if(action.equals("update")){update(request,response);}//else if(action.equals("findTypesAll1")){//findTypesAll1(request,response);//}else if(action.equals("findID")){findMenuByID(request,response);}}/** * 方法描述:* @param request* @param response* @throws IOException * @throws ServletException */private void findMenuByID(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubint id=Integer.parseInt(request.getParameter("id"));Menus menus=menusService.getMenusByID(id);request.setAttribute("menus", menus);List<Types> types=typesService.getTypesAll();request.setAttribute("types", types);request.getRequestDispatcher("/admin/menus_update.jsp").forward(request, response);}/** * 方法描述:* @param request* @param response* @throws IOException */private void update(HttpServletRequest request, HttpServletResponse response) throws IOException {// TODO Auto-generated method stubPrintWriter out=response.getWriter();//String name=request.getParameter("name");int id=Integer.parseInt(request.getParameter("id"));String name = request.getParameter("name");String burden = request.getParameter("burden");String price = request.getParameter("price");String price1 =request.getParameter("price1");String brief = request.getParameter("brief");String typeid = request.getParameter("typeid");Menus menus=new Menus();menus.setId(id);menus.setName(name);menus.setBurden(burden);menus.setBrief(brief);menus.setPrice(price1);menus.setPrice1(price1);menus.setTypeid(typeid);//未获得//menus.setName(name);int result=menusService.updateMenus(menus);if(result==1){out.write("<script>"+"alert('update menus successful');"+"window.location.href='"+request.getContextPath()+"/menusServlet?action=findAll&&curPage=1'; "+"</script>");}else if(result==-1){out.write("<script>"+"alert('the menus existed');"+"window.location.href='"+request.getContextPath()+"//menusServlet?action=findID'; "+"</script>");}else{out.write("<script>"+"alert('update failed');"+"window.location.href='"+request.getContextPath()+"//menusServlet?action=findID'; "+"</script>");}}/** * 方法描述:* @param request* @param response* @throws IOException * @throws ServletException */private void findTypesAll1(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubList<Types> types=typesService.getTypesAll();request.setAttribute("types", types);request.getRequestDispatcher("/admin/menus_update.jsp").forward(request,response);}/** * 方法描述:* @param request* @param response* @throws IOException * @throws ServletException * @throws SmartUploadException */private void addMenus(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{// TODO Auto-generated method stubPrintWriter out=response.getWriter();//创建SmartUpLoad对象SmartUpload smartUpload=new SmartUpload();//执行上传初始化smartUpload.initialize(this.getServletConfig(),request, response);try {//执行上传smartUpload.upload();//4获取用户输入的菜品信息//注意:在使用了该插件后,要这样获取数据String name = smartUpload.getRequest().getParameter("name");String burden = smartUpload.getRequest().getParameter("burden");String price = smartUpload.getRequest().getParameter("price");String price1 = smartUpload.getRequest().getParameter("price1");String brief = smartUpload.getRequest().getParameter("brief");String typeid = smartUpload.getRequest().getParameter("typeid");//获取上传的文件对象SmartFile file = smartUpload.getFiles().getFile(0);//获取第一个文件,因为只能上传一个文件//获取上传文件的名称String imgpath = "img/" + file.getFilePathName();//对Menus对象赋值Menus menus = new Menus(name, typeid, burden, brief, price, price1, imgpath);int result = menusService.addMenus(menus);if (result == 1) {//保存上传文件smartUpload.save("/img");out.write("<script>" + "alert('add menus successful');"+ "window.location.href='" + request.getContextPath()+ "/menusServlet?action=findAll'; " + "</script>");} else if (result == -1) {out.write("<script>" + "alert('the menus existed');"+ "window.location.href='" + request.getContextPath()+ "/admin/menus_add.jsp'; " + "</script>");} else {out.write("<script>" + "alert('add failed');"+ "window.location.href='" + request.getContextPath()+ "/admin/menus_add.jsp'; " + "</script>");}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}/** * 方法描述:* @param request* @param response* @throws IOException * @throws ServletException */private void findTypesAll(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{List<Types> types=typesService.getTypesAll();request.setAttribute("types", types);request.getRequestDispatcher("/admin/menus_add.jsp").forward(request,response);}private void deleteMenus(HttpServletRequest request,HttpServletResponse response) throws IOException {// TODO Auto-generated method stubPrintWriter out=response.getWriter();//int id=Integer.parseInt(request.getParameter("id"));String name=request.getParameter("name");//System.out.print(id);Types types=new Types();//types.setId(id);int result=menusService.deleteMenus(name);if(result==1){out.write("<script>"+"alert('delete successful');"+"window.location.href='"+request.getContextPath()+"/menusServlet?action=findAll'; "+"</script>");}else if(result==0){out.write("<script>"+"alert('delete failed');"+"window.location.href='"+request.getContextPath()+"/menusServlet?action=findAll'; "+"</script>");}}/** * 方法描述:* @param request* @param response* @throws IOException * @throws ServletException */private void findMenusAll(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub//获取当前页码String curPage=request.getParameter("curPage");int curpagestr=0;if(curPage==null||"".equals(curPage)){curpagestr=1;}else{curpagestr=Integer.parseInt(curPage);}//把当前页码赋值给Page的curpage属性Page page=new Page();page.setCurPage(curpagestr);//调用Service分页查询方法page=menusService.getMenusAll(page);//request绑定查询结果request.setAttribute("page", page);//请求转发request.getRequestDispatcher("/admin/menus.jsp").forward(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

MenuService.java 书籍的方法,如查询,修改,删除等

/*** */
package com.java.service;import java.util.List;import com.java.pojo.Menus;
import com.java.util.Page;/** * 类描述:* 作者: pengxiang * 创建日期:2019年5月15日* 修改人:* 修改日期:* 修改内容:* 版本号: 1.0.0   */
public interface IMenusService {/*** * 方法描述:分页查询菜单* @param page 当前页码* @return 分页的数据*/Page getMenusAll(Page page);int deleteMenus(String name);//Menus getMenusByName(String name);/*** * 方法描述:添加菜品* @param menus* @return 影响的行数*/int addMenus(Menus menus);Menus getMenusByID(int id);int updateMenus(Menus menus);List<Menus> getMenusAll();}

MenuServiceImpl.java 书籍方法的具体实现及封装方法具体实现

/*** */
package com.java.service.impl;import java.util.List;import com.java.dao.IMenusDao;
import com.java.dao.impl.MenusDaoImpl;
import com.java.pojo.Admin;
import com.java.pojo.Menus;
import com.java.service.IMenusService;
import com.java.util.Page;/** * 类描述:* 作者: pengxiang * 创建日期:2019年5月15日* 修改人:* 修改日期:* 修改内容:* 版本号: 1.0.0   */
public class MenusServiceImpl implements IMenusService {/* (non-Javadoc)* @see com.java.service.IMenusService#getMenusAll(com.java.util.Page)*/IMenusDao menusDao=new MenusDaoImpl();@Overridepublic List<Menus> getMenusAll() {// TODO Auto-generated method stubreturn menusDao.getMenusAll();}@Overridepublic Page getMenusAll(Page page) {// TODO Auto-generated method stubreturn menusDao.getMenusAll(page);}/* (non-Javadoc)* @see com.java.service.IMenusService#deleteTypes(int)*//* (non-Javadoc)* @see com.java.service.IMenusService#deleteMenus(int)*/@Overridepublic int deleteMenus(String name) {// TODO Auto-generated method stubreturn menusDao.deleteMenus(name);}/* (non-Javadoc)* @see com.java.service.IMenusService#getMenusByName(java.lang.String)*//* (non-Javadoc)* @see com.java.service.IMenusService#addMenus(com.java.pojo.Menus)*/@Overridepublic int addMenus(Menus menus) {// TODO Auto-generated method stub//查询菜品名是否已存在Menus m=menusDao.getMenusByName(menus.getName());if(m!=null){return -1;}return menusDao.addMenus(menus);}/* (non-Javadoc)* @see com.java.service.IMenusService#getMenusByID(int)*/@Overridepublic Menus getMenusByID(int id) {// TODO Auto-generated method stubreturn menusDao.getMenusByID(id);}/* (non-Javadoc)* @see com.java.service.IMenusService#updateMenus(com.java.pojo.Menus)*/@Overridepublic int updateMenus(Menus menus) {// TODO Auto-generated method stubMenus ad=menusDao.getMenusByID(menus.getId());//如果ad不等于空,且name相等,id不相等,不可以修改if(ad!=null&&(menus.getName().equals(ad.getName()))&&(ad.getId()!=menus.getId())){return -1;}return menusDao.updateMenus(menus);}}

MenuDao.java DAO文件,完成数据库交互的方法

/*** */
package com.java.dao;import java.util.List;import com.java.pojo.Menus;
import com.java.pojo.Notice;
import com.java.pojo.Types;
import com.java.util.Page;/** * 类描述:* 作者: pengxiang * 创建日期:2019年5月15日* 修改人:* 修改日期:* 修改内容:* 版本号: 1.0.0   */
public interface IMenusDao {/*** * 方法描述:分页查询所有菜单* @param page 参数为当前分页的页码* @return 返回分页后的数据。级封装在list中的数据*/Page getMenusAll(Page page);int deleteMenus(String name);/*** * 方法描述:根据菜品名称查询* @param name* @return 菜品信息*/Menus getMenusByName(String name);/*** * 方法描述:添加菜品* @param menus* @return 影响的行数*/int addMenus(Menus menus);int updateMenus(Menus menus);/*** * 方法描述:根据菜品ID查询* @param menus id* @return 菜品信息*/Menus getMenusByID(int id);List<Menus> getMenusAll();}

MenuDaoImpl.java 数据库操作具体实现

/*** */
package com.java.dao.impl;import java.util.List;import com.java.dao.IMenusDao;
import com.java.pojo.Menus;
import com.java.pojo.MenusInfo;
import com.java.pojo.Notice;
import com.java.pojo.Types;
import com.java.util.DBUtil;
import com.java.util.Page;/** * 类描述:* 作者: pengxiang * 创建日期:2019年5月15日* 修改人:* 修改日期:* 修改内容:* 版本号: 1.0.0   */
public class MenusDaoImpl implements IMenusDao {DBUtil dbutil=new DBUtil();/* (non-Javadoc)* @see com.java.dao.IMenusDao#getMenusAll(com.java.util.Page)*/@Overridepublic List<Menus> getMenusAll() {String sql="select menus.id, menus.name,imgpath,burden,types.name as typename,brief,price1,sums1,price,sums from menus inner JOIN types on types.id=menus.typeid ORDER BY sums1 desc LIMIT 0,2 ";List list=null;try {list=dbutil.getQueryList(Menus.class, sql, null);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return list;}@Overridepublic Page getMenusAll(Page page) {// TODO Auto-generated method stubString sql="select menus.id, menus.name,imgpath,burden,types.name as typename,brief,price1,sums1,price,sums from menus inner join types on types.id=menus.typeid";Page page1=null;page1 = dbutil.getQueryPage(MenusInfo.class, sql, null, page);return page1;}/* (non-Javadoc)* @see com.java.dao.IMenusDao#deleteTypes(int)*/@Overridepublic int deleteMenus(String name) {// TODO Auto-generated method stubString sql="delete from menus where name=?";Object[] objs={name};int result=0;try {result=dbutil.execute(sql, objs);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;}/* (non-Javadoc)* @see com.java.dao.IMenusDao#addMenus(com.java.pojo.Menus)*/@Overridepublic int addMenus(Menus menus) {// TODO Auto-generated method stubString sql="insert into menus(name,burden,price,price1,brief,typeid,imgpath) values(?,?,?,?,?,?,?)";Object[]obj={menus.getName(),menus.getBurden(),menus.getPrice(),menus.getPrice1(),menus.getBrief(),menus.getTypeid(),menus.getImgpath()};int result=0;try {result=dbutil.execute(sql, obj);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;}/* (non-Javadoc)* @see com.java.dao.IMenusDao#getMenusByName(java.lang.String)*/@Overridepublic Menus getMenusByName(String name) {// TODO Auto-generated method stubString sql="select * from menus where name=?";Object[] obj={name};Menus menus=null;try {menus=(Menus) dbutil.getObject(Menus.class, sql, obj);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return menus;}/* (non-Javadoc)* @see com.java.dao.IMenusDao#updateTypes(com.java.pojo.Types)*//* (non-Javadoc)* @see com.java.dao.IMenusDao#updateMenus(com.java.pojo.Menus)*/@Overridepublic int updateMenus(Menus menus) {// TODO Auto-generated method stub
String sql="update menus set name=?,burden=?,price=?,price1=?,brief=?,typeid=? where id=?";Object[] paramList={menus.getName(),menus.getBurden(),menus.getPrice(),menus.getPrice1(),menus.getBrief(),menus.getTypeid(),menus.getId()};int result=0;try {result=dbutil.execute(sql, paramList);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return result;}/* (non-Javadoc)* @see com.java.dao.IMenusDao#getMenusByID(int)*/@Overridepublic Menus getMenusByID(int id)  {// TODO Auto-generated method stubString sql="select * from menus where id=?";Object[] obj={id};Menus menus=null;try {menus=(Menus) dbutil.getObject(Menus.class, sql, obj);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return menus;}}

至此,数据查询成功并通过Servlet返还给WEB界面。

javaweb网上书店图书馆管理系统相关推荐

  1. 网上书店信息管理系统--基于Mysql数据库与java

    网上书店信息管理系统 一.需求分析 (一)设计系统的意义以及用途 (二)实现的功能 1.用户模块: 1.全部图书浏览 2.图书搜索 3.购物车管理和订单查看 4.修改密码 2.书店管理员模块 1.图书 ...

  2. 网上书店后台管理系统UI界面分享

    网上书店后台管理系统UI界面分享 分享一个自己做的项目用到的布局和配色. 喜欢的朋友可以参考.

  3. javaweb网上书店项目设计_计算机毕业设计能不能用成品?

    大家好,今天我们的话题是计算机毕业设计能不能使用成品.这也是很多学生会问到的一个问题.今天我们就来详细解答一下. 对于这个问题,答案当然是能. 但是有一定前提条件,我们首先列出这些条件: 第一,对成品 ...

  4. javaweb网上宠物商城管理系统分前后台(源码+数据库+开题报告+ppt+文档)

    一. 系统运行环境 硬件配置:2.4G以上处理器,4G以上内存,250G以上硬盘空间: 操作系统:Windows XP.Windows 7或更高版本: 数据库:MySQL: Web服务器:Tomcat ...

  5. 网上书店管理系统mysql代码_网上书店信息管理系统+代码+数据库表

    附录全部源代码 package com.shoeShop.db; import java.sql.Connection; import java.sql.DriverManager; import j ...

  6. UML建模 ——————基于网上书店管理系统

    --基于咪咕云APP系统的UML建模分析 专   业   名    称: : 软件工程 班              级: : 一班 课              程: : UML建模 人      ...

  7. 软件工程项目作业之网上书店项目

    学习网络工程后,我们应该懂得如何去做一个项目的基本流程 题目要求:随着计算机的普及和信息技术的发展,人们的生活发生了日新月异的变化,各类计算机软件逐渐渗透到了社会的每个角落,大大地改善了人们的生活质量 ...

  8. 软件工程作业--网上书店

    软件工程项目作业–网上书店 系统分析 总体需求 功能需求 性能需求 需求分析 前后台管理系统 网上书店分为前后台两个管理系统:前台管理系统是在Internet上接受来自全国各地的客户访问的网上书店前台 ...

  9. javaweb课程设计网上书店

    网上书店系统是一个基于Internet,采用B2C(Business to Consumers)模式,并根据现有的网上书店系统的现状而设计开发的电子商务平台.本文以JSP为开发技术,实现了一个虚拟的网 ...

最新文章

  1. 两大顶级 AI 算法一起开源!Nature、Science 齐发 Alphafold2 相关重磅,双厨狂喜~...
  2. Python机器学习笔记:深入理解Keras中序贯模型和函数模型
  3. Struts(十六):通过CURD来学习Struts流程及ModelDriven的用法
  4. Linux kernel内核调用crypto算法的方法
  5. 201671010117 2016-2017-2 《Java程序设计》Java第十七周学习心得
  6. [蓝桥杯2015决赛]胡同门牌号-模拟+枚举
  7. Storm入门(三)HelloWorld示例
  8. 移动应用开发专业简介(610212)
  9. 世上最好的共享内存(Linux共享内存最透彻的一篇)上集
  10. 陆上物探测量基本理论之一---高程
  11. Java语法糖 : try-with-resources
  12. Android基于高德地图poi的仿微信获取位置
  13. AdventureWorks2008 数据库安装
  14. 通过IP获取地理位置的开放接口汇总
  15. linux查询网络连接状态,Linux 查看网络连接状态
  16. fedora20 grub2的主题更换
  17. uni-app Android端获取设备已连接的WiFi IP地址
  18. jq的深浅复制:extend()
  19. 服务器 12 种基本故障+排查方法
  20. JAVA飞机移动斜着走_java复习 做一个简易的飞机游戏

热门文章

  1. 基于Python的时间序列异常值检测
  2. Charles软件破解方法
  3. Mysql连接命令join
  4. Spring 学习笔记----->AOP
  5. WWW 2022 | 量化交易相关论文(附论文链接)
  6. Log4j simple example
  7. 渲染管线----通俗易懂向面试官介绍
  8. 什么是闭包?(前端面试题系列)
  9. C++11之emplace_back
  10. win10+docker+laradock最新安装