实现更新商品列表、分页显示功能

该博客详细介绍了如何实现商品列表的更新和分页显示功能。在更新功能中,涉及了CommoditytypeDao、DaoImpl、Controller和servlet层的DoUpdateServlet。而在分页显示部分,讲解了模型层、CommodityDao、DaoImpl的PageHelper工具类以及PageServlet的使用,最后在welcome.jsp页面和web.xml配置文件中完成展示。
摘要由CSDN通过智能技术生成

CommoditytypeDao层

public interface CommoditytypeDao {
Commoditytype getCommoditytypeById(String ct_id);
List<Commoditytype> getCommoditytypeList();
}

CommoditytypeDaoImpl实现类

public class CommoditytypeDaoImpl implements CommoditytypeDao{
@Override
public Commoditytype getCommoditytypeById(String ct_id) {
	Commoditytype ct = null;
	try {
			Connection conn = DBHelper.getConnection();
			String sql = "select * from commoditytype where ct_id=?";
			List param = new ArrayList();
			param.add(ct_id);
			ResultSet rs = DBHelper.executeQuery(conn, sql, param);
			rs.next();
			ct = new Commoditytype(rs.getString("ct_id"),rs.getString("ct_name"));
			DBHelper.closeConnection(conn);
		}catch(Exception e) {
			e.printStackTrace();
		}
		return ct;
	}

	@Override
public List<Commoditytype> getCommoditytypeList() {
	List<Commoditytype> cts = new ArrayList<>();
		try {
			Connection conn = DBHelper.getConnection();
			String sql = "select * from commoditytype";
			ResultSet rs = DBHelper.executeQuery(conn, sql, null);
			while(rs.next()) {
			Commoditytype ct = new Commoditytype(rs.getString("ct_id"),rs.getString("ct_name"));
			cts.add(ct);
		}
			DBHelper.closeConnection(conn);
		}catch(Exception e) {
			e.printStackTrace();
		}
		return cts;
	}	
}

CommoditytypeController控制层

public class CommoditytypeController {
	private CommoditytypeDao commoditytypeDao = null;
	public CommoditytypeController() {
		commoditytypeDao = new CommoditytypeDaoImpl();
	}

	public List<Commoditytype> getCommoditytypeList(){
		return commoditytypeDao.getCommoditytypeList();
	}
}

以下两个功能均需用到

更新

  • CommodityDao层
public interface CommodityDao {
	List<Commodity> getCommodityList();
	//	根据id查找对应的商品
	Commodity getCommodityById(String c_id);
	//	修改
	int updCommodity(Commodity c);
}

CommodityDaoImpl实现类

public class CommodityDaoImpl implements CommodityDao {

	@Override
	public List<Commodity> getCommodityList() {
		List<Commodity> commoditys = new ArrayList<Commodity>();
		try {
			Connection conn = DBHelper.getConnection();
			String sql = "select * from commodity";
			ResultSet rs = DBHelper.executeQuery(conn, sql, null);
			while(rs.next()) {
				Commodity c = new Commodity();
				c.setC_id(rs.getString("c_id"));
				c.setC_name(rs.getString("c_name"));
				c.setC_madein(rs.getString("c_madein"));
				c.setC_type(rs.getString("c_type"));
				c.setC_inprice(rs.getInt("c_inprice"));
				c.setC_outprice(rs.getInt("c_outprice"));
				c.setC_num(rs.getInt("c_num"));
				c.setCt(new CommoditytypeDaoImpl().getCommoditytypeById(rs.getString("c_type")));
				commoditys.add(c);
			}
			DBHelper.closeConnection(conn);
		}catch(Exception e) {
			e.printStackTrace();
		}
		return commoditys;
	}
	
