杰信项目第三天知识点(工作表模板+动态生成目录+动态生成重名文件+购销合同增删改查)
来源:互联网 发布:沙漠靴品牌知乎 编辑:程序博客网 时间:2024/04/30 10:46
1.工作表模板使用方法:
改表格内容:
//获取模板文件,路径为存放模板文件的路径HSSFWorkbook wb = new HSSFWorkbook( new FileInputStream(rootpath+"/make/xlsprint/tFACTORY.xls"));
2.动态生成目录代码:
先获取服务器跟目录:
//获得服务器根目录String rootpath = ServletActionContext.getRequest().getRealPath("/");
再用UtilFuns类中的sysDate方法获取返回的当前日期值,再在根路径下的web下创建临时文件夹tmp,这个dir表示的就是 //D:\apache-tomcat-7.0.40\webapps\ROOT\/web/tmp/2013-12-25/
String dir = rootpath+"/web/tmp/"+ UtilFuns.sysDate() + "/";static public String sysDate(){ String s = ""; java.util.Date date=new java.util.Date(); SimpleDateFormat dformat=new SimpleDateFormat("yyyy-MM-dd"); s = dformat.format(date); return s; }
//new一个路径为dir的文件对象File file = new File(dir);if(!file.exists()){//不存在时,才创建目录file.mkdirs();//创建多级目录,只要前面的目录不存在,自动创建。}
String xlsFile = fu.newFile(dir, "factory.xls");
//目录下已经有同名文件,则文件重命名,增加文件序号,工具类方法只返回文件名public String newFile(String sPath, String sFile){String newFileName = new String();String withoutExt = new String();File curFile = new File(sPath + "\\" + sFile);if (curFile.exists()) {for(int counter = 1; curFile.exists(); counter++){withoutExt = this.getNameWithoutExtension(curFile.getName());if(withoutExt.endsWith(counter-1 + ")")){withoutExt = withoutExt.substring(0,withoutExt.indexOf("("));//idea} newFileName = withoutExt + "(" + counter + ")" + "." + getFileExt(curFile.getName()); curFile = new File(sPath + "\\" + newFileName); }}else{newFileName = curFile.getName();}return newFileName;}
最后一步,获取到了最重要的完整路径:
FileOutputStream fOut = new FileOutputStream(new File(dir + xlsFile));//将之前第281行创建的路径和第287行返回的文件名组成了完整的文件路径
以下是使用poi模板做导出的完整代码!
public void export() throws IOException{ //创建一个老师提供的工具类对象 FileUtil fu = new FileUtil();//获得服务器根目录String rootpath = ServletActionContext.getRequest().getRealPath("/");//先用UtilFuns类中的sysDate方法获取返回的当前日期值,再在根路径下的web下创建临时文件夹tmp,这个dir表示的就是D:\apache-tomcat-7.0.40\webapps\ROOT\/web/tmp/2013-12-25/String dir = rootpath+"/web/tmp/"+ UtilFuns.sysDate() + "/";//new一个路径为dir的文件对象File file = new File(dir);if(!file.exists()){//不存在时,才创建目录file.mkdirs();//创建多级目录,只要前面的目录不存在,自动创建。}String xlsFile = fu.newFile(dir, "factory.xls");//目录下已经有同名文件,则文件重命名,增加文件序号,工具类方法只返回文件名//获取模板文件,路径为存放模板文件的路径HSSFWorkbook wb = new HSSFWorkbook( new FileInputStream(rootpath+"/make/xlsprint/tFACTORY.xls"));//获取第一个工作表HSSFSheet sheet = wb.getSheetAt(0);HSSFRow nRow = null;//创建行对象值从0开始HSSFCell nCell = null;//创建单元格对象值从0开始int rowNo = 0;//行号short colNo = 0;//列号rowNo++;rowNo++;FileOutputStream fOut = new FileOutputStream(new File(dir + xlsFile));//将之前第281行创建的路径和第287行返回的文件名组成了完整的文件路径FactoryDAO oDao = (FactoryDAO) this.getDao("daoFactory");List<Factory> dataList = oDao.find("from Factory o where o.state=1");for (Factory f : dataList) {//每次完成一次循环就把行号下移一次nRow = sheet.createRow(rowNo++);nCell = nRow.createCell(colNo++);nCell.setCellValue(f.getFullName());/** * 这里是将文字样式与内容绑定 */nCell.setCellStyle(this.text(wb));nCell = nRow.createCell(colNo++);nCell.setCellValue(f.getFactoryName());nCell.setCellStyle(this.text(wb));nCell = nRow.createCell(colNo++);nCell.setCellValue(f.getContractor());nCell.setCellStyle(this.text(wb));nCell = nRow.createCell(colNo++);nCell.setCellValue(f.getPhone());nCell.setCellStyle(this.text(wb));nCell = nRow.createCell(colNo++);nCell.setCellValue(f.getMobile());nCell.setCellStyle(this.text(wb));nCell = nRow.createCell(colNo++);nCell.setCellValue(f.getInspector());nCell.setCellStyle(this.text(wb));nCell = nRow.createCell(colNo++);nCell.setCellValue(f.getCnote());nCell.setCellStyle(this.text(wb));//每次循环结束将列号重新置0,不然会超出excel范围colNo=0;}wb.write(fOut);//将工作簿对象写入输出流fOut.flush();//刷新缓冲区fOut.close();//关闭输出流}
注意hbm.xml里面如何描述一对多以及多对一的关系:
1.购销合同表:里面有一个一对多的关系
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.entity"><class name="Contract" table="CONTRACT_C"><id name="id" type="string" column="CONTRACT_ID"><generator class="uuid"></generator></id><property name="offeror" column="OFFEROR" type="string" /><property name="contractNo" column="CONTRACT_NO" type="string" /><property name="signingDate" column="SIGNING_DATE" type="timestamp"/><property name="inputBy" column="INPUT_BY" type="string" /><property name="checkBy" column="CHECK_BY" type="string" /><property name="inspector" column="INSPECTOR" type="string" /><property name="totalAmount" column="TOTAL_AMOUNT" type="big_decimal" /><property name="crequest" column="REQUEST" type="string" /><property name="customName" column="CUSTOM_NAME" type="string"/><property name="shipTime" column="SHIP_TIME" type="timestamp"/><property name="importNum" column="IMPORT_NUM" type="integer" /><property name="deliveryPeriod" column="DELIVERY_PERIOD" type="timestamp"/><property name="remark" column="REMARK" type="string" /><property name="tradeTerms" column="TRADE_TERMS" type="string" /><property name="printStyle" column="PRINT_STYLE" type="string" /><property name="oldState" column="OLD_STATE" type="integer"/><property name="state" column="STATE" type="integer"/><property name="outState" column="OUT_STATE" type="integer"/><property name="createBy" type="string" column="CREATE_BY"/><property name="createDept" type="string" column="CREATE_DEPT"/><property name="createTime" type="timestamp" column="CREATE_TIME"/><!-- Associations --><set name="contractProducts" inverse="true" cascade="all" lazy="false" order-by="ORDER_NO"><key><column name="CONTRACT_ID" /></key><one-to-many class="cn.itcast.entity.ContractProduct" /></set></class></hibernate-mapping>
2.货物表,里面有两个多对一和一个一对多
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.itcast.entity"><class name="ContractProduct" table="CONTRACT_PRODUCT_C"><id name="id" type="string" column="CONTRACT_PRODUCT_ID" length="40"><generator class="uuid" /></id><property name="productName" column="PRODUCT_NAME" type="string" /><property name="productNo" column="PRODUCT_NO" type="string" /><property name="productImage" column="PRODUCT_IMAGE" type="string" /><property name="productDesc" column="PRODUCT_DESC" type="string" /><property name="loadingRate" column="LOADING_RATE" type="string" /><property name="packingUnit" column="PACKING_UNIT" type="string" /><property name="cnumber" column="CNUMBER" type="integer" /><property name="outNumber" column="OUT_NUMBER" type="integer" /><property name="finished" type="boolean" column="FINISHED"/><property name="grossWeight" column="GROSS_WEIGHT" type="big_decimal" /><property name="netWeight" column="NET_WEIGHT" type="big_decimal" /><property name="sizeLength" column="SIZE_LENGTH" type="big_decimal" /><property name="sizeWidth" column="SIZE_WIDTH" type="big_decimal" /><property name="sizeHeight" column="SIZE_HEIGHT" type="big_decimal" /><property name="productRequest" column="PRODUCT_REQUEST" type="string" /><property name="price" column="PRICE" type="big_decimal" /><property name="amount" column="AMOUNT" type="big_decimal" /><property name="cunit" column="CUNIT" type="string" /><property name="boxNum" column="BOX_NUM" type="integer" /><property name="exPrice" column="EX_PRICE" type="big_decimal" /><property name="exUnit" column="EX_UNIT" type="string" /><property name="noTax" column="NO_TAX" type="big_decimal" /><property name="tax" column="TAX" type="big_decimal" /><property name="costPrice" column="COST_PRICE" type="big_decimal" /><property name="costTax" column="COST_TAX" type="big_decimal" /><property name="orderNo" column="ORDER_NO" type="integer" /><property name="accessories" type="boolean" column="ACCESSORIES"/><!-- Associations --><many-to-one name="factory" class="cn.itcast.entity.Factory" lazy="false"><column name="FACTORY_ID" length="40" /></many-to-one><many-to-one name="contract" class="cn.itcast.entity.Contract" lazy="false"><column name="CONTRACT_ID" length="40" /></many-to-one><set name="extCproducts" inverse="true" cascade="all" lazy="false" order-by="ORDER_NO"><key><column name="CONTRACT_PRODUCT_ID" /></key><one-to-many class="cn.itcast.entity.ExtCproduct" /></set></class></hibernate-mapping>
3.货物的附件表:里面有两个多对一关系
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.itcast.entity"><class name="ExtCproduct" table="EXT_CPRODUCT_C"><id name="id" type="string" column="EXT_CPRODUCT_ID" length="40"><generator class="uuid" /></id><property name="ctype" column="CTYPE" type="integer" /><property name="typeName" type="string" formula="(select c.NAME from SYS_CODE_B c where c.ORDER_NO=CTYPE and c.PARENT_ID='0104')" insert="false" update="false" /><property name="productName" column="PRODUCT_NAME" type="string" /><property name="productNo" column="PRODUCT_NO" type="string" /><property name="productImage" column="PRODUCT_IMAGE" type="string" /><property name="productDesc" column="PRODUCT_DESC" type="string" /><property name="loadingRate" column="LOADING_RATE" type="string" /><property name="packingUnit" column="PACKING_UNIT" type="string" /><property name="cnumber" column="CNUMBER" type="integer" /><property name="outNumber" column="OUT_NUMBER" type="integer" /><property name="finished" type="boolean" column="FINISHED"/><property name="grossWeight" column="GROSS_WEIGHT" type="big_decimal" /><property name="netWeight" column="NET_WEIGHT" type="big_decimal" /><property name="sizeLength" column="SIZE_LENGTH" type="big_decimal" /><property name="sizeWidth" column="SIZE_WIDTH" type="big_decimal" /><property name="sizeHeight" column="SIZE_HEIGHT" type="big_decimal" /><property name="productRequest" column="PRODUCT_REQUEST" type="string" /><property name="price" column="PRICE" type="big_decimal" /><property name="amount" column="AMOUNT" type="big_decimal" /><property name="cunit" column="CUNIT" type="string" /><property name="boxNum" column="BOX_NUM" type="integer" /><property name="exPrice" column="EX_PRICE" type="big_decimal" /><property name="exUnit" column="EX_UNIT" type="string" /><property name="noTax" column="NO_TAX" type="big_decimal" /><property name="tax" column="TAX" type="big_decimal" /><property name="costPrice" column="COST_PRICE" type="big_decimal" /><property name="costTax" column="COST_TAX" type="big_decimal" /><property name="orderNo" column="ORDER_NO" type="integer" /><property name="accessories" type="boolean" column="ACCESSORIES"/><!-- Associations --><many-to-one name="factory" class="cn.itcast.entity.Factory" lazy="false"><column name="FACTORY_ID" length="40" /></many-to-one><many-to-one name="contractProduct" class="cn.itcast.entity.ContractProduct" lazy="false"><column name="CONTRACT_PRODUCT_ID" length="40" /></many-to-one></class></hibernate-mapping>
接下来是写dao层,和生产厂商的代码一样,然后是action层,别的都一样,就是新增的方法不一样
//保存 新增修改public String save(){ContractDAO oDao = (ContractDAO) this.getDao("daoContract");//初始化if(UtilFuns.isEmpty(model.getId())){model.setState(0);//0草稿1已上报}oDao.saveOrUpdate(model);return list();//转向列表}
判断的原因是,新增和修改的方法都在一个方法中了,如果判断到模型驱动里面的id是空的,那表示是新增,否则是修改。
如何获取模型驱动的id?在页面的表单属性上添加一个隐藏域即可。
注意!!!不要忘记创建strust的include文件,更不要忘记在struts中包含他,不要忘记在spring容器中添加dao层的注入!
下面是最麻烦的地方!jsp页面!!!
先改这边:
<li id="view"><a href="#" onclick="formSubmit('/contract/contractAction_toview','_self');this.blur();">查看</a></li><li id="new"><a href="#" onclick="formSubmit('/contract/contractAction_tocreate','_self');this.blur();">新建</a></li><li id="update"><a href="#" onclick="formSubmit('/contract/contractAction_toupdate','_self');this.blur();">修改</a></li><li id="delete"><a href="#" onclick="formSubmit('/contract/contractAction_delete','_self');this.blur();">删除</a></li>
这是改jContractList.jsp的内容
<table id="ec_table" border="0" cellspacing="0" cellpadding="0" class="tableRegion" width="98%" ><thead><tr><td class="tableHeader"><input type="checkbox" name="selid" onclick="checkAll('id',this)"/></td><td class="tableHeader">序号</td><td class="tableHeader">客户名称</td><td class="tableHeader">收购方</td><td class="tableHeader">合同号</td><td class="tableHeader">制单人</td><td class="tableHeader">审单人</td><td class="tableHeader">验货员</td><td class="tableHeader">交期</td><td class="tableHeader">船期</td><td class="tableHeader">签单日期</td><td class="tableHeader">总金额</td><td class="tableHeader">状态</td></tr></thead><tbody class="tableBody" ><s:iterator value="#dataList" var="dl" status="lineNo"><tr class="odd" onmouseover="this.className='highlight'" onmouseout="this.className='odd'" ><!--这是批处理的选中框--><td><input type="checkbox" name="id" value="${id}"/></td><td><s:property value="#lineNo.index+1"/></td><td>${customName}</td><td>${offeror}</td><td><a href="contractAction_toview?id=${id}">${contractNo}</a></td><td>${inputBy}</td><td>${checkBy}</td><td>${inspector}</td><!--这是将时间格式显示为如2013-12-13的格式,取消精确到时分秒--><td><s:date name="deliveryPeriod" format="yyyy-MM-dd" /></td><td><s:date name="shipTime" format="yyyy-MM-dd" /></td><td><s:date name="signingDate" format="yyyy-MM-dd" /></td><td>${totalAmount}</td><td><!--这是做一个判断,如果页面从数据库查询的状态是1,就是已上报,如果是0就是草稿--><s:if test="state==1">已上报</s:if><s:if test="state==0">草稿</s:if></td></tr></s:iterator></tbody></table>
这是新增购销合同中的内容jContractCreate.jsp
<table class="commonTable" cellspacing="1"> <tr> <td class="columnTitle">打印版式:</td> <td class="tableContentAuto"><!--这是一个单选框,可以选择是想在一个页面显示两个货物还是一个货物,因为客户有需求,同一个厂家的合同上最多只能显示两个货物,最少一个--> <input type="radio" name="printStyle" value="1" class="input"/>一款 <input type="radio" name="printStyle" value="2" checked="checked" class="input"/>两款 </td> </tr> <tr> <td class="columnTitle">客户名称:</td> <td class="tableContent"><input type="text" name="customName"/></td> <td class="columnTitle">收购方:</td> <td class="tableContent"><input type="text" name="offeror"/></td> </tr> <tr> <td class="columnTitle">合同号:</td> <td class="tableContent"><input type="text" name="contractNo"/></td> <td class="columnTitle">签单日期:</td> <td class="tableContent"><!--这里用到了一个用js写的日期插件,格式如2013-12-13,并且只读,点击出发事件--><input type="text" style="width:90px;" name="signingDate" value="" readonlyonclick="WdatePicker({el:this,isShowOthers:true,dateFmt:'yyyy-MM-dd'});"/></td> </tr> <tr> <td class="columnTitle">制单人:</td> <td class="tableContent"><input type="text" name="inputBy"/></td> <td class="columnTitle">审单人:</td> <td class="tableContent"><input type="text" name="checkBy"/></td> </tr> <tr> <td class="columnTitle">验货员:</td> <td class="tableContent"><input type="text" name="inspector"/></td> <td class="columnTitle">总金额:</td> <td class="tableContent"><input type="text" name="totalAmount"/></td> </tr> <tr> <td class="columnTitle">船期:</td> <td class="tableContent"><!--这里用到了一个用js写的日期插件,格式如2013-12-13,并且只读,点击出发事件--><input type="text" style="width:90px;" name="shipTime" value="" readonly onclick="WdatePicker({el:this,isShowOthers:true,dateFmt:'yyyy-MM-dd'});"/></td> <td class="columnTitle">重要程度:</td> <td class="tableContentAuto"><!--这里也是一个单选框,用来选择重要程度,与业务需求相关--> <input type="radio" name="importNum" value="1" class="input"/>★ <input type="radio" name="importNum" value="2" class="input"/>★★ <input type="radio" name="importNum" value="3" checked="checked" class="input"/>★★★ </td> </tr> <tr> <td class="columnTitle">交货期限:</td> <td class="tableContent"><!--这里用到了一个用js写的日期插件,格式如2013-12-13,并且只读,点击出发事件--><input type="text" style="width:90px;" name="deliveryPeriod" value="" readonly onclick="WdatePicker({el:this,isShowOthers:true,dateFmt:'yyyy-MM-dd'});"/></td> <td class="columnTitle">贸易条款:</td> <td class="tableContent"><input type="text" name="tradeTerms"/></td> </tr> <tr> <td class="columnTitle">要求:</td> <td class="tableContentAuto" colspan="3"><textarea name="crequest" style="height:100px;"></textarea></td> </tr> </table>
下面是修改购销合同:jContractUpdate.jsp
<table class="commonTable" cellspacing="1"> <tr> <td class="columnTitle">打印版式:</td> <td class="tableContentAuto"><!--获取数据库中的值,如果为1,则value=1的变为选中状态--> <input type="radio" name="printStyle" value="1" <s:if test="printStyle==1"> checked="checked"</s:if> class="input"/>一款 <input type="radio" name="printStyle" value="2" <s:if test="printStyle==2"> checked="checked"</s:if> class="input"/>两款 </td> </tr> <tr> <td class="columnTitle">客户名称:</td> <td class="tableContent"><input type="text" name="customName" value="${customName}"/></td> <td class="columnTitle">收购方:</td> <td class="tableContent"><input type="text" name="offeror" value="${offeror}"/></td> </tr> <tr> <td class="columnTitle">合同号:</td> <td class="tableContent"><input type="text" name="contractNo" value="${contractNo}"/></td> <td class="columnTitle">签单日期:</td> <td class="tableContent"><!--日期则将数据库查出来的日期格式化成如2013-12-13,然后绑定日期的js方法,单击触发--><input type="text" style="width:90px;" name="signingDate" value="<s:date name="signingDate" format="yyyy-MM-dd"/>" readonly onclick="WdatePicker({el:this,isShowOthers:true,dateFmt:'yyyy-MM-dd'});"/></td> </tr> <tr> <td class="columnTitle">制单人:</td> <td class="tableContent"><input type="text" name="inputBy" value="${inputBy}"/></td> <td class="columnTitle">审单人:</td> <td class="tableContent"><input type="text" name="checkBy" value="${checkBy}"/></td> </tr> <tr> <td class="columnTitle">验货员:</td> <td class="tableContent"><input type="text" name="inspector" value="${inspector}"/></td> <td class="columnTitle">总金额:</td> <td class="tableContent"><input type="text" name="totalAmount" value="${totalAmount}"/></td> </tr> <tr> <td class="columnTitle">船期:</td> <td class="tableContent"><!--日期则将数据库查出来的日期格式化成如2013-12-13,然后绑定日期的js方法,单击触发--><input type="text" style="width:90px;" name="shipTime" value="<s:date name="shipTime" format="yyyy-MM-dd"/>" readonly onclick="WdatePicker({el:this,isShowOthers:true,dateFmt:'yyyy-MM-dd'});"/></td> <td class="columnTitle">重要程度:</td> <td class="tableContentAuto"><!--获取数据库中的值,如果为1,则value=1的变为选中状态--> <input type="radio" name="importNum" value="1" class="input" <s:if test="importNum==1"> checked="checked"</s:if>/>★ <input type="radio" name="importNum" value="2" class="input" <s:if test="importNum==2"> checked="checked"</s:if>/>★★ <input type="radio" name="importNum" value="3" class="input" <s:if test="importNum==3"> checked="checked"</s:if>/>★★★ </td> </tr> <tr> <td class="columnTitle">交货期限:</td> <td class="tableContent"><!--日期则将数据库查出来的日期格式化成如2013-12-13,然后绑定日期的js方法,单击触发--><input type="text" style="width:90px;" name="deliveryPeriod" value="<s:date name="deliveryPeriod" format="yyyy-MM-dd"/>" readonly onclick="WdatePicker({el:this,isShowOthers:true,dateFmt:'yyyy-MM-dd'});"/></td> <td class="columnTitle">贸易条款:</td> <td class="tableContent"><input type="text" name="tradeTerms" value="${tradeTerms}"/></td> </tr> <tr> <td class="columnTitle">要求:</td> <td class="tableContentAuto" colspan="3"><textarea name="crequest" style="height:100px;">${crequest}</textarea></td> </tr> </table>
最后一个 查看jContractView.jsp
<table class="commonTable" cellspacing="1"> <tr> <td class="columnTitle">客户名称:</td> <td class="tableContent">${customName}</td> <td class="columnTitle">收购方:</td> <td class="tableContent">${offeror}</td> </tr> <tr> <td class="columnTitle">合同号:</td> <td class="tableContent">${contractNo}</td> <td class="columnTitle">签单日期:</td><!--由于只是查看,只做日期的格式化,无js事件--> <td class="tableContent"><s:date name="signingDate" format="yyyy-MM-dd"/></td> </tr> <tr> <td class="columnTitle">制单人:</td> <td class="tableContent">${inputBy}</td> <td class="columnTitle">审单人:</td> <td class="tableContent">${checkBy}</td> </tr> <tr> <td class="columnTitle">验货员:</td> <td class="tableContent">${inspector}</td> <td class="columnTitle">总金额:</td> <td class="tableContent">${totalAmount}</td> </tr> <tr> <td class="columnTitle">船期:</td><!--由于只是查看,只做日期的格式化,无js事件--> <td class="tableContent"><s:date name="shipTime" format="yyyy-MM-dd"/></td> <td class="columnTitle">重要程度:</td> <td class="tableContentAuto"><!--从服务器获取import的数据,等于几就显示几颗星星--> <s:if test="importNum==1">★</s:if> <s:if test="importNum==2">★★</s:if> <s:if test="importNum==3">★★★</s:if> </td> </tr> <tr> <td class="columnTitle">交货期限:</td><!--由于只是查看,只做日期的格式化,无js事件--> <td class="tableContent"><s:date name="deliveryPeriod" format="yyyy-MM-dd"/></td> <td class="columnTitle">贸易条款:</td> <td class="tableContent">${tradeTerms}</td> </tr> <tr> <td class="columnTitle">要求:</td> <td class="tableContentAuto" colspan="3"><pre>${crequest}</pre></td> </tr> </table>
0 0
- 杰信项目第三天知识点(工作表模板+动态生成目录+动态生成重名文件+购销合同增删改查)
- js动态生成控件(增删改)
- 生成增删改查
- 动态增删改查
- 杰信项目第四天(购销合同,货物信息,附件信息三表联查)
- java动态修改xml文件(增删改查)
- mybatis动态表增删改查
- 发布Silverlight项目自动生成模板,自动生成Silverlight调用RIA Service实现数据增删查改
- 杰信项目第五天(合同复制+合同查看+出货表)
- 【springmvc+mybatis项目实战】杰信商贸-11.购销合同业务
- 【springmvc+mybatis项目实战】杰信商贸-13.购销合同列表
- 【springmvc+mybatis项目实战】杰信商贸-14.购销合同添加+修改+删除+查看
- 【springmvc+mybatis项目实战】杰信商贸-29.购销合同技术难点分析
- 【springmvc+mybatis项目实战】杰信商贸-11.购销合同业务
- 【springmvc+mybatis项目实战】杰信商贸-13.购销合同列表
- 【springmvc+mybatis项目实战】杰信商贸-14.购销合同添加+修改+删除+查看
- 【springmvc+mybatis项目实战】杰信商贸-29.购销合同技术难点分析
- C# ADO.NET动态数据的增删改查(第五天)
- 解决启动myeclipse报错:building workspace的问题(转)
- JS高级第五天:
- 全文检索(lucene)
- SSH常用配置+web.xml配置
- 杰信项目第二天之poi-导出工作表+小细节
- 杰信项目第三天知识点(工作表模板+动态生成目录+动态生成重名文件+购销合同增删改查)
- 杰信项目第四天(购销合同,货物信息,附件信息三表联查)
- 杰信项目第五天(合同复制+合同查看+出货表)
- 杰信个项目第六天
- 丑数(数论)
- HTML在线编辑器之xhEditor
- Web 通信 之 长连接、长轮询
- rsync 交互过程
- 【vim】ubuntu12.04的vim的详细配置(更改Vim配置文件打造C/C++风格)