SSM整合开发实战-poi导入导出excel-前言

    近来还是发现了许多可能是刚入门的童鞋加qq咨询poi导入导出的问题以及问起如何基于ssm框架来实现,很久以前就写过struts+jdbc的poi导入导出,但是还是有诸多童鞋处于懵逼(不得不吐槽一下:“童鞋,你的基础可能需要补!”)。那本博文将重新搭建一套全新的ssm(spring4 +springmvc4+mybatis3)项目,额外的框架加上了druid等,并在日后的博文中将基于此ssm项目做相应的项目开发,敬请期待其他干货。(视频教程地址:https://edu.csdn.net/course/detail/8894  欢迎支持!!)

     本博文既然称之为前言,则重点工作在于搭建一套完整的ssm项目(此项目几乎适用于刚工作不久的童鞋或者期待项目练手的童鞋进行实战操作)!若有相关疑问,可加入群讨论:java开源技术交流群-583522159-我是debug,个人QQ:1948831260

     接下来,本博文先一步一步搭建一套完整的基于ssm框架的实战项目。虽然现在已用idea一年多,但是对于eclipse还是怀有一定的感情,所以,本博文就先用eclipse作为开发工具。

     首先是web.xml,即“项目的部署描述文件”,这个的重要之处就相当于一部漫威英雄电影的主角(主角要是挂了,那估计就没啥戏好看了,所以我们要确保此文件配置正确!),相关的配置我已经注释了!



  ssm_poi
  
	
		login.jsp
	
  
  	
	
		contextConfigLocation
		
		
		classpath:applicationContext.xml
	

	
		org.springframework.web.context.ContextLoaderListener
	
  
  	
  	
  		encodingFilter
  		org.springframework.web.filter.CharacterEncodingFilter
  		
  		
  		
  			encoding
  			UTF-8
  		
  		
  			forceEncoding
  			true
  		
  		
  	
  	
  		encodingFilter
  		/*
  	
  	
  	
	
		dispatcherServlet
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:springmvc.xml
		
		1
		
		
		true
	

	
		dispatcherServlet
		
		
		*.do
	
  	
  

    上面的web.xml配置中就配置了 spring 全局ioc容器的配置以及 springmvc的前端控制转发,那接下来 自然是spring以及springmvc的配置文件,首先是applicationContext.xml:1、实现service层包的扫描以及其他核心服务层包的扫描;2、配置支持定时任务;3、配置管理数据库以及数据库连接池druid的配置;4、配置管理mybatis的sqlSession并配置映射mybatis数据访问层的配置文件(即mapper.xml);5、最后是配置spring的事务管理

    

          
	
	
	
	
	
	
	
    
    
    
     
    	
		
		
		
		
		
		
		
		
		
		
		
    
	
	
	
		
		
		
		
		
	

	
	
		
		
	

	
	
		
	
	
	  
      
          
          
              
              
              
              
              
              
              
              
              
              
              
              
              
              
              
          
      
  
      
      
          
          
    

	

    上面的spring配置文件需要提供数据库链接配置文件以及mybatis配置文件,首先是数据库链接信息jdbc.properties:

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/db_ssm_poi?useUnicode=true&characterEncoding=UTF-8 
jdbc.user=root
jdbc.password=123456

initialPoolSize=5

#其余参数配置以及含义随便博客一搜即可


#连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,
#而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15
maxPoolSize=15

minPoolSize=2

#连接池在无空闲连接可用时一次性创建的新数据库连接数,default:3
acquireIncrement=2

#连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接,单位 s
maxIdleTime=6000
 
 

   接着是mybatis-config.xml:





	
	
		
	
	

    然后是配置充当前端控制转发的springmvc的配置springmvc.xml,主要是配置视图解析器以及控制层所在包的扫描,其他的配置是为了开发的需要(比如出现了某个bug,则可能需要配置信息以支持!)

    
    
	
	
	
	
	
	

	
	
	
	    
	        
	            
	            
	        
	    
	
	
	
	
	    
	        
	            application/json;charset=UTF-8
	        
	    
	

	

	
	
		
		    
            104857600    
            
            
            10240    
           
          
            UTF-8  
          
	

	
	
		
		
	


    最后是开发过程中可能需要用到的自定义配置信息application.properties(目前只用到了这两条配置信息-用于导入导出的文件命名):

poi.excel.sheet.name=产品信息表
poi.excel.file.name=产品信息列表.xls

    最后当然是log4j的配置log4j.properties:

log4j.rootLogger=DEBUG, Console  
  
#Console  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  
  
log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG  

   以前是整合搭建完成后总体项目架构的预览:

SSM整合开发实战-poi导入导出excel-前言_第1张图片

    当然啦,在此之前,肯定需要加入jar放入lib目录,此项目的jar可以来这里下载:

    然后,先贴出在日后一些实战点子(包括下一篇博文介绍的poi导入导出)用到的util吧,首先是DateUtil.java:

package com.debug.steadyjack.utils;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期工具类
 * @author zhonglinsen
 *
 */
public class DateUtil {
	
	
	public static String dateToString(Date date,String dateFormat) throws Exception{
		SimpleDateFormat format=new SimpleDateFormat(dateFormat);
		return format.format(date);
	}
	
	public static Date strToDate(String str,String dateFormat) throws Exception{
		SimpleDateFormat format=new SimpleDateFormat(dateFormat);
		return format.parse(str);
	}
}

    用于excel导入以及导出的工具类:

package com.debug.steadyjack.utils;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * excel工具类
 * @author zhonglinsen
 *
 */
public class ExcelUtil {
	
	private static final Logger log=LoggerFactory.getLogger(ExcelUtil.class);
	private static final String dateFormat="yyyy-MM-dd";

	private static final SimpleDateFormat simpleDateFormat=new SimpleDateFormat(dateFormat);
	
	/**
	 * excel sheet填充数据
	 * @param dataList
	 * @param wb
	 * @param headers
	 * @param sheetName
	 */
	public static void fillExcelSheetData(List> dataList,Workbook wb,String[] headers,String sheetName){
		Sheet sheet=wb.createSheet(sheetName);
		
		//TODO:创建sheet的第一行数据-即excel的头部信息
		Row headerRow=sheet.createRow(0);
		for(int i=0;i rowMap:dataList){
			try {
				row=sheet.createRow(rowIndex++);
				for(int i=0;i

    最后是WebUtil-可用于下载文件:

package com.debug.steadyjack.utils;

import java.io.OutputStream;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.ss.usermodel.Workbook;

/**
 * web通用工具
 * @author zhonglinsen
 */
public class WebUtil {
	
	/**
	 * 下载Excel
	 * @param response
	 * @param wb
	 * @param fileName
	 * @throws Exception
	 */
	public static void downloadExcel(HttpServletResponse response,Workbook wb,String fileName) throws Exception{
		response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"iso-8859-1"));
		response.setContentType("application/ynd.ms-excel;charset=UTF-8");
		OutputStream out=response.getOutputStream();
		wb.write(out);
		out.flush();
		out.close();
	}
	
}

    那本文就先介绍到这里吧,下一篇进入poi导入导出excel!如有相关问题可以加群讨论:java开源技术交流群-583522159-我是debug

你可能感兴趣的:(ssh,ssm整合案例)