- 温柔一刀
- 等级:
- 性别:
- 文章: 801
- 积分: 1192
- 来自: 上海
|
HTML页面并不总是向用户显示数据输出的最好方式,有时候需要生成不可改变的文件打印,PDF可能是种不错的选择。
Spring支持从数据动态生成PDF或Excel文件
下面这个简单实现的例子实现了spring输出PDF和Excel文件,为了使用Excel电子表格,你需要在你的classpath中加入poi-2.5.1.jar库文件,而对PDF文件,则需要iText.jar文件。它们都包含在Spring的主发布包中。
下面是测试项目代码:
1、控制器配置代码
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-
- <beans>
- <bean id="beanNameViewResolver"
- class="org.springframework.web.servlet.view.BeanNameViewResolver" />
-
- <bean id="viewController" class="com.zhupan.spring.ViewController" />
- <bean id="urlMapping"
- class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="mappings">
- <props>
- <prop key="/view*.shtml">viewControllerprop>
- props>
- property>
- bean>
- beans>
3、用于Excel视图的视图子类化
为了在生成输出文档的过程中实现定制的行为,我们将继承合适的抽象类。对于Excel,这包括提供一个 org.springframework.web.servlet.view.document.AbstractExcelView的子类,并实现 buildExcelDocument方法。
java 代码
- package com.zhupan.view;
-
- import java.util.Date;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import org.apache.poi.hssf.usermodel.HSSFCell;
- import org.apache.poi.hssf.usermodel.HSSFCellStyle;
- import org.apache.poi.hssf.usermodel.HSSFDataFormat;
- import org.apache.poi.hssf.usermodel.HSSFRow;
- import org.apache.poi.hssf.usermodel.HSSFSheet;
- import org.apache.poi.hssf.usermodel.HSSFWorkbook;
- import org.springframework.web.servlet.view.document.AbstractExcelView;
-
- public class ViewExcel extends AbstractExcelView {
-
- public void buildExcelDocument(Map model, HSSFWorkbook workbook,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
-
- HSSFSheet sheet = workbook.createSheet("list");
- sheet.setDefaultColumnWidth((short) 12);
-
- HSSFCell cell = getCell(sheet, 0, 0);
- setText(cell, "Spring Excel test");
-
- HSSFCellStyle dateStyle = workbook.createCellStyle();
- dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
- cell = getCell(sheet, 1, 0);
- cell.setCellValue(new Date());
- cell.setCellStyle(dateStyle);
- getCell(sheet, 2, 0).setCellValue(458);
-
- HSSFRow sheetRow = sheet.createRow(3);
- for (short i = 0; i < 10; i++) {
- sheetRow.createCell(i).setCellValue(i * 10);
- }
-
- }
-
- }
4、用于PDF视图的视图子类化
需要象下面一样继承org.springframework.web.servlet.view.document.AbstractPdfView,并实现buildPdfDocument()方法。
java 代码
- package com.zhupan.view;
-
- import java.util.List;
- import java.util.Map;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import org.springframework.web.servlet.view.document.AbstractPdfView;
-
- import com.lowagie.text.Document;
- import com.lowagie.text.Paragraph;
- import com.lowagie.text.pdf.PdfWriter;
-
- public class ViewPDF extends AbstractPdfView {
- public void buildPdfDocument(Map model, Document document,
- PdfWriter writer, HttpServletRequest request,
- HttpServletResponse response) throws Exception {
-
- List list = (List) model.get("list");
-
- for (int i = 0; i < list.size(); i++)
- document.add(new Paragraph((String) list.get(i)));
- }
-
- }
5、其他文件
1)控制器ViewController
java 代码
- package com.zhupan.spring;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
-
- import com.zhupan.view.ViewExcel;
- import com.zhupan.view.ViewPDF;
-
- public class ViewController extends MultiActionController {
-
- public ModelAndView viewPDF(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- List list = new ArrayList();
- Map model = new HashMap();
- list.add("test1");
- list.add("test2");
- model.put("list", list);
- ViewPDF viewPDF = new ViewPDF();
- return new ModelAndView(viewPDF, model);
- }
-
- public ModelAndView viewExcel(HttpServletRequest request,
- HttpServletResponse response) throws Exception {
- List list = new ArrayList();
- Map model = new HashMap();
- list.add("test1");
- list.add("test2");
- model.put("list", list);
- ViewExcel viewExcel = new ViewExcel();
- return new ModelAndView(viewExcel, model);
- }
- }
2)web.xml
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
-
- <display-name>springPDFTestdisplay-name>
- <servlet>
- <servlet-name>springPDFTestservlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- servlet-class>
- <load-on-startup>1load-on-startup>
- servlet>
-
- <servlet-mapping>
- <servlet-name>springPDFTestservlet-name>
- <url-pattern>*.shtmlurl-pattern>
- servlet-mapping>
-
- <welcome-file-list>
- <welcome-file>index.jspwelcome-file>
- welcome-file-list>
-
- web-app>
3)index.jsp
<a href="viewPDF.shtml">PDF视图打开 a>
<br>
<a href="viewExcel.shtml">Excel视图打开a>
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
返回顶楼 |
|
|
- javaway
- 等级: 初级会员
- 文章: 12
- 积分: 40
|
<p>thanks</p>
|
返回顶楼 |
|
|
- imlinf
- 等级: 初级会员
- 文章: 2
- 积分: 30
|
怎么不提打包的源代码下载
|
返回顶楼 |
|
|
- 温柔一刀
- 等级:
- 性别:
- 文章: 801
- 积分: 1192
- 来自: 上海
|
里面有几个依赖.jar文件
打包太大了
所以就把代码全部贴出来了
|
返回顶楼 |
|
|