JavaWeb项目练习--分类模块、图书模块

版权声明:转载请联系作者本人!!! https://blog.csdn.net/qq_41307491/article/details/82808309

分类模块

1 分类模块的相关类创建	
	ywnxbx.bookstore.category
			domain:Category
			dao:CategoryDao
			service:CategoryService
			web.servlet:CategoryServlet

2 查询所有分类
	流程:main.jsp(< iframe >) --> CategoryService#findAll() --> left.jsp

domain:

public class Category {
	private String cid;
	private String cname;
}

dao:

public class CategoryDao {
	private QueryRunner qr = new TxQueryRunner();
	
	/**
	 * 查询所有分类
	 * @return
	 */
	public List<Category> findAllCategory() {
		String sql = "select * from category";
		try {
			return qr.query(sql, new BeanListHandler<Category>(Category.class));
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 添加分类
	 * @param category
	 */
	public void addCategory(Category category) {
		String sql = "insert into category values(?,?)";
		try {
			qr.update(sql,category.getCid(),category.getCname());
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 删除分类
	 * @param cid
	 */
	public void deleteCategory(String cid) {
		String sql = "delete from category where cid = ?";
		try {
			qr.update(sql,cid);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 加载分类
	 * @param cid
	 * @return
	 */
	public Category load(String cid) {
		String sql = "select * from category where cid = ?";
		try {
			return qr.query(sql, new BeanHandler<Category>(Category.class),cid);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 修改分类名称
	 * @param category
	 */
	public void edit(Category category) {
		String sql = "update category set cname = ? where cid = ?";
		try {
			qr.update(sql,category.getCname(),category.getCid());
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
}

service:

public class CategoryService {
	private CategoryDao categoryDao = new CategoryDao();
	private BookDao bookDao = new BookDao();
	/**
	 * 查询所有分类
	 * @return
	 */
	public List<Category> findAllCategory() {
		return categoryDao.findAllCategory();
	}
	
	/**
	 * 添加分类
	 * @param category
	 */
	public void addCategory(Category category) {
		categoryDao.addCategory(category);
	}
	
	/**
	 * 删除分类
	 * @param string
	 * @throws CategoryException 
	 */
	public void deleteCategory(String cid) throws CategoryException {
		/*
		 * 检查此分类下是否含有图书
		 * 		若有:不能删除此分类,抛出异常
		 * 调用方法删除
		 */
		int count = bookDao.getCountByCid(cid);
		if(count > 0) throw new CategoryException("该分类下还有图书,不能删除");
		categoryDao.deleteCategory(cid);
 	}
	
	/**
	 * 加载分类
	 * @param cid
	 * @return
	 */
	public Category load(String cid) {
		return categoryDao.load(cid);
	}

	/**
	 * 修改分类
	 * @param category
	 */
	public void edit(Category category) {
		categoryDao.edit(category);
	}
}

web.servlet

public class CategoryServlet extends BaseServlet {
	private static final long serialVersionUID = 3352017120523237513L;
	
	private CategoryService categoryService = new CategoryService();
	
	/**
	 * 查询所有分类
	 * @param request
	 * @param response
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	public String findAllCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//向request域中保存CategoryList
		request.setAttribute("categoryList", categoryService.findAllCategory());
		return "f:/jsps/left.jsp";
	}
}

图书模块

1 创建相关类

ywnxbx.bookstore.book
	domain:Book
	dao:BookDao
	service :BookService
	web.servle:BookServlet

2 查询所有图书
	流程:left.jsp(全部分类)  BookServlet#findAll()  /jsps/book/list.jsp

在这里插入图片描述

3 按分类查询图书
	流程:left.jsp  BookServlet#findByCategory()  list.jsp

在这里插入图片描述

4 查询详细信息(加载)
	流程:list.jsp(点击某一本书)  BookServlet#load()  desc.jsp

在这里插入图片描述

domain

public class Book {
	private String bid;
	private String bname;
	private double price;
	private String author;
	private String image;
	private Category category;  //多方(书)关联一方(分类编号)
	private boolean del;
}

dao


public class BookDao {
	private QueryRunner qr = new TxQueryRunner();
	
	/**
	 * 查询所有图书
	 * @return
	 */
	public List<Book> findAllBook(){
		try {
			
			String sql = "select * from book where del = false";
			return qr.query(sql,new BeanListHandler<Book>(Book.class));
		} catch (SQLException e) {
			throw new RuntimeException(e);
		} 
	}
	
	/**
	 * 按类别编号查询
	 * @param cid
	 * @return
	 */
	public List<Book> findByCategory(String cid) {
		try {	
			String sql = "select * from book where cid = ? and del = false";
			return qr.query(sql,new BeanListHandler<Book>(Book.class),cid);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		} 
	}
	
	/**
	 * 加载指定图书
	 * @param bid
	 * @return
	 */
	public Book findByBid(String bid) {
		try {	
			String sql = "select * from book where bid = ?";
			
			/*
			 * 数据库表中cid无法与Book中Category完成映射,导致不能查询到cid
			 * 
			 * 解决:
			 * 1.使用map做结果集  目的:将所有查询结果用键值对的方式保存
			 * 2.分别用map映射出Category和Book对象
			 * 3.将Category设置进Book中
			 */
			Map<String,Object> map = qr.query(sql,new MapHandler(),bid);
			Category category = CommonUtils.toBean(map, Category.class);
			Book book = CommonUtils.toBean(map, Book.class);
			book.setCategory(category);
			return book;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		} 	
	}
	
	/**
	 * 查询指定分类下图书数目
	 * @param cid
	 * @return
	 */
	public int getCountByCid(String cid) {
		try {	
			String sql = "select count(*) from book where cid = ?";
			Number count = (Number) qr.query(sql,new ScalarHandler(),cid);
			return count.intValue();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		} 
	}
	
	/**
	 * 添加图书
	 * @param book
	 */
	
	public void add(Book book) {
		try {
			String sql = "insert into book values(?,?,?,?,?,?,false)";
			Object[] params = {book.getBid(), book.getBname(), book.getPrice(), 
					book.getAuthor(), book.getImage(), book.getCategory().getCid()
					};
			qr.update(sql, params);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 删除图书
	 * @param bid
	 */
	public void delete(String bid){
		try {
			String sql = "update book set del=true where bid = ?";
			qr.update(sql, bid);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 编辑图书
	 * @param book
	 */
	public void edit(Book book) {
		try {
			String sql = "update book set bname=?, price=?,author=?, image=?, cid=? where bid=?";
			Object[] params = {book.getBname(), book.getPrice(),
					book.getAuthor(), book.getImage(), 
					book.getCategory().getCid(), book.getBid()};
			qr.update(sql, params);
		} catch(SQLException e) {
			throw new RuntimeException(e);
		}
	}
}

service

public class BookService {
	private BookDao bookDao = new BookDao();
	
	/**
	 * 查询所有图书
	 * @return
	 */
	public List<Book> findAllBook(){
		return bookDao.findAllBook();
	}
	
	/**
	 * 按类别查询图书
	 * @param cid
	 * @return
	 */
	public List<Book> findByCategory(String cid) {
		return bookDao.findByCategory(cid);
	}

	/**
	 * 加载指定图书
	 * @param bid
	 * @return
	 */
	public Book load(String bid) {
		return bookDao.findByBid(bid);
	}
	
	/**
	 * 添加图书
	 * @param book
	 */
	public void add(Book book) {
		bookDao.add(book);
	}
	
	/**
	 * 删除图书
	 * @param bid
	 */
	public void delete(String bid){
		bookDao.delete(bid);
	}
	
	/**
	 * 编辑图书
	 * @param book
	 */
	public void edit(Book book) {
		bookDao.edit(book);
	}
}

servlet

public class BookServlet extends BaseServlet {
	private static final long serialVersionUID = 1L;
	
	private BookService bookService = new BookService();
	/**
	 * 查询所有图书
	 * @param request
	 * @param response
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	public String findAllBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//查询所有图书,将查询结果保存到request中
		request.setAttribute("bookList", bookService.findAllBook());
		return "f:/jsps/book/list.jsp";
	}
	
	/**
	 * 按分类查询图书
	 * @param request
	 * @param response
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	public String findByCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//得到类别编号
		String cid = request.getParameter("cid");
		//按分类查询图书,将查询结果保存到request中
		request.setAttribute("bookList", bookService.findByCategory(cid));
		return "f:/jsps/book/list.jsp";
	}
	
	/**
	 * 加载指定图书
	 * @param request
	 * @param response
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	public String load(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//得到图书bid
		String bid = request.getParameter("bid");
		//通过bid查询,将结果保存到request中
		request.setAttribute("book", bookService.load(bid));
		return "f:/jsps/book/desc.jsp";	
	}
}

jsps:

1)desc.jsp   显示图书信息 

	<style type="text/css">
		body {
			font-size: 10pt;
		}
		div {
			margin:20px;
			border: solid 2px gray;
			width: 150px;
			height: 150px;
			text-align: center;
		}
		li {
			margin: 10px;
		}
		a {
			background: url(<c:url value='/images/all.png'/>) no-repeat;
			display: inline-block;
			
			background-position: 0 -70px;
			margin-left: 30px;
			height: 36px;
			width: 146px;
		}
		a:HOVER {
			background: url(<c:url value='/images/all.png'/>) no-repeat;
			display: inline-block;
			
			background-position: 0 -106px;
			margin-left: 30px;
			height: 36px;
			width: 146px;
		}
	</style>
	  </head>
	  
	  <body>
	  
	  <div>
	    <img src="<c:url value='/${book.image }'/>" border="0"/>
	  </div>
	  
	  <ul>
	    <li>书名:${book.bname }</li>
	    <li>作者:${book.author }</li>
	    <li>单价:${book.price }</li>
	  </ul>
	  
	
	  <form id="form" action="<c:url value='/CartServlet'/>" method="post">
		  	<%--指定要调用的方法 --%>
		  	<input type="hidden" name="method" value="add"/>
		  	<input type="hidden" name="bid" value="${book.bid }"/>
		  	<input type="text" size="3" name="count" value="1"/>
		  </form>
		  <a href="javascript:document.getElementById('form').submit();"></a>
	  
	  </body>

2)list.jsp  遍历显示所有图书

	<style type="text/css">
		body {
			font-size: 10pt;
		}
		.icon {
			margin:10px;
			border: solid 2px gray;
			width: 160px;
			height: 180px;
			text-align: center;
			float: left;
		}
	</style>
	  </head>
	  
	  <body>
	
	<c:forEach items="${bookList }" var="book">
	 
	 <div class="icon">
	    <a href="<c:url value='/BookServlet?method=load&bid=${book.bid }'/>">
	    <img src="<c:url value='/${book.image }'/>" border="0"/></a> <br/>
	   	
	   	<a href="<c:url value='/BookServlet?method=load&bid=${book.bid }'/>">${book.bname }</a>
	  </div>
	
	</c:forEach>
	
	  </body>


猜你喜欢

转载自blog.csdn.net/qq_41307491/article/details/82808309