基于javaweb和mysql的ssm快递取件管理系统(java+ssm+jsp+jquery+mysql)
·
基于javaweb和mysql的ssm快递取件管理系统(java+ssm+jsp+jquery+mysql)
私信源码获取及调试交流
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SSM快递取件管理系统(java+ssm+jsp+jquery+mysql)
项目介绍
车险理赔管理系统源码,分为两个角色,一个管理员,一个普通用户 主要功能说明: 管理员角色包含以下功能:管理员登录,个人资料修改,用户管理,公告管理,快递状态管理,快递品牌管理,快递管理等功能。 用户角色包含以下功能: 用户注册后登录,个人资料管理,公告查看,查看本人的快递等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 6.数据库:MySql 5.7等版本均可;
技术栈
- 后端:Spring springmvc mybatis 2. 前端:JSP+css+javascript+jQuery
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2.使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat
System.out.println(fields[j].getName().toLowerCase());
Field declaredField = p.getDeclaredField(fields[j].getName());
declaredField.setAccessible(true);
// Tip tip = declaredField.getAnnotation(Tip.class);
//System.out.println(annotation.age()+":"+annotation.name());
String name = declaredField.getAnnotation(Tip.class).value();
if(name == null){
continue;
}
if(declaredField.getType().toString().equals("class java.lang.String")){
row2.put(name, declaredField.get(kuaidiManage));
}else if(declaredField.getType().toString().equals("int")){
row2.put(name, declaredField.get(kuaidiManage));
}
if(declaredField.getType().toString().equals("class com.edu.model.User")){
row2.put(name, ((User)declaredField.get(kuaidiManage)).getS_0());
}
if(declaredField.getType().toString().equals("class com.edu.model.Pingpai")){
row2.put(name, ((Pingpai)declaredField.get(kuaidiManage)).getName());
}
if(declaredField.getType().toString().equals("class com.edu.model.KuaidiStatus")){
row2.put(name, ((KuaidiStatus)declaredField.get(kuaidiManage)).getName());
}
}
row.putAll(row2);
row2 = new LinkedHashMap<String, Object>();
}
String fileName = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)
+"/upload/"+UUID.randomUUID().toString()+".xls";
ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row);
ExcelWriter writer = null;
try {
writer = ExcelUtil.getWriter(fileName);
} catch (Exception e){
}
try {
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
} catch (Exception e){
}
String fileName = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)
+"/upload/"+UUID.randomUUID().toString()+".xls";
ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row);
ExcelWriter writer = null;
try {
writer = ExcelUtil.getWriter(fileName);
} catch (Exception e){
}
try {
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
} catch (Exception e){
}
try {
// 关闭writer,释放内存
writer.close();//其实不写这句在功能上也可以,但是为了规范,最好写上
} catch (Exception e){
}
//转码,免得文件名中文乱码
// fileName = URLEncoder.encode(fileName,"UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + UUID.randomUUID().toString()+".xls");
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
while((len = bis.read()) != -1){
out.write(len);
out.flush();
}
out.close();
}
}
public class BinaryUploader {
public static final State save(HttpServletRequest request,
Map<String, Object> conf) {
FileItemStream fileStream = null;
boolean isAjaxUpload = request.getHeader( "X_Requested_With" ) != null;
if (!ServletFileUpload.isMultipartContent(request)) {
return new BaseState(false, AppInfo.NOT_MULTIPART_CONTENT);
}
ServletFileUpload upload = new ServletFileUpload(
new DiskFileItemFactory());
if ( isAjaxUpload ) {
upload.setHeaderEncoding( "UTF-8" );
}
try {
FileItemIterator iterator = upload.getItemIterator(request);
while (iterator.hasNext()) {
fileStream = iterator.next();
if (!fileStream.isFormField())
break;
fileStream = null;
}
if (fileStream == null) {
return new BaseState(false, AppInfo.NOTFOUND_UPLOAD_DATA);
}
String savePath = (String) conf.get("savePath");
String originFileName = fileStream.getName();
String suffix = FileType.getSuffixByFilename(originFileName);
writer.write(rows, true);
} catch (Exception e){
}
try {
// 关闭writer,释放内存
writer.close();//其实不写这句在功能上也可以,但是为了规范,最好写上
} catch (Exception e){
}
//转码,免得文件名中文乱码
// fileName = URLEncoder.encode(fileName,"UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + UUID.randomUUID().toString()+".xls");
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
while((len = bis.read()) != -1){
out.write(len);
out.flush();
}
out.close();
}
}
@RequestMapping(value = "/deleteManyDataByIds.do")
public String deleteManyDataByIds(HttpServletRequest request, User util,
Model model) {
String ids[] = request.getParameterValues("id");
for (String id : ids) {
util = new User();
util.setId(Integer.parseInt(id));
try {
userMapper.deleteById(util.getId());
} catch (Exception e) {
}
}
return this.getAllDataInPage(request, util, model);
}
@RequestMapping(value = "/deleteUtil.do")
public String deleteUtil(HttpServletRequest request, User util, Model model) {
try {
userMapper.deleteById(util.getId());
} catch (Exception e) {
}
return this.getAllDataInPage(request, util, model);
}
@RequestMapping(value = "/saveOrupdate.do")
public String saveOrupdate(HttpServletRequest request, User util,
Model model) {
List<User> list = userMapper.getList("s_0", util.getS_0());
if (0 == util.getId()) {
if (list.size() > 0) {
model.addAttribute("util", util);
model.addAttribute("errMsg", "该信息已存在!");
return "User/saveOrUpdate";
}
userMapper.insert(util);
} else {
if (list.size() > 1) {
model.addAttribute("util", util);
model.addAttribute("errMsg", "该信息已存在!");
return "User/saveOrUpdate";
}
row.putAll(row2);
row2 = new LinkedHashMap<String, Object>();
}
String fileName = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)
+"/upload/"+UUID.randomUUID().toString()+".xls";
ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row);
ExcelWriter writer = null;
try {
writer = ExcelUtil.getWriter(fileName);
} catch (Exception e){
}
try {
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
} catch (Exception e){
}
try {
// 关闭writer,释放内存
writer.close();//其实不写这句在功能上也可以,但是为了规范,最好写上
} catch (Exception e){
}
//转码,免得文件名中文乱码
// fileName = URLEncoder.encode(fileName,"UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + UUID.randomUUID().toString()+".xls");
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
while((len = bis.read()) != -1){
out.write(len);
out.flush();
}
out.close();
}
}
/**
* email:dyb1296@gmail.com
* function:MVC的C层,也就是控制层,这个Controller类可以实现对Gongao这个类的控制,接收浏览器发送的请求并处理。Gongao类的具体介绍,在com.edu.model.Gongao类下,本处不在赘述
* 本文件和SSM结构的关系:SSM结构的架构就是JSP(浏览器)发送请求,然后请求到对应的Controller,然后Controller调用Service,Service调用Mapper,mapper调用数据库实现增删改查,最后由Controller返回到JSP完成全过程。
* 本文件对应Controller,负责表Gongao
* 箭头结构:JSP->[Controller]->Service->Mapper->数据库-->JSP
* MVC层级划分:本文件在MVC模式中的C层,即控制层
*/
@Controller//说明这个文件是MVC三层架构的Controller,加了这个注解之后,spring可以自动扫描到这个类,可以自动对类进行配置,这里也体现使用了spring框架
@RequestMapping(value = "Gongao")//定义请求的路径,路径为Gongao,定义之后,浏览器获取数据就根据这个路径来进行访问,其他的同理,只要有@RequestMapping注解的都是这样
public class GongaoController {//Controller包含在名字中是一种规范
@Autowired//自动注入,Spring的注解,这样的话,程序就可以自动把这个类扫进来,不需要手动创建对象
private GongaoService gongaoService;//调用数据库mapper,mybatis框架的内容,可以实现增删改查
@RequestMapping(value = "/initPage.do")//设置添加跳转的页面
public String initPage(HttpServletRequest request, Model model) {//在点击添加的时候加载一些预置代码
return "Gongao/saveOrUpdate";//跳转到编辑页面
}
@RequestMapping(value = "/selectList.do")
public String selectList(HttpServletRequest request, Gongao gongao, Model model) {//获取列表,最后跳转到列表查询页面,获取的是
gongao = gongaoService.getById(gongao.getId());//获取要更新的对象
model.addAttribute("util", gongao);//传到前台
return "Gongao/saveOrUpdate";//跳转到编辑页面
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@RequestMapping(value = "/getAllDataInPage.do")//获取列表的数据
public String getAllDataInPage(HttpServletRequest request, Model model) {
String field = request.getParameter("field");
int len = 0;
InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
while((len = bis.read()) != -1){
out.write(len);
out.flush();
}
out.close();
}
}
/**
* email:dyb 1296@gmail.com
* function:MVC的C层,也就是控制层,这个Controller类可以实现对Pingpai这个类的控制,接收浏览器发送的请求并处理。Pingpai类的具体介绍,在com.edu.model.Pingpai类下,本处不在赘述
* 本文件和SSM结构的关系:SSM结构的架构就是JSP(浏览器)发送请求,然后请求到对应的Controller,然后Controller调用Service,Service调用Mapper,mapper调用数据库实现增删改查,最后由Controller返回到JSP完成全过程。
* 本文件对应Controller,负责表Pingpai
* 箭头结构:JSP->[Controller]->Service->Mapper->数据库-->JSP
* MVC层级划分:本文件在MVC模式中的C层,即控制层
*/
@Controller//说明这个文件是MVC三层架构的Controller,加了这个注解之后,spring可以自动扫描到这个类,可以自动对类进行配置,这里也体现使用了spring框架
@RequestMapping(value = "Pingpai")//定义请求的路径,路径为Pingpai,定义之后,浏览器获取数据就根据这个路径来进行访问,其他的同理,只要有@RequestMapping注解的都是这样
public class PingpaiController {//Controller包含在名字中是一种规范
@Autowired//自动注入,Spring的注解,这样的话,程序就可以自动把这个类扫进来,不需要手动创建对象
private PingpaiService pingpaiService;//调用数据库mapper,mybatis框架的内容,可以实现增删改查
@RequestMapping(value = "/initPage.do")//设置添加跳转的页面
public String initPage(HttpServletRequest request, Model model) {//在点击添加的时候加载一些预置代码
return "Pingpai/saveOrUpdate";//跳转到编辑页面
public class ImageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/jpeg");
int w = 85;
int h = 20;
java.util.Random random = new java.util.Random();
BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics pen = img.getGraphics();
pen.setColor(Color.WHITE);
pen.fillRect(0, 0, w, h);
for (int i = 0; i < 50; i++) {
pen.setColor(new Color(random.nextInt(255), random.nextInt(255),
random.nextInt(255)));
int x1 = random.nextInt(w);
int y1 = random.nextInt(h);
int x2 = random.nextInt(10) + x1;
int y2 = random.nextInt(10) + y1;
pen.drawLine(x1, y1, x2, y2);
}
StringBuffer sb = new StringBuffer();
pen.setFont(new Font("黑体", Font.BOLD, 16));
for (int i = 0; i < 4; i++) {
pen.setColor(new Color(random.nextInt(100), random.nextInt(100),
random.nextInt(100)));
String num = String.valueOf(random.nextInt(10));
pen.drawString(num, i * 20 + 10, 15);
sb.append(num);
}
request.getSession().setAttribute("code", sb.toString());
response.setHeader("Pragma", "no-store");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
ImageIO.write(img, "jpeg", response.getOutputStream());
}
}
public class Uploader {
private HttpServletRequest request = null;
private Map<String, Object> conf = null;
try {
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
} catch (Exception e){
}
try {
// 关闭writer,释放内存
writer.close();//其实不写这句在功能上也可以,但是为了规范,最好写上
} catch (Exception e){
}
//转码,免得文件名中文乱码
// fileName = URLEncoder.encode(fileName,"UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + UUID.randomUUID().toString()+".xls");
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
while((len = bis.read()) != -1){
out.write(len);
out.flush();
}
out.close();
}
}
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@RequestMapping(value = "/getAllDataInPage.do")//获取列表的数据
public String getAllDataInPage(HttpServletRequest request, Model model) {
String field = request.getParameter("field");
String fieldValue = request.getParameter("fieldValue");//当前端有查询的时候,这里的fieldValue就不是空,否则是空
try {
fieldValue = new String(fieldValue.getBytes("UTF-8"), "UTF-8");//防止乱码
} catch (Exception e) {}
String pageNo = request.getParameter("pageModel.currentPageNo");//获取当前页码是多少
int currentPageNo = 1;//设置初始化页码是1
try{
currentPageNo = Integer.parseInt(pageNo);//防止前端传的不是数字
}catch(Exception e){
}
List<Pingpai> list = pingpaiService.getList(field, fieldValue);//获取列表数据
PageModel pageModel = new PageModel();
pageModel = pageModel.getUtilByController(list, currentPageNo);
model.addAttribute("pageModel", pageModel);//查询后,把查询的条件类型回显到jsp中
model.addAttribute("fieldValue", fieldValue);//查询后,把查询的关键字回显到jsp中
model.addAttribute("field", field);
return "Pingpai/find";//跳转到find.jsp页面,也就是列表页面,Pingpai文件夹下面
}
@RequestMapping(value = "/deleteUtil.do")
public String deleteUtil(HttpServletRequest request, Pingpai pingpai, Model model) {//删除的代码
try{
pingpaiService.deleteById(pingpai.getId());//根据ID删除
}catch(Exception e){
}
return this.getAllDataInPage(request, model);//返回到列表页面,对应admin文件夹下的Pingpai文件夹下的find.jsp
}
@RequestMapping(value = "/deleteManyDataByIds.do")//批量删除
public String deleteManyDataByIds(HttpServletRequest request, User user,Model model) {
String ids[] = request.getParameterValues("id"); //获取ID的列表
for (String id : ids) {//考虑可能传多个id
user = new User();
user.setId(Integer.parseInt(id));
try{
pingpaiService.deleteById(user.getId());//删除的核心代码
}catch(Exception e){}
}
return this.getAllDataInPage(request, model);
}
@RequestMapping(value = "/saveOrupdate.do")//这里是编辑或者添加的具体代码
public String saveOrupdate(HttpServletRequest request, Pingpai util, Model model) {
List<Pingpai> list = pingpaiService.getList("name", util.getName());
if (0 == util.getId()) {
if (list.size() > 0) {
model.addAttribute("util", util);
model.addAttribute("errMsg", "该信息已存在!");
util.setS_1(fileName);
util.setS_2(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date()));
}
if (0 == util.getId()) {
userMapper.insert(util);
} else {
userMapper.update(util);
}
return this.getAllDataInPage(request, util, model);
}
return this.getAllDataInPage(request, util, model);
}
}
public class ActionEnter {
private HttpServletRequest request = null;
private String rootPath = null;
private String contextPath = null;
private String actionType = null;
private ConfigManager configManager = null;
public ActionEnter ( HttpServletRequest request, String rootPath ) {
this.request = request;
/**
* callback参数验证
*/
public boolean validCallbackName ( String name ) {
if ( name.matches( "^[a-zA-Z_]+[\\w0-9_]*$" ) ) {
return true;
}
return false;
}
}
public class BinaryUploader {
public static final State save(HttpServletRequest request,
Map<String, Object> conf) {
FileItemStream fileStream = null;
} catch (Exception e){
}
try {
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
} catch (Exception e){
}
try {
// 关闭writer,释放内存
writer.close();//其实不写这句在功能上也可以,但是为了规范,最好写上
} catch (Exception e){
}
//转码,免得文件名中文乱码
// fileName = URLEncoder.encode(fileName,"UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + UUID.randomUUID().toString()+".xls");
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int len = 0;
InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
while((len = bis.read()) != -1){
out.write(len);
out.flush();
}
out.close();
}
}
/**
try{
currentPageNo = Integer.parseInt(pageNo);//防止前端传的不是数字
}catch(Exception e){
}
List<KuaidiStatus> list = kuaidiStatusService.getList(field, fieldValue);//获取列表数据
PageModel pageModel = new PageModel();
pageModel = pageModel.getUtilByController(list, currentPageNo);
model.addAttribute("pageModel", pageModel);//查询后,把查询的条件类型回显到jsp中
model.addAttribute("fieldValue", fieldValue);//查询后,把查询的关键字回显到jsp中
model.addAttribute("field", field);
return "KuaidiStatus/find";//跳转到find.jsp页面,也就是列表页面,KuaidiStatus文件夹下面
}
@RequestMapping(value = "/deleteUtil.do")
public String deleteUtil(HttpServletRequest request, KuaidiStatus kuaidiStatus, Model model) {//删除的代码
try{
kuaidiStatusService.deleteById(kuaidiStatus.getId());//根据ID删除
}catch(Exception e){
}
return this.getAllDataInPage(request, model);//返回到列表页面,对应admin文件夹下的KuaidiStatus文件夹下的find.jsp
}
@RequestMapping(value = "/deleteManyDataByIds.do")//批量删除
public String deleteManyDataByIds(HttpServletRequest request, User user,Model model) {
String ids[] = request.getParameterValues("id"); //获取ID的列表
for (String id : ids) {//考虑可能传多个id
user = new User();
user.setId(Integer.parseInt(id));
try{
kuaidiStatusService.deleteById(user.getId());//删除的核心代码
}catch(Exception e){}
}
return this.getAllDataInPage(request, model);
}
@RequestMapping(value = "/saveOrupdate.do")//这里是编辑或者添加的具体代码
public String saveOrupdate(HttpServletRequest request, KuaidiStatus util, Model model) {
List<KuaidiStatus> list = kuaidiStatusService.getList("name", util.getName());
if (0 == util.getId()) {
if (list.size() > 0) {
model.addAttribute("util", util);
model.addAttribute("errMsg", "该信息已存在!");
return "KuaidiStatus/saveOrUpdate";
}
kuaidiStatusService.insert(util);
} else {
if (list.size() > 1) {
model.addAttribute("util", util);
model.addAttribute("errMsg", "该信息已存在!");
return "KuaidiStatus/saveOrUpdate";
}
kuaidiStatusService.update(util);
}
return this.getAllDataInPage(request, model);
Map<String, Object> row2 = new LinkedHashMap<String, Object>();
Map<String, Object> row = new LinkedHashMap<String, Object>();
String field = request.getParameter("field");
String fieldValue = request.getParameter("fieldValue");//当前端有查询的时候,这里的fieldValue就不是空,否则是空
try {
fieldValue = new String(fieldValue.getBytes("UTF-8"), "UTF-8");//防止乱码
} catch (Exception e) {}
List<KuaidiManage> list = kuaidiManageService.getList(field, fieldValue);//获取列表数据
Class p= KuaidiManage.class;
Field[] fields = p.getDeclaredFields();
for(KuaidiManage kuaidiManage:list) {
for (int j = 0; j < fields.length; j++) {
System.out.println(fields[j].getName().toLowerCase());
Field declaredField = p.getDeclaredField(fields[j].getName());
declaredField.setAccessible(true);
// Tip tip = declaredField.getAnnotation(Tip.class);
//System.out.println(annotation.age()+":"+annotation.name());
String name = declaredField.getAnnotation(Tip.class).value();
if(name == null){
continue;
}
if(declaredField.getType().toString().equals("class java.lang.String")){
row2.put(name, declaredField.get(kuaidiManage));
}else if(declaredField.getType().toString().equals("int")){
row2.put(name, declaredField.get(kuaidiManage));
}
if(declaredField.getType().toString().equals("class com.edu.model.User")){
row2.put(name, ((User)declaredField.get(kuaidiManage)).getS_0());
}
if(declaredField.getType().toString().equals("class com.edu.model.Pingpai")){
row2.put(name, ((Pingpai)declaredField.get(kuaidiManage)).getName());
}
if(declaredField.getType().toString().equals("class com.edu.model.KuaidiStatus")){
row2.put(name, ((KuaidiStatus)declaredField.get(kuaidiManage)).getName());
}
}
row.putAll(row2);
row2 = new LinkedHashMap<String, Object>();
}
String fileName = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)
+"/upload/"+UUID.randomUUID().toString()+".xls";
ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row);
ExcelWriter writer = null;
try {
writer = ExcelUtil.getWriter(fileName);
} catch (Exception e){
for (int j = 0; j < fields.length; j++) {
System.out.println(fields[j].getName().toLowerCase());
Field declaredField = p.getDeclaredField(fields[j].getName());
declaredField.setAccessible(true);
// Tip tip = declaredField.getAnnotation(Tip.class);
//System.out.println(annotation.age()+":"+annotation.name());
String name = declaredField.getAnnotation(Tip.class).value();
if(name == null){
continue;
}
if(declaredField.getType().toString().equals("class java.lang.String")){
row2.put(name, declaredField.get(gongao));
}else if(declaredField.getType().toString().equals("int")){
row2.put(name, declaredField.get(gongao));
}
}
row.putAll(row2);
row2 = new LinkedHashMap<String, Object>();
}
String fileName = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)
+"/upload/"+UUID.randomUUID().toString()+".xls";
ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row);
ExcelWriter writer = null;
try {
writer = ExcelUtil.getWriter(fileName);
} catch (Exception e){
}
try {
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
} catch (Exception e){
}
try {
// 关闭writer,释放内存
writer.close();//其实不写这句在功能上也可以,但是为了规范,最好写上
} catch (Exception e){
}
//转码,免得文件名中文乱码
// fileName = URLEncoder.encode(fileName,"UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + UUID.randomUUID().toString()+".xls");
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");






更多推荐


所有评论(0)