学习过程:
昨天完成用户的登录和注册功能,今天我们回到后台完成商品类别和商品的管理,先从比较简单商品类别做起。大家可以先完成后台管理员登录功能,和前途登录差不多,所以这里我就不列出代码的实现了,大家可以下载源码查看。按照计划,我们先完成商品类别的管理,这个功能比较简单,可以先看看静态页面,如下图:
其实主要的功能就是对商品类别进行增删改查操作,通过对商品类别管理,大家可以基本学会如何对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>