“我不是代码的生产者,我只是代码的搬运工,搬砖的假码农”.......................坚持,朝着坚定的目标继续前进,成功的道路是孤独的,相信自己,自己为自己加油,自己为自己带盐!!!!我为自己带盐,我是从放弃到开始,从开始到放弃,从放弃再到开始,无限循环,希望意志坚定!加油
本项目技术介绍:
spring springmvc mybatis jsp jquery mysql bootstrip js 等所以要看懂本篇项目最少需要以上技术基础,加油!!!
ssm实战项目分享给大家参考上,希望对大家有帮助,加油!代码量太大,一些关键的代码,博主贴在这里供大家参考,完全代码博主这里就上传到csdn中提供大家下载参考,sql在resource中。
代码下载链接:https://download.csdn.net/download/qq_30764991/11232514
这边博主简单的截图给大家,如果需要参考,请自行参考。如果你认认真真的把这个项目搞懂,说明你也算入门这个行业了,还得继续加油......这个行业是不断学习,不断练习的一个大坑行业,不断的填坑,一直到展现一个完整的项目,才说明ok。
项目结构:
项目运行后的截图:
在这个下载中心代码这里需要注意路径问题:项目运行的时候会报一个路径找不到的问题,这个问题已经找到,需要手动的去配置路径:这是博主的文件上传存储的路径:D:\alldemospace\StsDemoSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\myoa\uploadFile\admin,其中uploadFile\admin需要去你存储的路径中添加,这样上传文档就会存在这个路径中。
文件上传下载controller的代码如下:
package com.dzx.controller;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.dzx.domain.Doc;
import com.dzx.domain.User;
import com.dzx.service.DocService;
import com.dzx.util.HrmConstants;
import com.dzx.util.HrmDownloadUtil;
@Controller
public class MyDocController {
@Autowired
private DocService docService;
// 查找
@RequestMapping("/selectFile")
public ModelAndView SelectFile(Doc doc) {
// 查询文档
List docList = docService.selectFile(doc);
// 创建一个ModelAndView
ModelAndView modelAndView = new ModelAndView();
// 传给前端数据
modelAndView.addObject(HrmConstants.DOC_LIST, docList);
// 跳转到docList页面
modelAndView.setViewName("doc/docList");
return modelAndView;
}
// 删除
@RequestMapping("/deleteFile")
public String delteFile(Integer[] caption) {
docService.deleteFile(caption);
return "redirect:/selectFile";
}
// 上传文档
@RequestMapping("/uploadFile")
public String uploadFile(Doc doc, HttpServletRequest request)
throws IllegalStateException, IOException {
if (doc.getSrcfile() != null) {// 如果获取的文件路径不为空null
// session中获取user
// User user = (User) request.getSession().getAttribute("user");
User user = (User) request.getSession().getAttribute("user");
doc.setUser(user);
// 上传文件名
String filename = doc.getSrcfile().getOriginalFilename();
// 站点路径
String servletPath = request.getServletContext().getRealPath(
"/uploadFile");
// 为上传文件用户创建一个单独的文件夹
File userDir = new File(servletPath + File.separator
+ user.getLoginname());
// 如果userDir不存在,则创建
if (!userDir.exists()) {
userDir.mkdir();
}
// 上传文件到该用户文件夹
File file = new File(userDir + File.separator + filename);
System.out.println(file);
if (!file.getParentFile().exists()) {
file.mkdir();
}
// 上传文件到路径
doc.getSrcfile().transferTo(file);
// 设置doc的值
doc.setFilename(filename);
docService.fileUpload(doc);
request.setAttribute("message", "上传成功");
return "doc/docUpload";
}
request.setAttribute("message", "上传文件不能为空");
return "doc/docUpload";
}
// 跳转到上传页面
@RequestMapping("/toUploadFile")
public String toUploadFile() {
return "doc/docUpload";
}
// 文件下载
@RequestMapping("/downloadFile")
public ResponseEntity downloadFile(Doc doc,
HttpServletRequest request) throws IOException {
// 下载文件路径,文件对象
String servletPath = request.getServletContext().getRealPath(
"/uploadFile" + File.separator + doc.getUser().getLoginname());
String path = servletPath + File.separator + doc.getFilename();
// 文件下载
return HrmDownloadUtil.download(path, doc.getFilename());
}
// 文件导出
@RequestMapping("/docImportExcel")
public ResponseEntity importExcel(HttpServletRequest request) throws IOException {
// 下载文件路径,文件对象,doc所有字段值
String servletPath = request.getServletContext().getRealPath("/uploadFile");
String path = servletPath + File.separator + HrmConstants.DOC_TABLENAME + ".xls";
String[] thTitle = { "文件编号", "标题", "文件名", "创建时间", "创建人", "描述" };
// 获取所有的文件
List allFile = docService.selectAllFile(new Doc());
// 调用导出Excel方法
docService.importExcel(thTitle, allFile, HrmConstants.DOC_TABLENAME, path);
// 文件下载
return HrmDownloadUtil.download(path, HrmConstants.DOC_TABLENAME+ ".xls");
}
// 打印
@RequestMapping("/docPrint")
public String docPrint(HttpServletRequest request) {
// 获取所有的文件
List allFile = docService.selectAllFile(new Doc());
request.setAttribute(HrmConstants.ALL_DOC, allFile);
return "doc/docPrint";
}
}
文件上传下载serviceImpl实现 业务类的代码如下:
package com.dzx.service.impl;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.dzx.dao.DocDao;
import com.dzx.domain.Doc;
import com.dzx.service.DocService;
@Service
public class DocServiceImpl implements DocService {
@Autowired
private DocDao docDao;
//添加文档
@Transactional(readOnly = false)
public int fileUpload(Doc doc) {
int fileUpload = docDao.fileUpload(doc);
return fileUpload;
}
//分页查询文档
public List selectFile(Doc doc) {
//如果doc不为空
if (doc!=null) {
//查询文档数
int totalRecord = docDao.selectFileCount(doc);
//文档封装
doc.setTotalRecord(totalRecord);
//添加文档
return docDao.selectFile(doc);
} else {
return new ArrayList<>();
}
}
//批量删除
@Transactional(readOnly=false)
public int deleteFile(Integer[] caption) {
if (caption!=null) {
for (Integer integer : caption) {
docDao.deleteFile(integer);
}
}
return 0;
}
//查询所有文档
public List selectAllFile(Doc doc) {
List allFile = docDao.selectAllFile(doc);
return allFile;
}
//导出方法
public Boolean importExcel(String[] thTitle, List listValue,
String tableTitle, String path) {
// 创建Excelworkbook
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建一个工作表sheet
XSSFSheet sheet = workbook.createSheet();
// 创建表头样式
XSSFCellStyle cellStyle = workbook.createCellStyle();
XSSFFont font = workbook.createFont();// 字体
font.setFontName("黑体");
font.setFontHeightInPoints((short) 14);
cellStyle.setAlignment(HorizontalAlignment.CENTER);// 居中
cellStyle.setFont(font);// 字体
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, thTitle.length - 1)); // 合并单元格
// 创建表格样式
XSSFCellStyle cellStyle2 = workbook.createCellStyle();
cellStyle2.setAlignment(HorizontalAlignment.CENTER);// 居中
// 创建第一行
XSSFRow row0 = sheet.createRow(0);
XSSFCell cell = null;
cell = row0.createCell(0);
cell.setCellValue(tableTitle);// 设置标题值
cell.setCellStyle(cellStyle);
row0.setHeightInPoints((short) 20);// 设置行高
// 创建第二行
XSSFRow row2 = sheet.createRow(1);
// 插入第二行的数据
for (int i = 0; i < thTitle.length; i++) {
cell = row2.createCell(i);
cell.setCellValue(thTitle[i]);
cell.setCellStyle(cellStyle2);
}
// 第三行,追加数据
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");// 格式化日期
for (int i = 0; i < listValue.size(); i++) {
XSSFRow nextRow = sheet.createRow(i + 2);
XSSFCell cell2 = nextRow.createCell(0);
cell2.setCellValue(listValue.get(i).getId().toString());
cell.setCellStyle(cellStyle2);
cell2 = nextRow.createCell(1);
cell2.setCellValue(listValue.get(i).getTitle());
cell.setCellStyle(cellStyle2);
cell2 = nextRow.createCell(2);
cell2.setCellValue(listValue.get(i).getFilename());
cell.setCellStyle(cellStyle2);
cell2 = nextRow.createCell(3);
String dateFormat = format.format(listValue.get(i).getCreate_date());
cell2.setCellValue(dateFormat);
cell.setCellStyle(cellStyle2);
cell2 = nextRow.createCell(4);
cell2.setCellValue(listValue.get(i).getUser().getUsername());
cell.setCellStyle(cellStyle2);
cell2 = nextRow.createCell(5);
cell2.setCellValue(listValue.get(i).getRemark());
cell.setCellStyle(cellStyle2);
// 设置列高,(第几列,像素)
sheet.setColumnWidth((short) i, (short) 4000);
}
// 创建一个文件
File file = new File(path);
try {
file.createNewFile();
// 将excel的内容写入到流中
FileOutputStream stream = FileUtils.openOutputStream(file);
workbook.write(stream);
stream.close();
workbook.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
}