	//	根据id查找对应的商品
	@Override
	public Commodity getCommodityById(String c_id) {
		Commodity c = null;
		try {
			Connection conn = DBHelper.getConnection();
			String sql = "select * from commodity where c_id=?";
			List param = new ArrayList();
			param.add(c_id);
			ResultSet rs = DBHelper.executeQuery(conn, sql, param);
			rs.next();
			c = new Commodity(rs.getString("c_id"),rs.getString("c_name"),rs.getString("c_madein"),rs.getString("c_type"),rs.getInt("c_inprice"),rs.getInt("c_outprice"),rs.getInt("c_num"));
			DBHelper.closeConnection(conn);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return c;
	}
	//	修改
	@Override
	public int updCommodity(Commodity c) {
		int line = 0;
		Connection conn = DBHelper.getConnection();
		String sql = "update commodity set c_name=?,c_madein=?,c_type=?,c_inprice=?,c_outprice=?,c_num=? where c_id=?";
		List param = new ArrayList();
		param.add(c.getC_name());
		param.add(c.getC_madein());
		param.add(c.getC_type());
		param.add(c.getC_inprice());
		param.add(c.getC_outprice());
		param.add(c.getC_num());
		param.add(c.getC_id());
		
		line = DBHelper.executeUpdate(conn, sql, param);
		DBHelper.closeConnection(conn);
		return line;
	}

}

CoomodityController层

public class CommodityController {
	private CommodityDao commodityDao = null;
	public CommodityController() {
		commodityDao = new CommodityDaoImpl();
	}
	
	public List<Commodity> getCommodityList() {
		return commodityDao.getCommodityList();
	}
	
	public Commodity getCommodityById(String c_id) {
		return commodityDao.getCommodityById(c_id);
	}
	
	public int updCommodity(String c_id,String c_name,String c_madein,String c_type,Integer c_inprice,Integer c_outprice,Integer c_num) {
		Commodity c = new Commodity(c_id,c_name,c_madein,c_type,c_inprice,c_outprice,c_num);
		return commodityDao.updCommodity(c);
	}	
}

servlet层

  • DoUpdateServlet层
public class ToUpdateServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("utf-8");
		String c_id = req.getParameter("c_id");
		
		HttpSession session = req.getSession();
		Commodity c = new CommodityController().getCommodityById(c_id);
		session.setAttribute("commodity", c);
		
		List<Commoditytype> ctList = new CommoditytypeController().getCommoditytypeList();
		session.setAttribute("ctList", ctList);
		
		resp.sendRedirect("/web06/update.jsp");
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}
  • DoUpdateServlet层
public class DoUpdateServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("utf-8");
		
		String c_id = req.getParameter("c_id");
		String c_name = req.getParameter("c_name");
		String c_madein = req.getParameter("c_madein");
		String c_type = req.getParameter("c_type");
		Integer c_inprice = new Integer(req.getParameter("c_inprice"));
		Integer c_outprice = new Integer(req.getParameter("c_outprice"));
		Integer c_num = new Integer(req.getParameter("c_num"));
		
		int line = new CommodityController().updCommodity(c_id, c_name, c_madein, c_type, c_inprice, c_outprice, c_num);
		if(line>0) {
			HttpSession session = req.getSession();
			
			List<Commodity> cList = new CommodityController().getCommodityList();
			session.setAttribute("cList", cList);
			
			List<Commoditytype> ctList = new CommoditytypeController().getCommoditytypeList();
			session.setAttribute("ctList", ctList);
			
			resp.sendRedirect("/web06/welcome.jsp");
		}else {
			//	略
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req,resp);
	}
}

welcome.jsp(部分代码)

<%
List<Commoditytype> ctList = (List<Commoditytype>)session.getAttribute("ctList");
List<Commodity> cList = (List<Commodity>)session.getAttribute("cList");
%>
<!-- 商品列表展示 -->
<tr>
	<td>商品编号</td><td>商品名称</td><td>商品产地</td><td>商品类型</td><td>商品进价</td><td>商品售价</td><td>商品库存</td><td>编辑|删除</td>
</tr>
<%
if(cList != null && cList.size() > 0){
	for(Commodity c:cList){
%>
	<tr>
		<td><%=c.getC_id() %></td><td><%=c.getC_name() %></td><td><%=c.getC_madein() %></td><td><%=c.getCt().getCt_name() %></td><td><%=c.getC_inprice() %></td><td><%=c.getC_outprice() %></td><td><%=c.getC_num() %></td><td><a href="/web06/toUpdateServlet?c_id=<%=c.getC_id() %>">编辑</a>|<a href="/web06/deleteCommodityById?c_id=<%=c.getC_id() %>">删除</a></td>
	</tr>
<%
	}
}
%>

web.xml

