一、自定义视图-Excel视图

1、Maven依赖 引入POI

        <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.11</version></dependency>

2、自定义视图解析器

importjava.io.OutputStream;importjava.util.List;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.poi.hssf.usermodel.HSSFCellStyle;importorg.apache.poi.hssf.usermodel.HSSFDataFormat;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.springframework.web.servlet.view.document.AbstractExcelView;importcom.cn21.calendar.spider.test.User;public class ViewExcel extendsAbstractExcelView {@SuppressWarnings("unchecked")@Overrideprotected void buildExcelDocument(Map<String, Object>model, HSSFWorkbook workbook, HttpServletRequest request,HttpServletResponse response)throwsException {String fileName= "用户列表excel.xls";  response.setCharacterEncoding("UTF-8");  response.setContentType("application/ms-excel");  response.setHeader("Content-Disposition", "inline; filename="+new String(fileName.getBytes(),"iso8859-1"));  OutputStream outputStream=response.getOutputStream();List<User> userList = (List<User>) model.get("userList");//产生Excel表头HSSFSheet sheet = workbook.createSheet("基本信息");HSSFRow header= sheet.createRow(0);//产生标题列header.createCell(0).setCellValue("ID");header.createCell(1).setCellValue("名字");header.createCell(2).setCellValue("邮箱");header.createCell(3).setCellValue("密码");HSSFCellStyle cellStyle=workbook.createCellStyle();cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("mm/dd/yyyy"));int rowNumber = 1;for(User user : userList) {HSSFRow row= sheet.createRow(rowNumber++);//产生标题列row.createCell(0).setCellValue(user.getId());row.createCell(1).setCellValue(user.getName());row.createCell(2).setCellValue(user.getEmail());row.createCell(3).setCellValue(user.getPassword());}workbook.write(outputStream);outputStream.flush();outputStream.close();}
}

3、视图映射配置dispather-servlet.xml

  <!-- 通过order属性来定义视图解析器的优先级,order的值越小优先级越低 --><beanclass="org.springframework.web.servlet.view.BeanNameViewResolver"><propertyname="order"value="0"></property></bean>

四、控制器代码示例

    @RequestMapping(value = "excel")publicModelAndView viewExcel() {Map<String, Object> model = new HashMap<>();model.put("userList", getStudents());return new ModelAndView(newViewExcel(), model);}private List<User>getStudents() {List<User> userList = new ArrayList<>();User user= new User("1", "Tome", "Tom@qq.com", "123456");userList.add(user);returnuserList;}

五、测试结果

二、PDF视图

1、Maven依赖包引入

        <dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.1.0</version></dependency><dependency>  <groupId>com.lowagie</groupId>  <artifactId>itext</artifactId>  <version>2.1.7</version>  </dependency>  

2、自定义视图解析器

importjava.util.List;importjava.util.Map;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.web.servlet.view.document.AbstractPdfView;importcom.cn21.calendar.spider.test.User;importcom.lowagie.text.Document;importcom.lowagie.text.Paragraph;importcom.lowagie.text.pdf.BaseFont;importcom.lowagie.text.pdf.PdfWriter;public class ViewPDF extendsAbstractPdfView {@SuppressWarnings("unchecked")@Overrideprotected void buildPdfDocument(Map<String, Object>model, Document document, PdfWriter writer,HttpServletRequest request, HttpServletResponse response)throwsException {String fileName= "用户信息.pdf"; //设置response方式,使执行此controller时候自动出现下载页面,而非直接使用excel打开response.setCharacterEncoding("UTF-8");response.setContentType("application/octet-stream");response.setHeader("Content-Disposition","attachment; filename=" + new String(fileName.getBytes(), "iso8859-1"));List<User> userList = (List<User>) model.get("userList");BaseFont bfChinese= BaseFont.createFont("C://Windows//Fonts//simfang.ttf", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);com.lowagie.text.Font FontChinese= new com.lowagie.text.Font(bfChinese, 12, com.lowagie.text.Font.NORMAL);for (int i = 0; i < userList.size(); i++) {User user=userList.get(i);String value= "ID: " + user.getId() + "姓名: " + user.getName() + ",邮箱: " + user.getEmail() + ",密码: "+user.getPassword();document.add(newParagraph(value, FontChinese));}}
}

3、视图映射配置dispather-servlet.xml

    <!--通过order属性来定义视图解析器的优先级,order的值越小优先级越低--><beanclass="org.springframework.web.servlet.view.BeanNameViewResolver"><propertyname="order"value="0"></property></bean>

4、控制器代码示例

    @RequestMapping("pdf")publicModelAndView viewPDF(){  Map<String, Object> model = new HashMap<>();model.put("userList", getStudents());return new ModelAndView(newViewPDF(), model);  }private List<User>getStudents() {List<User> userList = new ArrayList<>();User user= new User("1", "Tome", "Tom@qq.com", "123456");userList.add(user);returnuserList;}

五、测试结果

SpringMVC自定义视图 Excel视图和PDF视图相关推荐

  1. 如何在极速PDF编辑器中调整PDF视图?

    对于刚接触极速PDF编辑器的小伙伴来说,如何调整PDF视图大小可能不知道怎样操作,下面详细罗列所有调整方法,感兴趣的小伙伴可以学一下. 一.调整页面放大率 1.使用工具栏的缩小按钮(快捷键Ctrl+ ...

  2. 【JetPack】视图绑定 ( ViewBinding ) 各种应用 ( 视图绑定两种方式 | Activity 布局 | 对话框布局 | 自定义组件布局 | RecyclerView 列表布局 )

    文章目录 I . 视图绑定 ( ViewBinding ) 界面的两种方式 II . Activity 界面中 应用 视图绑定 ( ViewBinding ) III . Dialog 对话框界面中 ...

  3. SpringMvc同时配置jsp和html的视图解析器

    SpringMvc同时配置jsp和html的视图解析器 1.首先引入freemarker的jar包. <dependency><groupId>org.freemarker&l ...

  4. 【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )

    文章目录 I . 为现有项目配置 视图绑定 ( ViewBinding ) 应用 II . 视图绑定 ( ViewBinding ) 定制 III . 视图绑定 ( ViewBinding ) 对于正 ...

  5. flask框架视图和路由_角度视图,路由和NgModule的解释

    flask框架视图和路由 Angular vs AngularJS (Angular vs AngularJS) AngularJS (versions 1.x) is a JavaScript-ba ...

  6. 什么是数据库视图(view),视图(view)优缺点是什么?

    什么是数据库视图(view),视图(view)优缺点是什么? 什么是数据库视图(view)? 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 视图包含行和列,就像一个真实的表.视图中的 ...

  7. [译] 通过视图控制器容器和子视图控制器避免庞大的视图控制器

    原文地址:Avoiding Massive View Controller using Containment & Child View Controller 通过视图控制器容器和子视图控制器 ...

  8. 【Android 逆向】IDA 工具使用 ( 十六进制视图 Hex View-1 | 结构体视图 Structures | 枚举视图 Enums | 导入视图 Import | 导出视图 )

    文章目录 一.十六进制视图 Hex View-1 二.结构体视图 Structures 三.枚举视图 Enums 四.导入视图 Import 五.导出视图 Export 一.十六进制视图 Hex Vi ...

  9. 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )

    文章目录 I . 视图绑定组件简介 II . 视图绑定 ViewBinding 使用前提 ( Android Studio 3.6 ) III . 视图绑定组件启用 IV . 定制视图绑定 ( 启用视 ...

最新文章

  1. c专家编程/c陷阱_如何避免常见的初学者陷阱并像专家一样开始编码
  2. instanceOf,isInstance,Class,isAssignableFrom区别比较
  3. eas库存状态调整单不能反审核_订单少了,库存多了,利润没了……
  4. C++泛型编程实现哈希表(开散列法)
  5. 华为荣耀v20是android10,荣耀V20和荣耀V10买哪个好
  6. Java 面向对象:instanceof和类型转换的理解
  7. 计算机在言语康复的应用,实物交互在言语康复训练中的应用.pdf
  8. SpringBoot Serverless 实战 | 监控调试
  9. 智能泊车技术及现状详解
  10. 8款免费的Windows数字签名软件【附下载】
  11. 常用的特效功能实现代码
  12. 美国航空发动机发展经验,给中国的启示!
  13. 升级Win11后Office无法验证此产品的许可证怎么办?
  14. 怎么复制网页上不能复制的文字(付费文档免费复制),一招搞定
  15. 181124 逆向-2018“柏鹭杯”厦大邀请赛初赛(Re1、2)
  16. 启动类上的@MapperScan注解与yml配置中mybatis.mapper-locations和mybatis.type-aliases-package的作用
  17. linux文件目录管理
  18. 软件测试入职第一天应该做什么?
  19. 李白《月下独酌-花间一壶酒》的UML建模
  20. 教你如何在wordpress中在你的网站页脚添加管局备案号

热门文章

  1. QT: 使用qtchooser修改ubuntu默认的qmake版本
  2. 时序分析:隐马尔可夫模型
  3. springboot start
  4. case --when
  5. 2017面试分享(js面试题记录)
  6. 炫酷实用的jQuery插件 涵盖菜单、按钮、图片
  7. 一个B/S结构自动二次请求需求的实现
  8. flink中各种图的原理(还没搞完)
  9. App.vue文件報錯
  10. Python学习笔记——glob模块【文件、路径操作】