1. 程式人生 > >40、商品類別管理

40、商品類別管理

學習過程:

昨天完成使用者的登入和註冊功能,今天我們回到後臺完成商品類別和商品的管理,先從比較簡單商品類別做起。大家可以先完成後臺管理員登入功能,和前途登入差不多,所以這裡我就不列出程式碼的實現了,大家可以下載原始碼檢視。按照計劃,我們先完成商品類別的管理,這個功能比較簡單,可以先看看靜態頁面,如下圖:

 

其實主要的功能就是對商品類別進行增刪改查操作,通過對商品類別管理,大家可以基本學會如何對MVC三層框架進行開發的一個思路。首先,我們先完成頁面的開發,這部分功能美工已經完成,所以我們現在可以先實現dao層的開發工作:

1、dao層的實現

public class GoodsTypesDao extends BaseDao implements IGoodsTypesDao  {
    
	/**
	 * 
	 * @param goodsTypes
	 * @return
	 */
	public int addTypes(GoodsTypes goodsTypes) {
		int result = 0;
		getCon();
		String sql = "insert into goods_types(type_name) values(?)";
		result = exeUpdate(sql, new Object[] {goodsTypes.getTypeName()});

		closeAll();
		return result;
	}

	/**
	 * 
	 * @param id
	 * @return
	 */
	public int delTypes(int id) {
		int result = 0;
		getCon();
		String sql = "delete from goods_types where type_id=?";
		result = exeUpdate(sql, new Object[] {id});

		closeAll();
		return result;
	}

	public int updateTypes(GoodsTypes goodsTypes) {
		int result = 0;
		getCon();
		String sql = "update goods_types set type_name=? where type_id=? ";
		result = exeUpdate(sql, new Object[] {goodsTypes.getTypeName(),goodsTypes.getTypeId()});
		closeAll();
		return result;
	}

	public List<GoodsTypes> getAllTypes() {
		List<GoodsTypes> goodsTypeses=new ArrayList<GoodsTypes>();
		getCon();
		String sql="select * from goods_types ";
		rs=exeQuery(sql, null);
		try {
			while(rs.next()){
				GoodsTypes goodsTypes=new GoodsTypes();
				goodsTypes.setTypeId(rs.getInt("type_id"));
				goodsTypes.setTypeName(rs.getString("type_name"));
				
				goodsTypeses.add(goodsTypes);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		closeAll();
		return goodsTypeses;
	}

	public GoodsTypes getTypesById(int id) {
		GoodsTypes goodsTypes=null;
		getCon();
		String sql="select * from goods_types where type_id=?";
        rs=exeQuery(sql, new Object[]{id});
        try {
			if(rs.next()){
				goodsTypes=new GoodsTypes();
				goodsTypes.setTypeId(rs.getInt("type_id"));
				goodsTypes.setTypeName(rs.getString("type_name"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		closeAll();
		return goodsTypes;
	}


}

2、實現控制層也就是servlet的實現。

public class TypesServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		GoodsTypesDao goodsTypesDao = new GoodsTypesDao();

		String ope = request.getParameter("ope");//當前操作
		if (ope == null || ope.equals("") || ope.equals("list")) {
			// 查詢
			List<GoodsTypes> goodsTypeses = goodsTypesDao.getAllTypes();

			request.setAttribute("goodsTypeses", goodsTypeses);

			request.getRequestDispatcher("goodstypeslist.jsp").forward(request,
					response);

		}else if(ope.equals("add")){
			
			String typeName=request.getParameter("typeName");
			GoodsTypes types=new GoodsTypes();
			types.setTypeName(typeName);
			
			int result=goodsTypesDao.addTypes(types);
			if(result>0){
				response.sendRedirect("TypesServlet");
			}else{
				response.sendRedirect("error.jsp");
			}
			
			
		}else if(ope.equals("del")){
			
			int tid=Integer.parseInt(request.getParameter("tid"));
			int result=goodsTypesDao.delTypes(tid);
			if(result>0){
				response.sendRedirect("TypesServlet");
			}else{
				response.sendRedirect("error.jsp");
			}
			
		}else if(ope.equals("toupdate")){
			
			int tid=Integer.parseInt(request.getParameter("tid"));
			GoodsTypes types=goodsTypesDao.getTypesById(tid);
			request.setAttribute("types", types);
			
			request.getRequestDispatcher("goodstypesupdate.jsp").forward(request, response);
			
		}else if(ope.equals("update")){
			int typeId=Integer.parseInt(request.getParameter("typeId"));
			String typeName=request.getParameter("typeName");
			
			GoodsTypes goodsTypes=new GoodsTypes();
			
			goodsTypes.setTypeId(typeId);
			goodsTypes.setTypeName(typeName);
			
			int result=goodsTypesDao.updateTypes(goodsTypes);
			
			if(result>0){
				response.sendRedirect("TypesServlet");
			}else{
				response.sendRedirect("error.jsp");
			}
			
		}

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
       doGet(request, response);
	}

}

3、修改頁面。顯示列表,修改超連結,這裡需要把新增頁面和修改頁面也完成了,程式碼就不全部列出來了,因為比較簡單,只給部分列表頁面的程式碼:

				<div id="admin_content_contain">

					<a href="goodstypesadd.jsp">新增類別</a> <br /> <br />

					<table width="859" border="0" cellspacing="1" bgcolor="#e8822e">
						<tr class="admin_font3">
							<td width="57" height="30">序號</td>
							<td width="98">類別名稱</td>

							<td width="69">操作</td>
						</tr>

						<c:forEach items="${goodsTypeses }" var="type" varStatus="status">
							<tr class="admin_font2">
								<td height="25">${status.index+1 }</td>

								<td>${type.typeName }</td>
								<td><a href="TypesServlet?ope=del&tid=${type.typeId }">刪除</a> | <a href="TypesServlet?ope=toupdate&tid=${type.typeId }">修改</a>
								</td>
							</tr>
						</c:forEach>
					</table>


				</div>