javaweb网上书店图书馆管理系统

最近博主参与了一个项目,是设计一个网上书店。在项目完成后,收获了许多,在这里分享一下开发过程:
首先是建立数据库:
在这里插入图片描述
接下来是创建项目结构,采用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;
	//要现实的list
	private 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;
	}
	@Override
	public 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 stub
		response.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 stub
		int 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 stub
		PrintWriter 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 stub
		List<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 stub
		PrintWriter 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 exception
			e.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 stub
		PrintWriter 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();
	@Override
	public List<Menus> getMenusAll() {
		// TODO Auto-generated method stub
		return menusDao.getMenusAll();
	}

	@Override
	public Page getMenusAll(Page page) {
		// TODO Auto-generated method stub
		return menusDao.getMenusAll(page);
	}
	/* (non-Javadoc)
	 * @see com.java.service.IMenusService#deleteTypes(int)
	 */
	/* (non-Javadoc)
	 * @see com.java.service.IMenusService#deleteMenus(int)
	 */
	@Override
	public int deleteMenus(String name) {
		// TODO Auto-generated method stub
		return 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)
	 */
	@Override
	public 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)
	 */
	@Override
	public Menus getMenusByID(int id) {
		// TODO Auto-generated method stub
		return menusDao.getMenusByID(id);
	}
	/* (non-Javadoc)
	 * @see com.java.service.IMenusService#updateMenus(com.java.pojo.Menus)
	 */
	@Override
	public int updateMenus(Menus menus) {
		// TODO Auto-generated method stub
		Menus 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)
	 */
	@Override
	public 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 block
			e.printStackTrace();
		}
		return list;
	}

	@Override
	public Page getMenusAll(Page page) {
		// TODO Auto-generated method stub
		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";
		Page page1=null;
		
			page1 = dbutil.getQueryPage(MenusInfo.class, sql, null, page);
		
		return page1;
	}
	/* (non-Javadoc)
	 * @see com.java.dao.IMenusDao#deleteTypes(int)
	 */
	@Override
	public int deleteMenus(String name) {
		// TODO Auto-generated method stub
		String 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 block
			e.printStackTrace();
		}
		return result;
	}
	/* (non-Javadoc)
	 * @see com.java.dao.IMenusDao#addMenus(com.java.pojo.Menus)
	 */
	@Override
	public int addMenus(Menus menus) {
		// TODO Auto-generated method stub
		String 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 block
			e.printStackTrace();
		}
		return result;
	}
	/* (non-Javadoc)
	 * @see com.java.dao.IMenusDao#getMenusByName(java.lang.String)
	 */
	@Override
	public Menus getMenusByName(String name) {
		// TODO Auto-generated method stub
		String 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 block
			e.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)
	 */
	@Override
	public 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 block
			e.printStackTrace();
		}
		return result;

	}
	/* (non-Javadoc)
	 * @see com.java.dao.IMenusDao#getMenusByID(int)
	 */
	@Override
	public Menus getMenusByID(int id)  {
		// TODO Auto-generated method stub
		String 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 block
			e.printStackTrace();
		}
		return menus;
	}

	
	

}

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

发布了58 篇原创文章 · 获赞 145 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/pengxiang1998/article/details/103915024