<servlet>
   <servlet-name>toUpdateServlet</servlet-name>
   <servlet-class>com.ishopn.servlet.ToUpdateServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>toUpdateServlet</servlet-name>
  	<url-pattern>/toUpdateServlet</url-pattern>
  </servlet-mapping>
  
  <servlet>
   <servlet-name>doUpdateServlet</servlet-name>
   <servlet-class>com.ishopn.servlet.DoUpdateServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>doUpdateServlet</servlet-name>
  	<url-pattern>/doUpdateServlet</url-pattern>
  </servlet-mapping>

分页显示

  • 模型层
public class PageModel<E> {
	//	结果集 用来存储查询处理的集合(泛型)
	private List<E> list;
	//	记录总数据条数
	private int totalRecords;
	//	每页多少条数据
	private int pageSize;
	//	第几页
	private int pageNo;
	
	/**
	 * 总页数
	 * @return
	 */
	public int getTotalPages() {
		return (totalRecords + pageSize - 1)/pageSize;
	}
	
	/**
	 * 首页
	 * @return
	 */
	public int getTopPageNo() {
		return 1;
	}
	
	/**
	 * 上一页
	 * @return
	 */
	public int getPreviousPageNo() {
		if(pageNo <= 1) {
			return 1;
		}
		return pageNo - 1;
	}
	
	
	public int getNextPageNo() {
		if(pageNo >= getTotalPages()) {
			return getBottomPageNo();
		}
		return pageNo + 1;
	}
	
	/**
	 * 尾页
	 * @return
	 */
	public int getBottomPageNo() {
		return getTotalPages();
	}


	public List<E> getList() {
		return list;
	}

	public void setList(List<E> list) {
		this.list = list;
	}

	public int getTotalRecords() {
		return totalRecords;
	}

	public void setTotalRecords(int totalRecords) {
		this.totalRecords = totalRecords;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageNo() {
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}
	
}
  • CommodityDao层
public interface CommodityDao {
	List<Commodity> getCommodityList();
	public List<Commodity> getCommodityListWithPage(int pageNo,int pageSize);
	public int getCommodityCount();
}
  • CommodityDaoImpl实现类
public class CommodityDaoImpl implements CommodityDao {
	@Override
	public List<Commodity> getCommodityList() {
		List<Commodity> commoditys = new ArrayList<Commodity>();
		try {
			Connection conn = DBHelper.getConnection();
			String sql = "select * from commodity";
			ResultSet rs = DBHelper.executeQuery(conn, sql, null);
			while(rs.next()) {
				Commodity c = new Commodity();
				c.setC_id(rs.getString("c_id"));
				c.setC_name(rs.getString("c_name"));
				c.setC_madein(rs.getString("c_madein"));
				c.setC_type(rs.getString("c_type"));
				c.setC_inprice(rs.getInt("c_inprice"));
				c.setC_outprice(rs.getInt("c_outprice"));
				c.setC_num(rs.getInt("c_num"));
				c.setCt(new CommoditytypeDaoImpl().getCommoditytypeById(rs.getString("c_type")));
				commoditys.add(c);
			}
			DBHelper.closeConnection(conn);
		}catch(Exception e) {
			e.printStackTrace();
		}
		return commoditys;
	}

