SpringMVC自定义视图 Excel视图和PDF视图
一、自定义视图-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视图相关推荐
- 如何在极速PDF编辑器中调整PDF视图?
对于刚接触极速PDF编辑器的小伙伴来说,如何调整PDF视图大小可能不知道怎样操作,下面详细罗列所有调整方法,感兴趣的小伙伴可以学一下. 一.调整页面放大率 1.使用工具栏的缩小按钮(快捷键Ctrl+ ...
- 【JetPack】视图绑定 ( ViewBinding ) 各种应用 ( 视图绑定两种方式 | Activity 布局 | 对话框布局 | 自定义组件布局 | RecyclerView 列表布局 )
文章目录 I . 视图绑定 ( ViewBinding ) 界面的两种方式 II . Activity 界面中 应用 视图绑定 ( ViewBinding ) III . Dialog 对话框界面中 ...
- SpringMvc同时配置jsp和html的视图解析器
SpringMvc同时配置jsp和html的视图解析器 1.首先引入freemarker的jar包. <dependency><groupId>org.freemarker&l ...
- 【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )
文章目录 I . 为现有项目配置 视图绑定 ( ViewBinding ) 应用 II . 视图绑定 ( ViewBinding ) 定制 III . 视图绑定 ( ViewBinding ) 对于正 ...
- flask框架视图和路由_角度视图,路由和NgModule的解释
flask框架视图和路由 Angular vs AngularJS (Angular vs AngularJS) AngularJS (versions 1.x) is a JavaScript-ba ...
- 什么是数据库视图(view),视图(view)优缺点是什么?
什么是数据库视图(view),视图(view)优缺点是什么? 什么是数据库视图(view)? 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 视图包含行和列,就像一个真实的表.视图中的 ...
- [译] 通过视图控制器容器和子视图控制器避免庞大的视图控制器
原文地址:Avoiding Massive View Controller using Containment & Child View Controller 通过视图控制器容器和子视图控制器 ...
- 【Android 逆向】IDA 工具使用 ( 十六进制视图 Hex View-1 | 结构体视图 Structures | 枚举视图 Enums | 导入视图 Import | 导出视图 )
文章目录 一.十六进制视图 Hex View-1 二.结构体视图 Structures 三.枚举视图 Enums 四.导入视图 Import 五.导出视图 Export 一.十六进制视图 Hex Vi ...
- 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )
文章目录 I . 视图绑定组件简介 II . 视图绑定 ViewBinding 使用前提 ( Android Studio 3.6 ) III . 视图绑定组件启用 IV . 定制视图绑定 ( 启用视 ...
最新文章
- c专家编程/c陷阱_如何避免常见的初学者陷阱并像专家一样开始编码
- instanceOf,isInstance,Class,isAssignableFrom区别比较
- eas库存状态调整单不能反审核_订单少了,库存多了,利润没了……
- C++泛型编程实现哈希表(开散列法)
- 华为荣耀v20是android10,荣耀V20和荣耀V10买哪个好
- Java 面向对象:instanceof和类型转换的理解
- 计算机在言语康复的应用,实物交互在言语康复训练中的应用.pdf
- SpringBoot Serverless 实战 | 监控调试
- 智能泊车技术及现状详解
- 8款免费的Windows数字签名软件【附下载】
- 常用的特效功能实现代码
- 美国航空发动机发展经验,给中国的启示!
- 升级Win11后Office无法验证此产品的许可证怎么办?
- 怎么复制网页上不能复制的文字(付费文档免费复制),一招搞定
- 181124 逆向-2018“柏鹭杯”厦大邀请赛初赛(Re1、2)
- 启动类上的@MapperScan注解与yml配置中mybatis.mapper-locations和mybatis.type-aliases-package的作用
- linux文件目录管理
- 软件测试入职第一天应该做什么?
- 李白《月下独酌-花间一壶酒》的UML建模
- 教你如何在wordpress中在你的网站页脚添加管局备案号