巴巴运动网的产品类别管理
1、项目图解
这次我们做的是产品管理的功能,也就是增删改查。。。
2、首先我们引入相应的jar包
3、我们开始做我们的相应的功能模块
页面的素材我会上传的,链接是:http://download.csdn.net/detail/cutter_point/8803985
好的,这里我们开始对产品类型进行修改和查询操作
ProductTypeAction.java
/**
* 功能:这个是实现产品类和web层的交互
* 时间:2015年5月16日10:50:36
* 文件:ProductTypeAction.java
* 作者:cutter_point
*/
packagecom.cutter_point.web.action.product;
import java.util.ArrayList;
importjava.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
importjavax.annotation.Resource;
importorg.springframework.context.annotation.Scope;
importorg.springframework.stereotype.Component;
importcom.cutter_point.bean.PageView;
importcom.cutter_point.bean.QueryResult;
importcom.cutter_point.bean.product.ProductType;
importcom.cutter_point.service.product.ProductTypeService;
import com.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
//@Namespace("/product")
@Component
@Scope("prototype")
public class ProductTypeActionextends ActionSupport
{
@Resource
private ProductTypeService productTypeService;
private int page;
private Integer parentid; //父类id
private String name;
private String query; //判断是从那个页面来的
@Override
public String execute() throws Exception
{
Map request =(Map)ActionContext.getContext().get("request");
PageView<ProductType> pageview = newPageView<ProductType>(12, this.getPage());
int firstindex = (pageview.getCurrentpage() - 1) *pageview.getMaxresult(); //得到从哪个开始索引的值
LinkedHashMap<String, String> orderby = newLinkedHashMap<String, String>();
orderby.put("typeid", "desc");
StringBuilder hsql = newStringBuilder("o.visible = ?");
List<Object> params = newArrayList<Object>(); //这个用来存放需要的排序方式
params.add(true);
//判断来的页面是那个
if("true".equals(this.getQuery()))
{
//是从查询页面来的需求
//如果是查询的话,那么我们判定一下name是不是为空的
if(this.getName() != null &&!"".equals(this.getName().trim())) //后面那个trim是去掉空格的作用
{
//模糊查询一下
hsql.append(" and o.namelike ?");
params.add("%" +this.getName() + "%"); //给问号赋值
}
}
else
{
//不是从查询来的需求
//这里判定一下SQL语句写什么
if(this.getParentid() != null &&this.getParentid() > 0)
{
hsql.append(" ando.parentid = ?");
params.add(this.getParentid()); //这个是用来设定?的值的
}
else
{
//如果父类不存在的话
hsql.append(" ando.parentid is null");
}
}
QueryResult<ProductType> qr =productTypeService.getScrollData(ProductType.class, firstindex,pageview.getMaxresult(), hsql.toString(),
params.toArray(), orderby);
pageview.setQueryResult(qr);
request.put("pageView", pageview);
// ProductType pt =productTypeService.find(ProductType.class, 3);
// int maxresult = 12; //每页显示最多的条数
// long pageuse1 = qr.getTotalrecord() %pageview.getMaxresult();
// long pageuse2 = qr.getTotalrecord() /pageview.getMaxresult();
// long totalpage = pageuse1 == 0 ? pageuse2 : pageuse2 +1;
// PageIndex pageindex =WebTool.getPageIndex(pageview.getMaxresult(), this.getPage(), totalpage);
// request.put("productType",qr.getResultList());
// request.put("totalpage", totalpage);
// System.out.println("pageindex = " +pageindex.getStartpage() + " <=> " + pageindex.getEndpage());
// System.out.println(pt);
//System.out.println(qr.getResultList().get(0).getChildtypes().size());延迟加载测试
return "list";
}
public int getPage()
{
return page < 1 ? 1 : page;
}
public Integer getParentid()
{
return parentid;
}
public void setParentid(Integer parentid)
{
this.parentid = parentid;
}
public void setPage(int page)
{
this.page = page;
}
public ProductTypeService getProductTypeService()
{
return productTypeService;
}
public void setProductTypeService(ProductTypeServiceproductTypeService)
{
this.productTypeService = productTypeService;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getQuery()
{
return query;
}
public void setQuery(String query)
{
this.query = query;
}
}
修改功能
/**
* 显示类别修改界面
* @return String struts2的返回跳转result
* @throws Exception
*/
public String editUI() throws Exception
{
//取得相应的值传到修改的地方去
Map request = (Map) ActionContext.getContext().get("request");
ProductType pt = productTypeService.find(ProductType.class,this.getTypeid()); //得到对应的类别信息
//吧要显示的信息放到界面上
request.put("name", pt.getName());
request.put("note", pt.getNote());
return"edit";
}
/**
* 类别修改操作
* @return
* @throws Exception
*/
public String edit() throws Exception
{
//System.out.println(parentid+ " 123132132131");
Map request = (Map) ActionContext.getContext().get("request");
ProductType pt = productTypeService.find(ProductType.class,this.getTypeid()); //得到对应的类别信息
//我们修改他
pt.setName(this.getName());
pt.setNote(this.getNote());
//修改之后用update方法跟正他
productTypeService.update(pt);
request.put("message", "修改类别成功");
return"message";
}
查询功能
/**
* 显示类别查询界面
* @return String struts2的返回跳转result
* @throws Exception
*/
public String queryUI() throws Exception
{
return"query";
}
显示界面
producttypelist.jsp
<%@ page isELIgnored="false"contentType="text/html;charset=UTF-8" %>
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<title>产品类别管理</title>
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
<link rel="stylesheet"href="../css/vip.css" type="text/css">
<script type="text/javascript">
//到指定的分页页面
function topage(page)
{
document.getElementById("page").value = page;
//alert(document.getElementById("page").value);
//document.form1.method= 'post';
//document.form1.submit();
var obj = document.getElementsByName("form1").item(0).submit();
}
</script>
<SCRIPT language=JavaScript src="../js/FoshanRen.js"></SCRIPT>
</head>
<body bgcolor="#FFFFFF"text="#000000" marginwidth="0" marginheight="0">
<form id="form11"name="form1" action="producttypelist"method="post">
<s:hidden id="page" name="page"/>
<s:hidden name="parentid" />
<s:hidden name="query" />
<s:hidden name="name" />
<table width="98%"border="0" cellspacing="1"cellpadding="2" align="center">
<tr ><td colspan="6" bgcolor="6f8ac4" align="right" >
<%@ include file="../share/fenye.jsp"%>
</td></tr>
<tr>
<td width="8%" bgcolor="6f8ac4"><div align="center"><fontcolor="#FFFFFF">代号</font></div></td>
<td width="5%" nowrapbgcolor="6f8ac4"><div align="center"><fontcolor="#FFFFFF">修改</font></div></td>
<td width="20%" bgcolor="6f8ac4"><div align="center"><fontcolor="#FFFFFF">产品类别名称</font></div></td>
<td width="10%" nowrapbgcolor="6f8ac4"><div align="center"><fontcolor="#FFFFFF">创建下级类别</font></div></td>
<td width="15%" bgcolor="6f8ac4"><div align="center"><fontcolor="#FFFFFF">所属父类</font></div></td>
<td nowrap bgcolor="6f8ac4"><div align="center"><fontcolor="#FFFFFF">备注</font></div></td>
</tr>
<!---------------------------LOOPSTART------------------------------>
<s:iterator value="#request.pageView.records" var="productType">
<tr>
<td bgcolor="f5f5f5">
<div align="center"><s:property value="#productType.typeid"/></div>
</td>
<td bgcolor="f5f5f5">
<div align="center">
<a href="<s:url action="edit-producttypemanage"/>?typeid=<s:property value="#productType.typeid"/>">
<img src="../images/edit.gif"width="15" height="16"border="0">
</a>
</div>
</td>
<td bgcolor="f5f5f5">
<div align="center">
<a href="producttypelist?parentid=<s:property value="#productType.typeid"/>">
<s:property value="#productType.name"/>
<fontcolor="red">
<s:iftest="#productType.childtypes.size> 0">
(有<s:propertyvalue="#productType.childtypes.size"/>个子类)
</s:if>
</font>
</a>
</div>
</td>
<td bgcolor="f5f5f5">
<div align="center">
<a href="<s:url action="add-producttypemanage" />?parentid=<s:property value="#productType.typeid"/>">创建子类别</a>
</div>
</td>
<td bgcolor="f5f5f5" align="center">
<s:if test="%{#productType.parent!= null}"><s:property value="#productType.parent.name"/></s:if>
</td>
<td bgcolor="f5f5f5">
<s:property value="#productType.note"/>
</td>
</tr>
</s:iterator>
<!----------------------LOOPEND------------------------------->
<tr>
<td bgcolor="f5f5f5" colspan="6"align="center"><table width="100%"border="0" cellspacing="1"cellpadding="3">
<tr>
<td width="5%"></td>
<td width="85%">
<input name="AddDic" type="button"class="frm_btn" id="AddDic"onClick="javascript:window.location.href='<s:url action="add-producttypemanage" />?parentid=${param.parentid}'"value="添加类别">
<input name="query" type="button"class="frm_btn" id="query"onClick="javascript:window.location.href='<s:url action="query-producttypemanage" />'"value=" 查询 ">
</td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>
edit_productType.jsp
<%@ page isELIgnored="false"contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="/struts-tags"prefix="s" %>
<html>
<head>
<title>修改类别</title>
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
<link rel="stylesheet"href="/css/vip.css" type="text/css">
<SCRIPT language=JavaScript src="/js/FoshanRen.js"></SCRIPT>
<script language="JavaScript">
function checkfm(form){
if (trim(form.name.value)==""){
alert("类别名称不能为空!");
form.name.focus();
return false;
}
if (byteLength(form.note.value)>200){
alert("备注不能大于100字!");
form.note.focus();
return false;
}
return true;
}
</script>
</head>
<body bgcolor="#FFFFFF"text="#000000" leftmargin="0" topmargin="0"marginwidth="0" marginheight="0">
<s:form action="producttypemanage-edit" method="post" οnsubmit="returncheckfm(this)">
<s:hidden name="typeid" value="%{#request.typeid}"/>
<br>
<table width="90%"border="0" cellspacing="2"cellpadding="3" align="center">
<tr bgcolor="6f8ac4">
<td colspan="2" ><fontcolor="#FFFFFF">修改类别:</font></td>
</tr>
<tr bgcolor="f5f5f5">
<td width="22%" ><div align="right">类别名称:</div></td>
<td width="78%"><input type="text"name="name" value="${name }"size="50" maxlength="50"/>
<fontcolor="#FF0000">*</font>
</td>
</tr>
<tr bgcolor="f5f5f5">
<td width="22%" ><div align="right">备注(100字以内):</div></td>
<td width="78%"><input type="text"name="note" value="${note }"size="80" maxlength="100"/>
</td>
</tr>
<tr bgcolor="f5f5f5">
<td colspan="2"><div align="center">
<input type="submit" value=" 确定 " class="frm_btn">
</div></td>
</tr>
</table>
</s:form>
<br>
</body>
</html>
Query_productType.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="/struts-tags"prefix="s" %>
<html>
<head>
<title>类别查询</title>
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
<link rel="stylesheet"href="/css/vip.css" type="text/css">
<SCRIPT language=JavaScript src="/js/FoshanRen.js"></SCRIPT>
<script language="JavaScript">
function checkfm(form){
if (trim(form.name.value)==""){
alert("类别名称不能为空!");
form.name.focus();
return false;
}
return true;
}
</script>
</head>
<body bgcolor="#FFFFFF"text="#000000" leftmargin="0" topmargin="0"marginwidth="0" marginheight="0">
<s:form action="producttypelist" method="post" οnsubmit="returncheckfm(this)">
<s:hidden name="query" value="true"/>
<table width="90%"border="0" cellspacing="2"cellpadding="3" align="center">
<tr bgcolor="6f8ac4"><td colspan="2"><fontcolor="#FFFFFF">查询类别:</font></td>
</tr>
<tr bgcolor="f5f5f5">
<td width="22%" ><div align="right">类别名称:</div></td>
<td width="78%"><input type="text"name="name" size="50"maxlength="50" />
<fontcolor="#FF0000">*</font></td>
</tr>
<tr bgcolor="f5f5f5">
<td colspan="2"><div align="center">
<input type="submit" value=" 确定 " class="frm_btn">
</div></td>
</tr>
</table>
</s:form>
<br>
</body>
</html>
4、struts2的配置
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<include file="struts-default.xml" />
<constant name="struts.ObjectFactory" value="spring" /><!-- 表示这里面的action由spring进行创建 -->
<constant name="struts.devMode" value="true" />
<package name="control" namespace="/control"extends="struts-default">
<global-results>
<result name="message">/page/share/message.jsp</result>
</global-results>
<action name="center-*"><!-- 直接跳转,不需要经过class的验证,默认返回success -->
<result name="success">/page/controlcenter/{1}.jsp</result>
</action>
<action name="producttypelist" class="productTypeAction" method="execute">
<result name="list">/page/product/producttypelist.jsp</result>
</action>
<action name="*-producttypemanage" class="productTypeManageAction" method="{1}UI">
<result name="{1}">/page/product/{1}_productType.jsp</result>
</action>
<action name="producttypemanage-*" class="productTypeManageAction" method="{1}">
<result name="{1}">/page/product/{1}_productType.jsp</result>
</action>
</package>
</struts>
5、接下来我们测试一下页面的效果
我们访问这个网站
http://localhost:8080/babaSport_1000_producttypemanage_edit_find/control/center-main
我们把产品管理打开
这里就是分类了子类,前台第一页只显示初始的顶级父类
我们的修改功能
我们的查询功能
关于网站为什么要这样写,上一篇blog有介绍
6、总结
我们的增删改查其实没什么,也就是调用一下底层的接口,我们需要注意的是页面的struts2的标签的使用