	@Override
	public List<Commodity> getCommodityListWithPage(int pageNo, int pageSize) {
		ArrayList<Commodity> list = new ArrayList<>();
		try {
			Connection conn = DBHelper.getConnection();
			String sql = "select * from commodity limit ?,?";
			ArrayList param = new ArrayList();
			param.add((pageNo-1)*pageSize);
			param.add(pageSize);
			ResultSet rs = DBHelper.executeQuery(conn, sql, param);
			while(rs.next()) {
				Commodity c = new Commodity();
				c.setC_id(rs.getString("c_id"));
				c.setC_name(rs.getString("c_name"));
				c.setC_madein(rs.getString("c_madein"));
				c.setC_type(rs.getString("c_type"));
				c.setC_inprice(rs.getInt("c_inprice"));
				c.setC_outprice(rs.getInt("c_outprice"));
				c.setC_num(rs.getInt("c_num"));
				c.setCt(new CommoditytypeDaoImpl().getCommoditytypeById(rs.getString("c_type")));
				list.add(c);
			}
			DBHelper.closeConnection(conn);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

	@Override
	public int getCommodityCount() {
		int c = 0;
		try {
			Connection conn = DBHelper.getConnection();
			String sql = "select count(*) from commodity";
			ResultSet rs = DBHelper.executeQuery(conn, sql, null);
			rs.next();
			c=rs.getInt(1);
			DBHelper.closeConnection(conn);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return c;
	}
}
  • 工具层—PageHelper(这个类就是用来对 PageModel 类的填充 返回PageModel的实例对象)
public class PageHelper {
	public static PageModel findCommodity(int pageNo,int pageSize) {
		PageModel<Commodity> pageModel = new PageModel<Commodity>();
		List<Commodity> list = new CommodityDaoImpl().getCommodityListWithPage(pageNo, pageSize);
		int total = new CommodityDaoImpl().getCommodityCount();
		pageModel.setPageNo(pageNo);
		pageModel.setPageSize(pageSize);
		pageModel.setTotalRecords(total);
		pageModel.setList(list);
		return pageModel;
	}
}
  • PageServlet
public class PageServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("utf-8");
		
		int pageNo = Integer.parseInt(req.getParameter("pageNo"));
		int pageSize = Integer.parseInt(req.getParameter("pageSize"));
		
		PageModel<Commodity> page = PageHelper.findCommodity(pageNo, pageSize);
		
		HttpSession session = req.getSession();
		
		session.setAttribute("pageView", page);
		List<Commoditytype> ctList = new CommoditytypeController().getCommoditytypeList();
		session.setAttribute("ctList", ctList);
		resp.sendRedirect("/web06/welcome.jsp");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(req, resp);
	}
}

welcome.jsp页面

<%
// ctList
List<Commoditytype> ctList = (List<Commoditytype>)session.getAttribute("ctList");
PageModel p = (PageModel)session.getAttribute("pageView");
//当前页 和 页面大小 要记录下来
int pageNo = p.getPageNo();  
int pageSize = p.getPageSize();  
List<Commodity> cList = p.getList();
%>

<!-- 商品列表展示 -->
<table style="border: 1px solid black; margin:0 auto;">
<tr>
	<td>商品编号</td><td>商品名称</td><td>商品产地</td><td>商品类型</td><td>商品进价</td><td>商品售价</td><td>商品库存</td><td>编辑|删除</td>
</tr>
<%
if(cList != null && cList.size() > 0){
	for(Commodity c:cList){
%>
	<tr>
		<td><%=c.getC_id() %></td><td><%=c.getC_name() %></td><td><%=c.getC_madein() %></td><td><%=c.getCt().getCt_name() %></td><td><%=c.getC_inprice() %></td><td><%=c.getC_outprice() %></td><td><%=c.getC_num() %></td><td><a href="/web06/toUpdateServlet?c_id=<%=c.getC_id() %>">编辑</a>|<a href="/web06/deleteCommodityById?c_id=<%=c.getC_id() %>">删除</a></td>
	</tr>
<%
	}
}
%>
<tr>
	<td colspan="7">
	<%
	//	首页
	if(p.getTopPageNo() == pageNo){
		out.print("首页 ");
	}else{
		out.print("<a href='/web06/pageServlet?pageNo="+p.getTopPageNo()+"&pageSize="+p.getPageSize()+"'>首页</a> ");
	}
	
	//	上一页
	if(p.getPreviousPageNo() == pageNo){
		out.print("上一页 ");
	}else{
		out.print("<a href='/web06/pageServlet?pageNo="+p.getTopPageNo()+"&pageSize="+p.getPageSize()+"'>上一页</a> ");
	}
	
	//	页数的输出
	for(int i=1;i<p.getTotalPages();i++){
		if(i == pageNo){
			out.print(i+" ");
			continue;
		}
		out.print("<a href='/web06/pageServlet?pageNo="+i+"&pageSize="+p.getPageSize()+"'>"+i+"</a> ");
	}
	
	//下一页的输出
	if(p.getNextPageNo()==pageNo){
		out.print("下一页 ");
	}else{
		out.print("<a href='/web06/pageServlet?pageNo="+p.getNextPageNo()+"&pageSize="+p.getPageSize()+"'>下一页</a> ");
	}
	
