将Excel文件导入数据库(POI+Excel+MySQL)(jsp页面导入)
2018-01-15 16:50
701 查看
现在正在做一个将Excel导入进数据库的一个程序,现在已经实现了一种方法,借鉴了很多。下面详细说一下,功能如何实现的。
优化版本:第一次优化
目前这个文章的实现方法:
浏览器端选择Excel文件,点击上传,服务器目录会多出一个Excel的文件,然后再在服务器端读取这个文件,保存到数据库。
由于篇幅有限,csdn的上传在60M内,jar包加起来就超过了、所以在这里留一个百度云的链接,可以直接下载,导入即可运行。
源码最新地址
由于篇幅问题,这里只保存了关键的源代码,详细的源代码可以去百度云下载,若链接过时,可以给我评论,或者给我发邮箱,qq均可(点击我的头像获取)。
一、介绍一下我们的这个程序的流程
软件环境,win7 + Myeclipse +MySQL+tomcat
测试浏览器:火狐
其他:jQuery+bootstrap+poi
二、首先看一下包的导入,这里引用下他人的文章内容(jar包下载)
项目结构
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/891bbe5876880a164c0ec740c9b574df)
三、我们对上面的五个文件开始写吧。
DbUtil.java
[java]
view plain
copy
print?
package com.app.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.app.common.Common;
import com.app.po.Student_1;
public class DbUtil {
/**
* @param sql
*/
public static void insert(String sql, Student_1 student) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName(Common.DRIVER);
conn = DriverManager.getConnection(Common.URL, Common.USERNAME, Common.PASSWORD);
ps = conn.prepareStatement(sql);
ps.setString(1, student.getNo());
ps.setString(2, student.getName());
ps.setString(3, student.getAge());
ps.setString(4, String.valueOf(student.getScore()));
boolean flag = ps.execute();
if(!flag){
System.out.println("Save data : No. = " + student.getNo() + " , Name = " + student.getName() + ", Age = " + student.getAge() + " succeed!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List selectOne(String sql, Student_1 student) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List list = new ArrayList();
try {
Class.forName(Common.DRIVER);
conn = DriverManager.getConnection(Common.URL, Common.USERNAME, Common.PASSWORD);
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
if(rs.getString("no").equals(student.getNo()) || rs.getString("name").equals(student.getName())|| rs.getString("age").equals(student.getAge())){
list.add(1);
}else{
list.add(0);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
rs.close();
}
if (p
1c6f4
s != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
}
return list;
}
public static ResultSet selectAll(String sql) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName(Common.DRIVER);
conn = DriverManager.getConnection(Common.URL, Common.USERNAME, Common.PASSWORD);
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
}
return rs;
}
}
student.java
[java]
view plain
copy
print?
package com.app.po;
public class Student_1 {
/**
* id
*/
private Integer id;
/**
* 学号
*/
private String no;
/**
* 姓名
*/
private String name;
/**
* 学院
*/
private String age;
/**
* 成绩
*/
private String score;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
}
[java]
view plain
copy
print?
package com.app.common;
public class Common {
// connect the database
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String DB_NAME = "test";
public static final String USERNAME = "root";
public static final String PASSWORD = "123456";
public static final String IP = "localhost";
public static final String PORT = "3306";
public static final String URL = "jdbc:mysql://" + IP + ":" + PORT + "/" + DB_NAME;
// common
public static final String EXCEL_PATH = "lib/student_info.xls";
// sql
public static final String INSERT_STUDENT_SQL = "insert into t_student(no, name, age, score) values(?, ?, ?, ?)";
public static final String UPDATE_STUDENT_SQL = "update t_student set no = ?, name = ?, age= ?, score = ? where id = ? ";
public static final String SELECT_STUDENT_ALL_SQL = "select id,no,name,age,score from t_student";
public static final String SELECT_STUDENT_SQL = "select * from t_student where name like ";
}
readExcel.java
[java]
view plain
copy
print?
package com.app.excel;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.app.common.Common;
import com.app.po.Student_1;
public class ReadExcel {
public List<Student_1> readXls(String path) throws IOException {
InputStream is = new FileInputStream(path);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
Student_1 student = null;
List<Student_1> list = new ArrayList<Student_1>();
// 循环工作表Sheet
for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 循环行Row
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
student = new Student_1();
HSSFCell no = hssfRow.getCell(0);
HSSFCell name = hssfRow.getCell(1);
HSSFCell age = hssfRow.getCell(2);
HSSFCell score = hssfRow.getCell(3);
student.setNo(getValue(no));
student.setName(getValue(name));
student.setAge(getValue(age));
student.setScore(getValue(score));
list.add(student);
}
}
}
return list;
}
@SuppressWarnings("static-access")
private String getValue(HSSFCell hssfCell) {
if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
// 返回布尔类型的值
return String.valueOf(hssfCell.getBooleanCellValue());
} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
// 返回数值类型的值
return String.valueOf(hssfCell.getNumericCellValue());
} else {
// 返回字符串类型的值
return String.valueOf(hssfCell.getStringCellValue());
}
}
}
[java]
view plain
copy
print?
package com.app.excel;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import com.app.common.Common;
import com.app.util.DbUtil;
import com.app.po.Student_1;
public class SaveData2DB {
@SuppressWarnings({ "rawtypes" })
public void save(String path) throws IOException, SQLException {
ReadExcel xlsMain = new ReadExcel();
Student_1 student = null;
List<Student_1> list = xlsMain.readXls(path);
for (int i = 0; i < list.size(); i++) {
student = list.get(i);
List l = DbUtil.selectOne(Common.SELECT_STUDENT_SQL + "'%" + student.getName() + "%'", student);
if (!l.contains(1)) {
DbUtil.insert(Common.INSERT_STUDENT_SQL, student);
} else {
System.out.println("The Record was Exist : No. = " + student.getNo() + " , Name = " + student.getName() + ", Age = " + student.getAge() + ", and has been throw away!");
}
}
}
}
Upload.java
[java]
view plain
copy
print?
package com.app.action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.adtec.framework.common.util.JsonUtil;
import com.app.excel.SaveData2DB;
import net.sf.json.JSONObject;
public class UpLoad extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("coming.......");
//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");
//上传时生成的临时文件保存目录
String tempPath = this.getServletContext().getRealPath("/WEB-INF/temp");
File tmpFile = new File(tempPath);
if (!tmpFile.exists()) {
//创建临时目录
tmpFile.mkdir();
}
//消息提示
String message = "";
try{
//使用Apache文件上传组件处理文件上传步骤:
//1、创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。
factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
//设置上传时生成的临时文件的保存目录
factory.setRepository(tmpFile);
//2、创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
//监听文件上传进度
/*upload.setProgressListener(new ProgressListener(){
public void update(long pBytesRead, long pContentLength, int arg2) {
System.out.println("文件大小为:" + pContentLength + ",当前已处理:" + pBytesRead);
}
});*/
//解决上传文件名的中文乱码
upload.setHeaderEncoding("UTF-8");
//3、判断提交上来的数据是否是上传表单的数据
if(!ServletFileUpload.isMultipartContent(request)){
//按照传统方式获取数据
return;
}
//设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB
upload.setFileSizeMax(1024*1024);
//设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB
upload.setSizeMax(1024*1024*10);
//
//4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){
//如果fileitem中封装的是普通输入项的数据
if(item.isFormField()){
String name = item.getFieldName();
//解决普通输入项的数据的中文乱码问题
String value = item.getString("UTF-8");
// String value = item.getString("gbk");
//value = new String(value.getBytes("iso8859-1"),"UTF-8");
System.out.println(name + "=" + value);
}else{//如果fileitem中封装的是上传文件
//得到上传的文件名称,
String filename = item.getName();
System.out.println(filename+"..");
if(filename==null || filename.trim().equals("")){
continue;
}
//注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
//处理获取到的上传文件的文件名的路径部分,只保留文件名部分
filename = filename.substring(filename.lastIndexOf("\\")+1);
//得到上传文件的扩展名
String fileExtName = filename.substring(filename.lastIndexOf(".")+1);
//如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法
System.out.println("上传的文件的扩展名是:"+fileExtName);
//获取item中的上传文件的输入流
InputStream in = item.getInputStream();
//得到文件保存的名称
String saveFilename = makeFileName(filename);
//得到文件的保存目录
String realSavePath = makePath(saveFilename, savePath);
//创建一个文件输出流
FileOutputStream out = new FileOutputStream(realSavePath + "\\" + saveFilename);
//创建一个缓冲区
byte buffer[] = new byte[1024];
//判断输入流中的数据是否已经读完的标识
int len = 0;
StringBuffer sb = new StringBuffer();
//循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
while((len=in.read(buffer))>0){
//使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
// System.out.println(realSavePath);
// System.out.println();
sb.append(new String(buffer,0,len));
// logger.info(sb.toString());
// System.out.println(sb.toString());
// sb.setLength(0);
out.write(buffer, 0, len);
}
// System.out.println(sb.toString()+"-----");
String ss = sb.toString();
// System.out.println(sb.);
//关闭输入流
in.close();
//关闭输出流
out.close();
//删除处理文件上传时生成的临时文件
//item.delete();
SaveData2DB saveData2DB = new SaveData2DB();
saveData2DB.save(realSavePath + "\\" + saveFilename);
System.out.println("end");
message = "success";
}
}
}catch (FileUploadBase.FileSizeLimitExceededException e) {
e.printStackTrace();
message = "单个文件超出最大值!!!";
/*request.setAttribute("message", "单个文件超出最大值!!!");*/
/* request.getRequestDispatcher("/message.jsp").forward(request, response);*/
return;
}catch (FileUploadBase.SizeLimitExceededException e) {
e.printStackTrace();
message = "上传文件的总的大小超出限制的最大值!!!";
/*request.setAttribute("message", "上传文件的总的大小超出限制的最大值!!!");*/
/*request.getRequestDispatcher("/message.jsp").forward(request, response);*/
return;
}catch (Exception e) {
message= "文件上传失败!";
e.printStackTrace();
}
/*request.setAttribute("message",message);*/
returnResultJson(response,message);
/*request.getRequestDispatcher("/message.jsp").forward(request, response);*/
}
private String makeFileName(String filename){ //2.jpg
//为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
return UUID.randomUUID().toString() + "_" + filename;
}
private String makePath(String filename,String savePath){
//得到文件名的hashCode的值,得到的就是filename这个字符串对象在内存中的地址
int hashcode = filename.hashCode();
int dir1 = hashcode&0xf; //0--15
int dir2 = (hashcode&0xf0)>>4; //0-15
//构造新的保存目录
String dir = savePath + "\\" + dir1 + "\\" + dir2; //upload\2\3 upload\3\5
//File既可以代表文件也可以代表目录
File file = new File(dir);
//如果目录不存在
if(!file.exists()){
//创建目录
file.mkdirs();
}
return dir;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
private void returnResultJson(HttpServletResponse response,Object obj) {
PrintWriter pw = null;
try {
pw = response.getWriter();
JSONObject resultmessage = JsonUtil.generate(obj);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
response.setHeader("Cache-Control", "no-cache");
pw.write(resultmessage.toString());
} catch (Exception e) {
pw.write("系统异常,请联系管理员");
} finally {
pw.flush();
pw.close();
}
}
}
[java]
view plain
copy
print?
<servlet>
<servlet-name>Upload</servlet-name>
<servlet-class>com.app.action.UpLoad</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/fileUpload/UploadServlet</url-pattern>
</servlet-mapping>
现在配置jsp页面吧(jquery),这样的页面插件很多,可以网上搜索你喜欢的。
[java]
view plain
copy
print?
<div class="htmleaf-container">
<div class="container kv-main">
<!-- <div class="page-header">
<h2>单张上传 <small></h2>
</div> -->
<!-- <form enctype="multipart/form-data" id="uploadForm" method = "post"> -->
<input id="fileUpload" class="file" type="file" name="fileUpload" multiple data-show-preview="true">
<!-- </form> -->
</div>
</div>
<script>
$("#fileUpload").fileinput({
language : "zh",//设置语言
uploadUrl: "${pageContext.request.contextPath}/fileUpload/UploadServlet",//上传地址
uploadAsync: true,//同步还是异步
showCaption:false,//是否显示标题
showUpload: true,//是否显示上传按钮
browseClass: "btn btn-primary", //按钮样式
allowedFileExtensions : ['jpg', 'png','gif','xls'],//接收的文件后缀
allowedFileTypes: ['image', 'video', 'flash','excel'],//接收的文件类型['image', 'html', 'text', 'video', 'audio', 'flash','object']
maxFileCount: 6,//最大上传文件数限制
overwriteInitial: false,
maxFileSize: 1000,
msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
previewFileIcon: '<i class="glyphicon glyphicon-file"></i>',
enctype: 'multipart/form-data',
/* allowedPreviewTypes: null, */
previewFileIconSettings: {
'docx': '<i class="glyphicon glyphicon-file"></i>',
'xlsx': '<i class="glyphicon glyphicon-file"></i>',
'pptx': '<i class="glyphicon glyphicon-file"></i>',
'jpg': '<i class="glyphicon glyphicon-picture"></i>',
'pdf': '<i class="glyphicon glyphicon-file"></i>',
'zip': '<i class="glyphicon glyphicon-file"></i>'
}
);
浏览器选择文件,点击会显示上传进度。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/333ea468cb6e84e79632e8363c2e09a5)
后台会对这里的数据保存到数据库。
数据库设计
数据库中数据如下
![](https://oscdn.geek-share.com/Uploads/Images/Content/201801/8f59fce4b8884de73077a9355f04baac)
第二行就是存进来的数据了。
现在应该整个流程都走完了。
现在正在做一个将Excel导入进数据库的一个程序,现在已经实现了一种方法,借鉴了很多。下面详细说一下,功能如何实现的。
优化版本:第一次优化
目前这个文章的实现方法:
浏览器端选择Excel文件,点击上传,服务器目录会多出一个Excel的文件,然后再在服务器端读取这个文件,保存到数据库。
由于篇幅有限,csdn的上传在60M内,jar包加起来就超过了、所以在这里留一个百度云的链接,可以直接下载,导入即可运行。
源码最新地址
由于篇幅问题,这里只保存了关键的源代码,详细的源代码可以去百度云下载,若链接过时,可以给我评论,或者给我发邮箱,qq均可(点击我的头像获取)。
一、介绍一下我们的这个程序的流程
软件环境,win7 + Myeclipse +MySQL+tomcat
测试浏览器:火狐
其他:jQuery+bootstrap+poi
二、首先看一下包的导入,这里引用下他人的文章内容(jar包下载)
项目结构
三、我们对上面的五个文件开始写吧。
DbUtil.java
[java]
view plain
copy
print?
package com.app.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.app.common.Common;
import com.app.po.Student_1;
public class DbUtil {
/**
* @param sql
*/
public static void insert(String sql, Student_1 student) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
try {
Class.forName(Common.DRIVER);
conn = DriverManager.getConnection(Common.URL, Common.USERNAME, Common.PASSWORD);
ps = conn.prepareStatement(sql);
ps.setString(1, student.getNo());
ps.setString(2, student.getName());
ps.setString(3, student.getAge());
ps.setString(4, String.valueOf(student.getScore()));
boolean flag = ps.execute();
if(!flag){
System.out.println("Save data : No. = " + student.getNo() + " , Name = " + student.getName() + ", Age = " + student.getAge() + " succeed!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List selectOne(String sql, Student_1 student) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
List list = new ArrayList();
try {
Class.forName(Common.DRIVER);
conn = DriverManager.getConnection(Common.URL, Common.USERNAME, Common.PASSWORD);
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
if(rs.getString("no").equals(student.getNo()) || rs.getString("name").equals(student.getName())|| rs.getString("age").equals(student.getAge())){
list.add(1);
}else{
list.add(0);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
rs.close();
}
if (p
1c6f4
s != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
}
return list;
}
public static ResultSet selectAll(String sql) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName(Common.DRIVER);
conn = DriverManager.getConnection(Common.URL, Common.USERNAME, Common.PASSWORD);
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
}
return rs;
}
}
package com.app.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.app.common.Common; import com.app.po.Student_1; public class DbUtil { /** * @param sql */ public static void insert(String sql, Student_1 student) throws SQLException { Connection conn = null; PreparedStatement ps = null; try { Class.forName(Common.DRIVER); conn = DriverManager.getConnection(Common.URL, Common.USERNAME, Common.PASSWORD); ps = conn.prepareStatement(sql); ps.setString(1, student.getNo()); ps.setString(2, student.getName()); ps.setString(3, student.getAge()); ps.setString(4, String.valueOf(student.getScore())); boolean flag = ps.execute(); if(!flag){ System.out.println("Save data : No. = " + student.getNo() + " , Name = " + student.getName() + ", Age = " + student.getAge() + " succeed!"); } } catch (Exception e) { e.printStackTrace(); } finally { if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } } @SuppressWarnings({ "unchecked", "rawtypes" }) public static List selectOne(String sql, Student_1 student) throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; List list = new ArrayList(); try { Class.forName(Common.DRIVER); conn = DriverManager.getConnection(Common.URL, Common.USERNAME, Common.PASSWORD); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while(rs.next()){ if(rs.getString("no").equals(student.getNo()) || rs.getString("name").equals(student.getName())|| rs.getString("age").equals(student.getAge())){ list.add(1); }else{ list.add(0); } } } catch (Exception e) { e.printStackTrace(); } finally { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } return list; } public static ResultSet selectAll(String sql) throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { Class.forName(Common.DRIVER); conn = DriverManager.getConnection(Common.URL, Common.USERNAME, Common.PASSWORD); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); } catch (Exception e) { e.printStackTrace(); } finally { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } return rs; } }
student.java
[java]
view plain
copy
print?
package com.app.po;
public class Student_1 {
/**
* id
*/
private Integer id;
/**
* 学号
*/
private String no;
/**
* 姓名
*/
private String name;
/**
* 学院
*/
private String age;
/**
* 成绩
*/
private String score;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
}
package com.app.po; public class Student_1 { /** * id */ private Integer id; /** * 学号 */ private String no; /** * 姓名 */ private String name; /** * 学院 */ private String age; /** * 成绩 */ private String score; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getNo() { return no; } public void setNo(String no) { this.no = no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getScore() { return score; } public void setScore(String score) { this.score = score; } }common.java
[java]
view plain
copy
print?
package com.app.common;
public class Common {
// connect the database
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String DB_NAME = "test";
public static final String USERNAME = "root";
public static final String PASSWORD = "123456";
public static final String IP = "localhost";
public static final String PORT = "3306";
public static final String URL = "jdbc:mysql://" + IP + ":" + PORT + "/" + DB_NAME;
// common
public static final String EXCEL_PATH = "lib/student_info.xls";
// sql
public static final String INSERT_STUDENT_SQL = "insert into t_student(no, name, age, score) values(?, ?, ?, ?)";
public static final String UPDATE_STUDENT_SQL = "update t_student set no = ?, name = ?, age= ?, score = ? where id = ? ";
public static final String SELECT_STUDENT_ALL_SQL = "select id,no,name,age,score from t_student";
public static final String SELECT_STUDENT_SQL = "select * from t_student where name like ";
}
package com.app.common; public class Common { // connect the database public static final String DRIVER = "com.mysql.jdbc.Driver"; public static final String DB_NAME = "test"; public static final String USERNAME = "root"; public static final String PASSWORD = "123456"; public static final String IP = "localhost"; public static final String PORT = "3306"; public static final String URL = "jdbc:mysql://" + IP + ":" + PORT + "/" + DB_NAME; // common public static final String EXCEL_PATH = "lib/student_info.xls"; // sql public static final String INSERT_STUDENT_SQL = "insert into t_student(no, name, age, score) values(?, ?, ?, ?)"; public static final String UPDATE_STUDENT_SQL = "update t_student set no = ?, name = ?, age= ?, score = ? where id = ? "; public static final String SELECT_STUDENT_ALL_SQL = "select id,no,name,age,score from t_student"; public static final String SELECT_STUDENT_SQL = "select * from t_student where name like "; }
readExcel.java
[java]
view plain
copy
print?
package com.app.excel;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.app.common.Common;
import com.app.po.Student_1;
public class ReadExcel {
public List<Student_1> readXls(String path) throws IOException {
InputStream is = new FileInputStream(path);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
Student_1 student = null;
List<Student_1> list = new ArrayList<Student_1>();
// 循环工作表Sheet
for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
if (hssfSheet == null) {
continue;
}
// 循环行Row
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow != null) {
student = new Student_1();
HSSFCell no = hssfRow.getCell(0);
HSSFCell name = hssfRow.getCell(1);
HSSFCell age = hssfRow.getCell(2);
HSSFCell score = hssfRow.getCell(3);
student.setNo(getValue(no));
student.setName(getValue(name));
student.setAge(getValue(age));
student.setScore(getValue(score));
list.add(student);
}
}
}
return list;
}
@SuppressWarnings("static-access")
private String getValue(HSSFCell hssfCell) {
if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
// 返回布尔类型的值
return String.valueOf(hssfCell.getBooleanCellValue());
} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
// 返回数值类型的值
return String.valueOf(hssfCell.getNumericCellValue());
} else {
// 返回字符串类型的值
return String.valueOf(hssfCell.getStringCellValue());
}
}
}
package com.app.excel; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.app.common.Common; import com.app.po.Student_1; public class ReadExcel { public List<Student_1> readXls(String path) throws IOException { InputStream is = new FileInputStream(path); HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is); Student_1 student = null; List<Student_1> list = new ArrayList<Student_1>(); // 循环工作表Sheet for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) { HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet); if (hssfSheet == null) { continue; } // 循环行Row for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { HSSFRow hssfRow = hssfSheet.getRow(rowNum); if (hssfRow != null) { student = new Student_1(); HSSFCell no = hssfRow.getCell(0); HSSFCell name = hssfRow.getCell(1); HSSFCell age = hssfRow.getCell(2); HSSFCell score = hssfRow.getCell(3); student.setNo(getValue(no)); student.setName(getValue(name)); student.setAge(getValue(age)); student.setScore(getValue(score)); list.add(student); } } } return list; } @SuppressWarnings("static-access") private String getValue(HSSFCell hssfCell) { if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) { // 返回布尔类型的值 return String.valueOf(hssfCell.getBooleanCellValue()); } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) { // 返回数值类型的值 return String.valueOf(hssfCell.getNumericCellValue()); } else { // 返回字符串类型的值 return String.valueOf(hssfCell.getStringCellValue()); } } }saveDB.java
[java]
view plain
copy
print?
package com.app.excel;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import com.app.common.Common;
import com.app.util.DbUtil;
import com.app.po.Student_1;
public class SaveData2DB {
@SuppressWarnings({ "rawtypes" })
public void save(String path) throws IOException, SQLException {
ReadExcel xlsMain = new ReadExcel();
Student_1 student = null;
List<Student_1> list = xlsMain.readXls(path);
for (int i = 0; i < list.size(); i++) {
student = list.get(i);
List l = DbUtil.selectOne(Common.SELECT_STUDENT_SQL + "'%" + student.getName() + "%'", student);
if (!l.contains(1)) {
DbUtil.insert(Common.INSERT_STUDENT_SQL, student);
} else {
System.out.println("The Record was Exist : No. = " + student.getNo() + " , Name = " + student.getName() + ", Age = " + student.getAge() + ", and has been throw away!");
}
}
}
}
package com.app.excel; import java.io.IOException; import java.sql.SQLException; import java.util.List; import com.app.common.Common; import com.app.util.DbUtil; import com.app.po.Student_1; public class SaveData2DB { @SuppressWarnings({ "rawtypes" }) public void save(String path) throws IOException, SQLException { ReadExcel xlsMain = new ReadExcel(); Student_1 student = null; List<Student_1> list = xlsMain.readXls(path); for (int i = 0; i < list.size(); i++) { student = list.get(i); List l = DbUtil.selectOne(Common.SELECT_STUDENT_SQL + "'%" + student.getName() + "%'", student); if (!l.contains(1)) { DbUtil.insert(Common.INSERT_STUDENT_SQL, student); } else { System.out.println("The Record was Exist : No. = " + student.getNo() + " , Name = " + student.getName() + ", Age = " + student.getAge() + ", and has been throw away!"); } } } }
Upload.java
[java]
view plain
copy
print?
package com.app.action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.adtec.framework.common.util.JsonUtil;
import com.app.excel.SaveData2DB;
import net.sf.json.JSONObject;
public class UpLoad extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("coming.......");
//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");
//上传时生成的临时文件保存目录
String tempPath = this.getServletContext().getRealPath("/WEB-INF/temp");
File tmpFile = new File(tempPath);
if (!tmpFile.exists()) {
//创建临时目录
tmpFile.mkdir();
}
//消息提示
String message = "";
try{
//使用Apache文件上传组件处理文件上传步骤:
//1、创建一个DiskFileItemFactory工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。
factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
//设置上传时生成的临时文件的保存目录
factory.setRepository(tmpFile);
//2、创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
//监听文件上传进度
/*upload.setProgressListener(new ProgressListener(){
public void update(long pBytesRead, long pContentLength, int arg2) {
System.out.println("文件大小为:" + pContentLength + ",当前已处理:" + pBytesRead);
}
});*/
//解决上传文件名的中文乱码
upload.setHeaderEncoding("UTF-8");
//3、判断提交上来的数据是否是上传表单的数据
if(!ServletFileUpload.isMultipartContent(request)){
//按照传统方式获取数据
return;
}
//设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB
upload.setFileSizeMax(1024*1024);
//设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB
upload.setSizeMax(1024*1024*10);
//
//4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){
//如果fileitem中封装的是普通输入项的数据
if(item.isFormField()){
String name = item.getFieldName();
//解决普通输入项的数据的中文乱码问题
String value = item.getString("UTF-8");
// String value = item.getString("gbk");
//value = new String(value.getBytes("iso8859-1"),"UTF-8");
System.out.println(name + "=" + value);
}else{//如果fileitem中封装的是上传文件
//得到上传的文件名称,
String filename = item.getName();
System.out.println(filename+"..");
if(filename==null || filename.trim().equals("")){
continue;
}
//注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
//处理获取到的上传文件的文件名的路径部分,只保留文件名部分
filename = filename.substring(filename.lastIndexOf("\\")+1);
//得到上传文件的扩展名
String fileExtName = filename.substring(filename.lastIndexOf(".")+1);
//如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法
System.out.println("上传的文件的扩展名是:"+fileExtName);
//获取item中的上传文件的输入流
InputStream in = item.getInputStream();
//得到文件保存的名称
String saveFilename = makeFileName(filename);
//得到文件的保存目录
String realSavePath = makePath(saveFilename, savePath);
//创建一个文件输出流
FileOutputStream out = new FileOutputStream(realSavePath + "\\" + saveFilename);
//创建一个缓冲区
byte buffer[] = new byte[1024];
//判断输入流中的数据是否已经读完的标识
int len = 0;
StringBuffer sb = new StringBuffer();
//循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
while((len=in.read(buffer))>0){
//使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
// System.out.println(realSavePath);
// System.out.println();
sb.append(new String(buffer,0,len));
// logger.info(sb.toString());
// System.out.println(sb.toString());
// sb.setLength(0);
out.write(buffer, 0, len);
}
// System.out.println(sb.toString()+"-----");
String ss = sb.toString();
// System.out.println(sb.);
//关闭输入流
in.close();
//关闭输出流
out.close();
//删除处理文件上传时生成的临时文件
//item.delete();
SaveData2DB saveData2DB = new SaveData2DB();
saveData2DB.save(realSavePath + "\\" + saveFilename);
System.out.println("end");
message = "success";
}
}
}catch (FileUploadBase.FileSizeLimitExceededException e) {
e.printStackTrace();
message = "单个文件超出最大值!!!";
/*request.setAttribute("message", "单个文件超出最大值!!!");*/
/* request.getRequestDispatcher("/message.jsp").forward(request, response);*/
return;
}catch (FileUploadBase.SizeLimitExceededException e) {
e.printStackTrace();
message = "上传文件的总的大小超出限制的最大值!!!";
/*request.setAttribute("message", "上传文件的总的大小超出限制的最大值!!!");*/
/*request.getRequestDispatcher("/message.jsp").forward(request, response);*/
return;
}catch (Exception e) {
message= "文件上传失败!";
e.printStackTrace();
}
/*request.setAttribute("message",message);*/
returnResultJson(response,message);
/*request.getRequestDispatcher("/message.jsp").forward(request, response);*/
}
private String makeFileName(String filename){ //2.jpg
//为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
return UUID.randomUUID().toString() + "_" + filename;
}
private String makePath(String filename,String savePath){
//得到文件名的hashCode的值,得到的就是filename这个字符串对象在内存中的地址
int hashcode = filename.hashCode();
int dir1 = hashcode&0xf; //0--15
int dir2 = (hashcode&0xf0)>>4; //0-15
//构造新的保存目录
String dir = savePath + "\\" + dir1 + "\\" + dir2; //upload\2\3 upload\3\5
//File既可以代表文件也可以代表目录
File file = new File(dir);
//如果目录不存在
if(!file.exists()){
//创建目录
file.mkdirs();
}
return dir;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
private void returnResultJson(HttpServletResponse response,Object obj) {
PrintWriter pw = null;
try {
pw = response.getWriter();
JSONObject resultmessage = JsonUtil.generate(obj);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
response.setHeader("Cache-Control", "no-cache");
pw.write(resultmessage.toString());
} catch (Exception e) {
pw.write("系统异常,请联系管理员");
} finally {
pw.flush();
pw.close();
}
}
}
package com.app.action; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.HashMap; import java.util.List; import java.util.UUID; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadBase; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.adtec.framework.common.util.JsonUtil; import com.app.excel.SaveData2DB; import net.sf.json.JSONObject; public class UpLoad extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; private final Logger logger = LoggerFactory.getLogger(this.getClass()); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("coming......."); //得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全 String savePath = this.getServletContext().getRealPath("/WEB-INF/upload"); //上传时生成的临时文件保存目录 String tempPath = this.getServletContext().getRealPath("/WEB-INF/temp"); File tmpFile = new File(tempPath); if (!tmpFile.exists()) { //创建临时目录 tmpFile.mkdir(); } //消息提示 String message = ""; try{ //使用Apache文件上传组件处理文件上传步骤: //1、创建一个DiskFileItemFactory工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。 factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB //设置上传时生成的临时文件的保存目录 factory.setRepository(tmpFile); //2、创建一个文件上传解析器 ServletFileUpload upload = new ServletFileUpload(factory); //监听文件上传进度 /*upload.setProgressListener(new ProgressListener(){ public void update(long pBytesRead, long pContentLength, int arg2) { System.out.println("文件大小为:" + pContentLength + ",当前已处理:" + pBytesRead); } });*/ //解决上传文件名的中文乱码 upload.setHeaderEncoding("UTF-8"); //3、判断提交上来的数据是否是上传表单的数据 if(!ServletFileUpload.isMultipartContent(request)){ //按照传统方式获取数据 return; } //设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB upload.setFileSizeMax(1024*1024); //设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB upload.setSizeMax(1024*1024*10); // //4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项 List<FileItem> list = upload.parseRequest(request); for(FileItem item : list){ //如果fileitem中封装的是普通输入项的数据 if(item.isFormField()){ String name = item.getFieldName(); //解决普通输入项的数据的中文乱码问题 String value = item.getString("UTF-8"); // String value = item.getString("gbk"); //value = new String(value.getBytes("iso8859-1"),"UTF-8"); System.out.println(name + "=" + value); }else{//如果fileitem中封装的是上传文件 //得到上传的文件名称, String filename = item.getName(); System.out.println(filename+".."); if(filename==null || filename.trim().equals("")){ continue; } //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt //处理获取到的上传文件的文件名的路径部分,只保留文件名部分 filename = filename.substring(filename.lastIndexOf("\\")+1); //得到上传文件的扩展名 String fileExtName = filename.substring(filename.lastIndexOf(".")+1); //如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法 System.out.println("上传的文件的扩展名是:"+fileExtName); //获取item中的上传文件的输入流 InputStream in = item.getInputStream(); //得到文件保存的名称 String saveFilename = makeFileName(filename); //得到文件的保存目录 String realSavePath = makePath(saveFilename, savePath); //创建一个文件输出流 FileOutputStream out = new FileOutputStream(realSavePath + "\\" + saveFilename); //创建一个缓冲区 byte buffer[] = new byte[1024]; //判断输入流中的数据是否已经读完的标识 int len = 0; StringBuffer sb = new StringBuffer(); //循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据 while((len=in.read(buffer))>0){ //使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中 // System.out.println(realSavePath); // System.out.println(); sb.append(new String(buffer,0,len)); // logger.info(sb.toString()); // System.out.println(sb.toString()); // sb.setLength(0); out.write(buffer, 0, len); } // System.out.println(sb.toString()+"-----"); String ss = sb.toString(); // System.out.println(sb.); //关闭输入流 in.close(); //关闭输出流 out.close(); //删除处理文件上传时生成的临时文件 //item.delete(); SaveData2DB saveData2DB = new SaveData2DB(); saveData2DB.save(realSavePath + "\\" + saveFilename); System.out.println("end"); message = "success"; } } }catch (FileUploadBase.FileSizeLimitExceededException e) { e.printStackTrace(); message = "单个文件超出最大值!!!"; /*request.setAttribute("message", "单个文件超出最大值!!!");*/ /* request.getRequestDispatcher("/message.jsp").forward(request, response);*/ return; }catch (FileUploadBase.SizeLimitExceededException e) { e.printStackTrace(); message = "上传文件的总的大小超出限制的最大值!!!"; /*request.setAttribute("message", "上传文件的总的大小超出限制的最大值!!!");*/ /*request.getRequestDispatcher("/message.jsp").forward(request, response);*/ return; }catch (Exception e) { message= "文件上传失败!"; e.printStackTrace(); } /*request.setAttribute("message",message);*/ returnResultJson(response,message); /*request.getRequestDispatcher("/message.jsp").forward(request, response);*/ } private String makeFileName(String filename){ //2.jpg //为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名 return UUID.randomUUID().toString() + "_" + filename; } private String makePath(String filename,String savePath){ //得到文件名的hashCode的值,得到的就是filename这个字符串对象在内存中的地址 int hashcode = filename.hashCode(); int dir1 = hashcode&0xf; //0--15 int dir2 = (hashcode&0xf0)>>4; //0-15 //构造新的保存目录 String dir = savePath + "\\" + dir1 + "\\" + dir2; //upload\2\3 upload\3\5 //File既可以代表文件也可以代表目录 File file = new File(dir); //如果目录不存在 if(!file.exists()){ //创建目录 file.mkdirs(); } return dir; } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } private void returnResultJson(HttpServletResponse response,Object obj) { PrintWriter pw = null; try { pw = response.getWriter(); JSONObject resultmessage = JsonUtil.generate(obj); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json"); response.setHeader("Cache-Control", "no-cache"); pw.write(resultmessage.toString()); } catch (Exception e) { pw.write("系统异常,请联系管理员"); } finally { pw.flush(); pw.close(); } } }Web.xml
[java]
view plain
copy
print?
<servlet>
<servlet-name>Upload</servlet-name>
<servlet-class>com.app.action.UpLoad</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/fileUpload/UploadServlet</url-pattern>
</servlet-mapping>
<servlet> <servlet-name>Upload</servlet-name> <servlet-class>com.app.action.UpLoad</servlet-class> </servlet> <servlet-mapping> <servlet-name>Upload</servlet-name> <url-pattern>/fileUpload/UploadServlet</url-pattern> </servlet-mapping>以上就是配置后台文件
现在配置jsp页面吧(jquery),这样的页面插件很多,可以网上搜索你喜欢的。
[java]
view plain
copy
print?
<div class="htmleaf-container">
<div class="container kv-main">
<!-- <div class="page-header">
<h2>单张上传 <small></h2>
</div> -->
<!-- <form enctype="multipart/form-data" id="uploadForm" method = "post"> -->
<input id="fileUpload" class="file" type="file" name="fileUpload" multiple data-show-preview="true">
<!-- </form> -->
</div>
</div>
<script>
$("#fileUpload").fileinput({
language : "zh",//设置语言
uploadUrl: "${pageContext.request.contextPath}/fileUpload/UploadServlet",//上传地址
uploadAsync: true,//同步还是异步
showCaption:false,//是否显示标题
showUpload: true,//是否显示上传按钮
browseClass: "btn btn-primary", //按钮样式
allowedFileExtensions : ['jpg', 'png','gif','xls'],//接收的文件后缀
allowedFileTypes: ['image', 'video', 'flash','excel'],//接收的文件类型['image', 'html', 'text', 'video', 'audio', 'flash','object']
maxFileCount: 6,//最大上传文件数限制
overwriteInitial: false,
maxFileSize: 1000,
msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
previewFileIcon: '<i class="glyphicon glyphicon-file"></i>',
enctype: 'multipart/form-data',
/* allowedPreviewTypes: null, */
previewFileIconSettings: {
'docx': '<i class="glyphicon glyphicon-file"></i>',
'xlsx': '<i class="glyphicon glyphicon-file"></i>',
'pptx': '<i class="glyphicon glyphicon-file"></i>',
'jpg': '<i class="glyphicon glyphicon-picture"></i>',
'pdf': '<i class="glyphicon glyphicon-file"></i>',
'zip': '<i class="glyphicon glyphicon-file"></i>'
}
);
<div class="htmleaf-container"> <div class="container kv-main"> <!-- <div class="page-header"> <h2>单张上传 <small></h2> </div> --> <!-- <form enctype="multipart/form-data" id="uploadForm" method = "post"> --> <input id="fileUpload" class="file" type="file" name="fileUpload" multiple data-show-preview="true"> <!-- </form> --> </div> </div> <script> $("#fileUpload").fileinput({ language : "zh",//设置语言 uploadUrl: "${pageContext.request.contextPath}/fileUpload/UploadServlet",//上传地址 uploadAsync: true,//同步还是异步 showCaption:false,//是否显示标题 showUpload: true,//是否显示上传按钮 browseClass: "btn btn-primary", //按钮样式 allowedFileExtensions : ['jpg', 'png','gif','xls'],//接收的文件后缀 allowedFileTypes: ['image', 'video', 'flash','excel'],//接收的文件类型['image', 'html', 'text', 'video', 'audio', 'flash','object'] maxFileCount: 6,//最大上传文件数限制 overwriteInitial: false, maxFileSize: 1000, msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!", previewFileIcon: '<i class="glyphicon glyphicon-file"></i>', enctype: 'multipart/form-data', /* allowedPreviewTypes: null, */ previewFileIconSettings: { 'docx': '<i class="glyphicon glyphicon-file"></i>', 'xlsx': '<i class="glyphicon glyphicon-file"></i>', 'pptx': '<i class="glyphicon glyphicon-file"></i>', 'jpg': '<i class="glyphicon glyphicon-picture"></i>', 'pdf': '<i class="glyphicon glyphicon-file"></i>', 'zip': '<i class="glyphicon glyphicon-file"></i>' } });四、源文件已经也好了,开始运行吧。
浏览器选择文件,点击会显示上传进度。
后台会对这里的数据保存到数据库。
数据库设计
数据库中数据如下
第二行就是存进来的数据了。
现在应该整个流程都走完了。
相关文章推荐
- 将Excel文件导入数据库(POI+Excel+MySQL)(jsp页面导入)
- 在WEB页面上将EXCEL文件导入、导出到数据库中
- jsp使用POI 导入Excel到数据库
- POI 导入导出Excel文件到数据库 亲测
- POI 导入导出Excel文件到数据库
- (转)如何将 Excel 文件导入到 Navicat for MySQL 数据库
- java中用poi导入excel文件到数据库总结
- 用poi 将excel文件内容导入 保存到数据库
- ASPX页面选择EXCEL文件,并导入数据库
- jsp上传excel文件并导入数据库
- poi方式操作excel表格数据(数据库查询到的数据导入excel文件)
- POI 导入导出Excel文件到数据库(转载)
- POI 导入导出Excel文件到数据库
- Apache POI -- 读取Excel文件数据导入到数据库
- 使用poi导入excel文件数据到数据库
- 如何将 Excel 文件导入到 Navicat for MySQL 数据库
- struts2将excel文件内容导入数据库 ----- POI
- java poi技术将Excel文件内容导入数据库
- POI 导入导出Excel文件到数据库(转载)
- jsp实现Excel文件导入到MySQL数据库中