`

struts2 上传

 
阅读更多

private File excel;

private List<String> resultInfos;

/**

 * 上传遗留学员信息

 */

@Action(value = "uploadLeaveStuInfo", results = {

@Result(name = "success", type = "dispatcher", location = "result.jsp"),

@Result(name = "error", type = "dispatcher", location = "upload.jsp") })

public String uploadLeaveStuInfo() {

if (log.isDebugEnabled()) {

log.debug(" uploadLeaveStuInfo() ======>> start ");

}

try {

// 处理上传信息

resultInfos = servic.handExamApply(excel, excelFileNamel);

resultInfos.add("<font color=\"green\">请勿关闭页面,正在拼命处理您的上传数据!<br>点击查看进度查看</font>");

} catch (Exception e) {

}

if (log.isDebugEnabled()) {

log.debug(" uploadLeaveStuInfo() <<====== end ");

}

return SUCCESS;

}

 

public List<String> hand(File file, String fileName) {

if (log.isDebugEnabled()) {

log.debug();

}

List<Map<Object, Object>> result = new LinkedList<Map<Object, Object>>();

String[] title = { "", "", "", "","" };

result = ExcelUtils.operaExcel(file, fileName, title);

RESULT_SIZE = result.size() - 1;

this.setResult(result);

 

new Thread(new runThreadA()).start();

 

List<String> list = new ArrayList<String>();

if (log.isDebugEnabled()) {

}

return list;

}

 

处理excel方法

public static List<Map<Object, Object>> operaExcel(File file,

String fileName, String excelTitle[]) {

List<Map<Object, Object>> resultList = new LinkedList<Map<Object, Object>>();

Workbook workbook = null;

if (null != file && null != fileName) {

try {

InputStream in = new FileInputStream(file);

if (fileName.endsWith("xls")) {

workbook = new HSSFWorkbook(in);

int sheets = workbook != null ? workbook

.getNumberOfSheets() : 0;

for (int i = 0; i < sheets; i++) {

// 读取各个sheet

Sheet sheet = workbook.getSheetAt(i);

// 获得行数

int rows = sheet.getPhysicalNumberOfRows();

// 获得列表头

Row titleRow = sheet.getRow(0);

if (null == titleRow) {

continue;

}

int titleCount = titleRow.getLastCellNum();

Map<Object, Object> errorMap = new HashMap<Object, Object>();

if (titleCount != excelTitle.length) {

errorMap.put("errorInfo",

"您所上传的excel文件与模板不符,请使用下载的模板文件。");

resultList.add(errorMap);

} else {

// 遍历每一行的信息

for (int j = 0; j < rows; j++) {

// 实例化rowMap

Map<Object, Object> rowMap = new HashMap<Object, Object>();

Row row = sheet.getRow(j);

// 获得总列数

int cells = row.getLastCellNum();

// 遍历每一列

for (int k = 0; k < cells; k++) {

Cell cell = row.getCell(k);

if (null == cell) {

continue;

}

switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_NUMERIC:// 日期类型

if (HSSFDateUtil

.isCellDateFormatted(cell)) {

cell.setCellType(Cell.CELL_TYPE_NUMERIC);

rowMap.put(titleRow.getCell(k)

.getStringCellValue(), cell

.getDateCellValue());

} else {

cell.setCellType(Cell.CELL_TYPE_STRING);

rowMap.put(titleRow.getCell(k)

.getStringCellValue(), cell

.getStringCellValue()

.trim());

}

break;

case HSSFCell.CELL_TYPE_STRING:// 字符串类型

cell.setCellType(Cell.CELL_TYPE_STRING);

rowMap.put(titleRow.getCell(k)

.getStringCellValue(), cell

.getStringCellValue().trim());

break;

default:// 其他

cell.setCellType(Cell.CELL_TYPE_STRING);

rowMap.put(titleRow.getCell(k)

.getStringCellValue(), cell

.getStringCellValue().trim());

}

}

resultList.add(rowMap);

}

}

}

}

} catch (FileNotFoundException e) {

} catch (IOException e) {

}

}

return resultList;

}

}

 

 

另起一个线程处理

class runThreadA implements Runnable {

@Override

public void run() {

String msg = processData(result);

}

}

 

public synchronized String processData(List<Map<Object, Object>> result) {

Map<String, Object> errorMap = new HashMap<String, Object>();

if (null == result || result.size() <= 0) {

errorMap.put("tips", "未从excel中解析到数据");

} else {

Period period = new Period();

period = examApplyPeriodService

.selectAvailableEaxmSelfPeriod(school);

if (result.size() <= 1) {

errorMap.put("error", "请使用下载的excel模板,并将excel录入数据后再上传");

}

forcase: for (int i = 1; i < result.size(); i++) {

Date date = new Date();

Map<Object, Object> resultMap = result.get(i);

String errorInfo = (String) resultMap.get("errorInfo");

if (null != errorInfo && !"".equals(errorInfo)) {

errorMap.put("error", errorInfo);

} else {

处理业务 把相关内容保存进数据库

}

}

}

errorMap.put("successCount", SUCCESS_PASS_MESSAGE);

errorMap.put("errorCount", ERROR_PASS_MESSAGE);

Set<String> set = errorMap.keySet();

StringBuffer message = new StringBuffer();

for (Iterator<String> it = set.iterator(); it.hasNext();) {

String name = it.next();

if (!"successCount".equals(name) && !"errorCount".equals(name)) {

message.append("<font color=\"red\">" + errorMap.get(name)

+ "</font>" + "<br>");

}

}

return message.toString();

}

 

分享到:
评论

相关推荐

    struts2上传文件源代码

    在这个“struts2上传文件源代码”中,我们将深入探讨Struts2如何实现文件上传功能,以及涉及到的相关知识点。 首先,文件上传是Web应用中常见的功能,它允许用户从本地计算机选择文件并将其发送到服务器。在Struts2...

    struts2上传下载项目

    在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...

    struts2上传和下载文件详细源码

    在这个"struts2上传和下载文件详细源码"中,我们可以深入理解Struts2如何处理文件上传和下载操作。 1. 文件上传: 在Struts2中,文件上传主要依赖于Apache的Commons FileUpload库。首先,需要在struts.xml配置文件...

    Uploadify结合Struts2上传demo

    本教程将围绕"Uploadify结合Struts2上传demo"这一主题,详细介绍如何在Struts2框架下集成Uploadify实现文件上传功能。 首先,我们需要在项目中引入Uploadify的相关资源。这通常包括JavaScript库(uploadify.js)和...

    struts2上传插件(中文编码冲突解决)

    解决Struts2上传时候使用UTF-8的冲突问题: * 重新包装了JakartaMultiPartRequest提供Chartset的设置方法。 * 可以通过配置方式对MultiPartRequest中的内容进行编码设定,请在Struts.xml中配置添加struts.multipart...

    struts2上传图片到Oracle

    在"struts2上传图片到Oracle"这个场景中,我们将探讨如何使用Struts2框架实现文件上传,以及如何将这些上传的图片存储到Oracle数据库中。 首先,让我们了解文件上传的基本流程。在Struts2中,我们通常会创建一个...

    struts2 文件上传

    struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload

    struts2 上传图片显示

    在本场景中,我们关注的是如何使用Struts2来实现图片上传并显示的功能,同时生成缩略图。 首先,我们需要在Struts2配置文件(通常为struts.xml)中定义一个Action类,该类负责处理图片上传请求。这个Action类应该有...

    struts2上传文件及拦截器

    struts2上传单个文件及多个文件,strus2拦截器的使用,里面有个user用户,先执行user.jsp即登陆,可以执行上传文件的操作,反之,不能,有个exit.jsp,退出之后不能执行。里面含有jar文件,导入myeclipse可以执行...

    struts2上传图片

    在"struts2上传图片"这个场景下,我们将深入探讨如何在Struts2框架下实现用户上传图片的功能,并关注网站统计访问量以及防止重复提交的问题。 首先,上传图片是Web应用中常见的功能,它涉及到前端表单设计、后端...

    struts2 上传文件及打包下载zip

    在这个"struts2 上传文件及打包下载zip"的示例中,我们将探讨如何利用Struts2实现文件上传和下载功能。 首先,文件上传是Web应用程序中的常见需求。在Struts2中,我们可以使用`Struts2`提供的`CommonsFileUpload`...

    struts2上传文件进度条显示

    Struts2作为一款流行的Java Web框架,提供了丰富的功能来处理用户请求,包括文件上传。在Struts2中实现文件上传并展示进度条是一项常见的需求,它能提升用户体验,尤其是在处理大文件时。以下将详细解释如何在Struts...

    Jquery+struts2上传图片,制作进度条,以及Jquery+Json+Struts交互等示例

    Jquery+struts2上传图片,制作进度条等示例,还有Jquery+Json+Struts实现Ajax技术,还有图形处理技术等,虽然很少,但都有重点突出,由于我也是学习,所以代码不是很简洁,对想学习交流的朋友非常合适

    Struts2上传图片存数据库

    在本案例中,我们探讨的是如何利用Struts2框架处理文件上传,并将上传的图片以BLOB(Binary Large Object)类型存储在数据库中,同时提供下载功能。Hibernate则是一个对象关系映射(ORM)框架,它简化了数据库操作,...

    ckeditor+struts2上传图片

    2. **创建Struts2 Action**:在Struts2项目中创建一个Action类,比如`ImageUploadAction`,并定义一个方法来处理上传请求。这个方法需要接收`File`或`CommonsFileUpload`的`FileItem`对象,以接收上传的图片文件。 ...

    xheditor集成struts2上传图片

    本案例涉及的是将xheditor富文本编辑器与Struts2框架整合,实现图片上传功能。xheditor是一款强大的JavaScript在线编辑器,提供了丰富的文本编辑功能,而Struts2是一个流行的Java Web框架,用于构建MVC(模型-视图-...

    struts2上传必备jar包,避免出现struts2的升级漏洞!自己吃亏后分享

    这个bug是由Struts2上传文件后return SUCCESS后报的错误: java.lang.AbstractMethodError: be.telio.mediastore.ui.upload.GarryMultiPartRequest.cleanUp()V at org.apache.struts2.dispatcher.multipart....

    Struts2项目struts2 上传 下载 项目

    在这个“Struts2 上传下载项目”中,我们将深入探讨如何利用Struts2实现文件上传与下载功能,并结合MySQL数据库、DAO(数据访问对象)层以及MVC架构来构建一个完整的应用。 1. **Struts2框架基础** Struts2的核心...

    struts2上传分析

    Struts2作为一款流行的Java Web框架,其在处理文件上传方面提供了多种方法,使得开发者能够灵活地实现用户数据的上传功能。以下是对Struts2上传功能的详细分析: 1. **Struts2的上传方式** - **使用Struts2核心...

    struts2 上传文件超过最大值解决办法

    在Struts2框架中,处理文件上传是一项常见且重要的功能,尤其当涉及到大文件上传时,往往会遇到上传文件大小超过预设限制的问题。这不仅影响用户体验,还可能导致应用程序出现异常或错误。本文将深入探讨如何解决...

Global site tag (gtag.js) - Google Analytics