Skip to content

Commit aa1d006

Browse files
committed
spring mvn json, xml, pdf & excel
spring mvn json, xml, pdf & excel
1 parent 350ba2b commit aa1d006

File tree

13 files changed

+746
-0
lines changed

13 files changed

+746
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
4+
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
5+
<classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
6+
<classpathentry kind="output" path="target/classes"/>
7+
<classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar"/>
8+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
9+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-core/3.1.0.RELEASE/spring-core-3.1.0.RELEASE.jar"/>
10+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-asm/3.1.0.RELEASE/spring-asm-3.1.0.RELEASE.jar"/>
11+
<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar"/>
12+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-web/3.1.0.RELEASE/spring-web-3.1.0.RELEASE.jar"/>
13+
<classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
14+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-beans/3.1.0.RELEASE/spring-beans-3.1.0.RELEASE.jar"/>
15+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-context/3.1.0.RELEASE/spring-context-3.1.0.RELEASE.jar"/>
16+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-aop/3.1.0.RELEASE/spring-aop-3.1.0.RELEASE.jar"/>
17+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-expression/3.1.0.RELEASE/spring-expression-3.1.0.RELEASE.jar"/>
18+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-webmvc/3.1.0.RELEASE/spring-webmvc-3.1.0.RELEASE.jar"/>
19+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-context-support/3.1.0.RELEASE/spring-context-support-3.1.0.RELEASE.jar"/>
20+
<classpathentry kind="var" path="M2_REPO/org/springframework/spring-oxm/3.1.0.RELEASE/spring-oxm-3.1.0.RELEASE.jar"/>
21+
<classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar"/>
22+
<classpathentry kind="var" path="M2_REPO/org/codehaus/jackson/jackson-mapper-asl/1.9.12/jackson-mapper-asl-1.9.12.jar"/>
23+
<classpathentry kind="var" path="M2_REPO/org/codehaus/jackson/jackson-core-asl/1.9.12/jackson-core-asl-1.9.12.jar"/>
24+
<classpathentry kind="var" path="M2_REPO/junit/junit/4.11/junit-4.11.jar"/>
25+
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"/>
26+
<classpathentry kind="var" path="M2_REPO/org/apache/poi/poi/3.9/poi-3.9.jar"/>
27+
<classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.5/commons-codec-1.5.jar"/>
28+
<classpathentry kind="var" path="M2_REPO/org/apache/poi/poi-ooxml/3.9/poi-ooxml-3.9.jar"/>
29+
<classpathentry kind="var" path="M2_REPO/org/apache/poi/poi-ooxml-schemas/3.9/poi-ooxml-schemas-3.9.jar"/>
30+
<classpathentry kind="var" path="M2_REPO/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0.jar"/>
31+
<classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
32+
<classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
33+
<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar"/>
34+
<classpathentry kind="var" path="M2_REPO/com/itextpdf/itextpdf/5.4.2/itextpdf-5.4.2.jar"/>
35+
<classpathentry kind="var" path="M2_REPO/org/codehaus/castor/castor/1.2/castor-1.2.jar"/>
36+
<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar"/>
37+
</classpath>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<linked-list>
3+
<article xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:com.hmkcode.vo.Article">
4+
<categories xsi:type="java:java.lang.String">Spring</categories>
5+
<tags xsi:type="java:java.lang.String">Spring</tags>
6+
<tags xsi:type="java:java.lang.String">JSON</tags>
7+
<tags xsi:type="java:java.lang.String">XML</tags>
8+
<tags xsi:type="java:java.lang.String">iText</tags>
9+
<tags xsi:type="java:java.lang.String">Apache POI</tags>
10+
<url>http://hmkcode.com/spring-mvc-view-json-xml-pdf-or-excel/</url>
11+
<title> Spring MVC View (JSON, XML, PDF or Excel) </title>
12+
</article>
13+
<article xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:com.hmkcode.vo.Article">
14+
<categories xsi:type="java:java.lang.String">Java</categories>
15+
<tags xsi:type="java:java.lang.String">Java</tags>
16+
<tags xsi:type="java:java.lang.String">Castor</tags>
17+
<tags xsi:type="java:java.lang.String">XML</tags>
18+
<tags xsi:type="java:java.lang.String">Marshalling</tags>
19+
<tags xsi:type="java:java.lang.String">Unmarshalling</tags>
20+
<url>http://hmkcode.com/castor-java-object-xml</url>
21+
<title>Castor - Java Object to XML &amp; XML to Object Mapping</title>
22+
</article>
23+
<article xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:com.hmkcode.vo.Article">
24+
<categories xsi:type="java:java.lang.String">Spring</categories>
25+
<tags xsi:type="java:java.lang.String">Spring</tags>
26+
<tags xsi:type="java:java.lang.String">jQuery</tags>
27+
<tags xsi:type="java:java.lang.String">File Upload</tags>
28+
<url>http://hmkcode.com/spring-mvc-jquery-file-upload-multiple-dragdrop-progress/</url>
29+
<title>Spring MVC + jQuery File Upload (multiple, drag &amp; drop, progress…)</title>
30+
</article>
31+
<article xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:com.hmkcode.vo.Article">
32+
<categories xsi:type="java:java.lang.String">Spring</categories>
33+
<tags xsi:type="java:java.lang.String">Spring</tags>
34+
<tags xsi:type="java:java.lang.String">JSON</tags>
35+
<url>http://hmkcode.com/spring-mvc-json-json-to-java/</url>
36+
<title>Spring MVC JSON (JSON to Java)</title>
37+
</article>
38+
<article xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:com.hmkcode.vo.Article">
39+
<categories xsi:type="java:java.lang.String">Android</categories>
40+
<tags xsi:type="java:java.lang.String">Android</tags>
41+
<tags xsi:type="java:java.lang.String">Gradle</tags>
42+
<url>http://hmkcode.com/android-studio-hello-world/</url>
43+
<title>Android Studio – Hello World</title>
44+
</article>
45+
</linked-list>

