这三天主要是自己做一个库存管理系统,和之前老师带领我们做的客户信息系统相似。
先是做需求分析,库存信息,主要包括了商品编号、商品名称、商品数量、商品单价,主要的操作有查询、增加、删除、修改。
对此,先设计了一个product商品的数据库
接着要搭建环境ssh、框架、配置文件、做好和数据库的连接。主要注意的点有包的结构:各个action,dao接口,service接口,配置struts。Bean中有:Java Class,hbm.xml,DAO中有DAO接口、DAO实现,Service中有Service接口、Service实现,Action要对应好Service和DAO。
配置application:实现myeclipse和数据库的连接
<!--数据库-配置数据连接池 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/dbssh"> </property> <property name="username" value="root"></property> <property name="password" value="123456"></property> <property name="maxActive" value="100"></property> <property name="maxWait" value="500"></property> <property name="defaultAutoCommit" value="true"></property> </bean> <!--sessionFactory配置与管理 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="mappingResources"> <list> <value>com/crm/bean/Product.hbm.xml</value> </list> </property> </bean>
配置Product.hbm.xml:和数据库中的各项数据要对应
<hibernate-mapping> <class name="com.crm.bean.Product" table="product"> <id name="id" type="java.lang.Integer" column="id" length="11"> <generator class="increment"></generator> </id> <property name="productno" type="string" column="productno" length="20"/> <property name="productname" type="string" column="productname" length="20"/> <property name="number" type="string" column="number" length="20"/> <property name="price" type="string" column="price" length="20"/> </class> </hibernate-mapping>
与之前的客户管理系统的操作功能相比,添加了一个新的功能,将数据库中的数据生成Excel表。
在ProductService.java中:
public InputStream getInputStream(); 在ProductServiceImpl.java中: public InputStream getInputStream() { //Apache poi hssf对象 HSSFWorkbook wb = new HSSFWorkbook(); //创建sheet HSSFSheet sheet = wb.createSheet("sheet1"); //表头开始 //创建行 HSSFRow row = sheet.createRow(0); //创建单元格 第一个单元格从零开始 第一列 HSSFCell cell = row.createCell((short)0); //设置编码 cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("商品编号"); //第二列 cell = row.createCell((short)1); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("商品名称"); //第三列 cell = row.createCell((short)2); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("商品数量"); //第四列 cell = row.createCell((short)3); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("商品单价"); //表头结束 //查询数据库 List<Product> list = this.productDao.findAllProduct(); for(int i=0 ; i< list.size() ; ++i){ Product product = list.get(i); //把数据放到表格中 row = sheet.createRow(i+1); cell = row.createCell((short)0); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(product.getProductno()); // cell = row.createCell((short)1); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(product.getProductname()); cell = row.createCell((short)2); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(product.getNumber()); cell = row.createCell((short)3); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(product.getPrice()); } //根据输出流,输出到文件中 File file = new File("cust.xls"); try { OutputStream os = new FileOutputStream(file); //输出写入到文件中 wb.write(os); //关闭输出流 os.close(); } catch (Exception e) { e.printStackTrace(); } InputStream is = null; try { is = new FileInputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } return is; } 在struts中配置: <!-- 导出excel --> <action name="generateExcel" class="generateExcelAction"> <result name="success" type="stream"> <param name="contentType">application/vnd.ms-excel</param> <param name="contentDisposition">filename="AllProduct.xls"</param> <param name="inputName">downloadFile</param> </result>
在applicationContext.xml中配置
<!-- 导出excel --> <bean id="generateExcelAction" class="com.crm.action.GenerateExcelAction" scope="prototype"> <property name="excelService"> <ref bean="productService"></ref> </property> </bean>
在jsp中:
function funExcel(){ location.href='generateExcel.action'; }
<input width="100" type = "button" value="生成excel" onClick="funExcel();"/>
最终达到以下效果,可以输出一个Excel
在这三天的实践中,遇到了一些问题都与之前相似,,主要是404和500的错误,都顺利的解决了。