	//尾页的输出
	if(p.getBottomPageNo()==pageNo){
		out.print("尾页 ");
	}else{
		out.print("<a href='/web06/pageServlet?pageNo="+p.getBottomPageNo()+"&pageSize="+p.getPageSize()+"'>尾页</a> ");
	}
	%>
	<select onchange="javascript:location.href='/web06/pageServlet?pageNo=1&pageSize='+this.value">
		<option value="5" <%=5==pageSize?"selected":"" %>>每页5条记录</option>
		<option value="10" <%=10==pageSize?"selected":"" %>>每页10条记录</option>
		<option value="15" <%=15==pageSize?"selected":"" %>>每页15条记录</option>
	</select>	
	</td>
</tr>
</table>

web.xml

<servlet>
  <servlet-name>pageServlet</servlet-name>
  <servlet-class>com.ishopn.servlet.PageServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>pageServlet</servlet-name>
  <url-pattern>/pageServlet</url-pattern>
</servlet-mapping>

LoginServlet

public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("utf-8");
		
		String cu_name = req.getParameter("cu_name");
		String cu_phone = req.getParameter("cu_phone");
		
		CustomerController cc = new CustomerController();
		int count = cc.getCountCustomerByNameAndPhone(cu_name, cu_phone);
		if(count>0) {
			Cookie cookie = new Cookie("cu_name",cu_name);
			cookie.setMaxAge(60*60*24*7);
			resp.addCookie(cookie);
			
			HttpSession session = req.getSession();
			session.setAttribute("cu_name", cu_name);
			
			PageModel<Commodity> pageView = PageHelper.findCommodity(1, 5);
			session.setAttribute("pageView", pageView);
			
			List<Commoditytype> ctList = new CommoditytypeController().getCommoditytypeList();
			session.setAttribute("ctList", ctList);
			
			resp.sendRedirect("/web06/welcome.jsp");
		}else {
			resp.sendRedirect("/web06");
		}
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req,resp);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现商品和图片的分页功能,可以使用jQuery插件,比如jPages、twbsPagination、pagination.js等。 首先,你需要在页面中引入jQuery和所选的分页插件的JS和CSS文件。然后,你需要准备一些数据,比如商品或图片的数量、每页显示的数量等。 接着,你需要编写jQuery代码来初始化分页插件,并绑定相应的事件。以下是一个示例代码: ```javascript $(document).ready(function() { // 准备数据 var products = [...]; // 商品数据 var pageSize = 10; // 每页显示的数量 var totalPages = Math.ceil(products.length / pageSize); // 总页数 // 初始化分页插件 $('#pagination').twbsPagination({ totalPages: totalPages, visiblePages: 5, onPageClick: function (event, page) { // 当页码被点击时,更新页面内容 var startIndex = (page - 1) * pageSize; var endIndex = startIndex + pageSize; var pageProducts = products.slice(startIndex, endIndex); // 显示商品内容 $('#product-list').empty(); $.each(pageProducts, function(index, product) { $('#product-list').append('<div class="product">' + product.name + '</div>'); }); // 更新图片分页 $('#image-pagination').twbsPagination('setCurrentPage', page); } }); // 初始化图片分页 $('#image-pagination').twbsPagination({ totalPages: totalPages, visiblePages: 5, onPageClick: function (event, page) { // 当页码被点击时,更新页面内容 var startIndex = (page - 1) * pageSize; var endIndex = startIndex + pageSize; var pageProducts = products.slice(startIndex, endIndex); // 显示图片内容 $('#image-list').empty(); $.each(pageProducts, function(index, product) { $('#image-list').append('<div class="image"><img src="' + product.imageUrl + '"></div>'); }); // 更新商品分页 $('#pagination').twbsPagination('setCurrentPage', page); } }); }); ``` 在这个示例代码中,我们使用了twbsPagination插件来实现分页功能。我们首先准备了商品数据和每页显示的数量,然后计算出总页数。接着,我们分别初始化了商品和图片的分页插件,并绑定了onPageClick事件。当页码被点击时,我们更新页面内容,显示相应的商品或图片,并更新另一个分页插件的当前页码。 当然,具体的实现方式还需要根据你的实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值