spring-mvc-json-pdf-xls-excel/pom.xml

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<groupId>com.hmkcode</groupId>
6+
<artifactId>spring-mvc-json-pdf-xls-excel</artifactId>
7+
<packaging>war</packaging>
8+
<version>1.0-SNAPSHOT</version>
9+
10+
<name>spring-mvc-json-pdf-xls Maven Webapp</name>
11+
<url>http://maven.apache.org</url>
12+
13+
14+
<properties>
15+
<spring.version>3.1.0.RELEASE</spring.version>
16+
<junit.version>4.11</junit.version>
17+
</properties>
18+
19+
<dependencies>
20+
<dependency>
21+
<groupId>org.springframework</groupId>
22+
<artifactId>spring-core</artifactId>
23+
<version>${spring.version}</version>
24+
</dependency>
25+
<dependency>
26+
<groupId>org.springframework</groupId>
27+
<artifactId>spring-web</artifactId>
28+
<version>${spring.version}</version>
29+
</dependency>
30+
<dependency>
31+
<groupId>org.springframework</groupId>
32+
<artifactId>spring-webmvc</artifactId>
33+
<version>${spring.version}</version>
34+
</dependency>
35+
<dependency>
36+
<groupId>org.springframework</groupId>
37+
<artifactId>spring-oxm</artifactId>
38+
<version>${spring.version}</version>
39+
</dependency>
40+
41+
<dependency>
42+
<groupId>javax.servlet</groupId>
43+
<artifactId>servlet-api</artifactId>
44+
<version>2.5</version>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.codehaus.jackson</groupId>
48+
<artifactId>jackson-mapper-asl</artifactId>
49+
<version>1.9.12</version>
50+
</dependency>
51+
<dependency>
52+
<groupId>org.codehaus.jackson</groupId>
53+
<artifactId>jackson-core-asl</artifactId>
54+
<version>1.9.12</version>
55+
</dependency>
56+
57+
<dependency>
58+
<groupId>junit</groupId>
59+
<artifactId>junit</artifactId>
60+
<version>${junit.version}</version>
61+
<scope>test</scope>
62+
</dependency>
63+
64+
<dependency>
65+
<groupId>org.apache.poi</groupId>
66+
<artifactId>poi</artifactId>
67+
<version>3.9</version>
68+
</dependency>
69+
<dependency>
70+
<groupId>org.apache.poi</groupId>
71+
<artifactId>poi-ooxml</artifactId>
72+
<version>3.9</version>
73+
</dependency>
74+
<dependency>
75+
<groupId>com.itextpdf</groupId>
76+
<artifactId>itextpdf</artifactId>
77+
<version>5.4.2</version>
78+
</dependency>
79+
<dependency>
80+
<groupId>org.codehaus.castor</groupId>
81+
<artifactId>castor</artifactId>
82+
<version>1.2</version>
83+
</dependency>
84+
<dependency>
85+
<groupId>xerces</groupId>
86+
<artifactId>xercesImpl</artifactId>
87+
<version>2.8.1</version>
88+
</dependency>
89+
</dependencies>
90+
<build>
91+
<finalName>spring-mvc-json-pdf-xls-excel</finalName>
92+
<plugins>
93+
<plugin>
94+
<groupId>org.mortbay.jetty</groupId>
95+
<artifactId>maven-jetty-plugin</artifactId>
96+
<version>6.1.10</version>
97+
<configuration>
98+
<scanIntervalSeconds>10</scanIntervalSeconds>
99+
</configuration>
100+
</plugin>
101+
<plugin>
102+
<artifactId>maven-compiler-plugin</artifactId>
103+
<configuration>
104+
<source>1.6</source>
105+
<target>1.6</target>
106+
</configuration>
107+
</plugin>
108+
</plugins>
109+
</build>
110+
111+
</project>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.hmkcode.controllers;
2+
3+
import java.io.FileNotFoundException;
4+
import java.io.FileReader;
5+
import java.util.LinkedList;
6+
import org.exolab.castor.xml.MarshalException;
7+
import org.exolab.castor.xml.Unmarshaller;
8+
import org.exolab.castor.xml.ValidationException;
9+
import org.springframework.stereotype.Controller;
10+
import org.springframework.ui.Model;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
import org.springframework.web.bind.annotation.RequestMethod;
13+
14+
import com.hmkcode.vo.Article;
15+
16+
@Controller
17+
@RequestMapping("/controller")
18+
public class MyController {
19+
20+
public MyController(){
21+
System.out.println("Init MyController");
22+
}
23+
24+
@RequestMapping(value = "/get", method = RequestMethod.GET)
25+
public LinkedList<Article> get(Model model) {
26+
27+
FileReader reader;
28+
29+
LinkedList<Article> articles = null;
30+
31+
try {
32+
33+
reader = new FileReader("articles.xml");
34+
//convert "unmarshal" data from XML "articles.xml" to Java object LinkedList<Article>
35+
articles = (LinkedList) Unmarshaller.unmarshal(LinkedList.class, reader);
36+
model.addAttribute("articles",articles);
37+
38+
} catch (FileNotFoundException e) {
39+
e.printStackTrace();
40+
} catch (MarshalException e) {
41+
e.printStackTrace();
42+
} catch (ValidationException e) {
43+
e.printStackTrace();
44+
}
45+
46+
return articles;
47+
48+
}
49+
50+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.hmkcode.view;
2+
3+
import java.util.LinkedList;
4+
import java.util.Map;
5+
6+
import javax.servlet.http.HttpServletRequest;
7+
import javax.servlet.http.HttpServletResponse;
8+
9+
import org.apache.poi.ss.formula.functions.Hyperlink;
10+
import org.apache.poi.ss.usermodel.Cell;
11+
import org.apache.poi.ss.usermodel.CellStyle;
12+
import org.apache.poi.ss.usermodel.IndexedColors;
13+
import org.apache.poi.ss.usermodel.Row;
14+
import org.apache.poi.ss.usermodel.Sheet;
15+
import org.apache.poi.ss.usermodel.Workbook;
16+
17+
import com.hmkcode.view.abstractview.AbstractExcelView;
18+
import com.hmkcode.vo.Article;
19+
20+
public class ExcelView extends AbstractExcelView {
21+
22+
@Override
23+
protected void buildExcelDocument(Map<String, Object> model,
24+
Workbook workbook, HttpServletRequest request,
25+
HttpServletResponse response) throws Exception {
26+
27+
Sheet sheet = workbook.createSheet("sheet 1");
28+
29+
@SuppressWarnings("unchecked")
30+
LinkedList<Article> articles = (LinkedList<Article>) model.get("articles");
31+
32+
Row row = null;
33+
Cell cell = null;
34+
int r = 0;
35+
int c = 0;
36+
37+
//Style for header cell
38+
CellStyle style = workbook.createCellStyle();
39+
style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.index);
40+
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
41+
style.setAlignment(CellStyle.ALIGN_CENTER);
42+
43+
//Create header cells
44+
row = sheet.createRow(r++);
45+
46+
cell = row.createCell(c++);
47+
cell.setCellStyle(style);
48+
cell.setCellValue("Title");
49+
50+
cell = row.createCell(c++);
51+
cell.setCellStyle(style);
52+
cell.setCellValue("URL");
53+
54+
cell = row.createCell(c++);
55+
cell.setCellStyle(style);
56+
cell.setCellValue("Categories");
57+
58+
cell = row.createCell(c++);
59+
cell.setCellStyle(style);
60+
cell.setCellValue("Tags");
61+
62+
63+
//Create data cell
64+
for(Article article:articles){
65+
row = sheet.createRow(r++);
66+
c = 0;
67+
row.createCell(c++).setCellValue(article.getTitle());
68+
row.createCell(c++).setCellValue(article.getUrl());
69+
row.createCell(c++).setCellValue(article.getCategories().toString());
70+
row.createCell(c++).setCellValue(article.getTags().toString());
71+
72+
}
73+
for(int i = 0 ; i < 4; i++)
74+
sheet.autoSizeColumn(i, true);
75+
76+
}
77+
78+
79+
80+
}

0 commit comments

Comments
 (0)