sunyj 9 лет назад
Сommit
fe80263283
43 измененных файлов с 1026 добавлено и 0 удалено
  1. 32 0
      .classpath
  2. 42 0
      .project
  3. 13 0
      .settings/.jsdtscope
  4. 8 0
      .settings/org.eclipse.jdt.core.prefs
  5. 4 0
      .settings/org.eclipse.m2e.core.prefs
  6. 10 0
      .settings/org.eclipse.wst.common.component
  7. 7 0
      .settings/org.eclipse.wst.common.project.facet.core.xml
  8. 1 0
      .settings/org.eclipse.wst.jsdt.ui.superType.container
  9. 1 0
      .settings/org.eclipse.wst.jsdt.ui.superType.name
  10. 2 0
      .settings/org.eclipse.wst.validation.prefs
  11. 95 0
      pom.xml
  12. 115 0
      src/main/java/com/uas/report/controller/PrintController.java
  13. 25 0
      src/main/java/com/uas/report/service/PrintService.java
  14. 96 0
      src/main/java/com/uas/report/service/impl/PrintServiceImpl.java
  15. 19 0
      src/main/java/com/uas/report/support/ApplicationContextRegister.java
  16. 72 0
      src/main/java/com/uas/report/util/ContextUtils.java
  17. 78 0
      src/main/java/com/uas/report/util/PathUtils.java
  18. 26 0
      src/main/java/com/uas/report/util/ReportConstants.java
  19. 39 0
      src/main/resources/applicationContext.xml
  20. 11 0
      src/main/resources/jdbc.properties
  21. 5 0
      src/main/resources/log4j.properties
  22. 23 0
      src/main/webapp/WEB-INF/log4j.properties
  23. 5 0
      src/main/webapp/WEB-INF/views/index.html
  24. 86 0
      src/main/webapp/WEB-INF/web.xml
  25. 32 0
      src/main/webapp/WEB-INF/webmvc.xml
  26. 39 0
      target/classes/applicationContext.xml
  27. BIN
      target/classes/com/uas/report/controller/PrintController.class
  28. BIN
      target/classes/com/uas/report/service/PrintService.class
  29. BIN
      target/classes/com/uas/report/service/impl/PrintServiceImpl.class
  30. BIN
      target/classes/com/uas/report/support/ApplicationContextRegister.class
  31. BIN
      target/classes/com/uas/report/util/ContextUtils.class
  32. BIN
      target/classes/com/uas/report/util/PathUtils.class
  33. BIN
      target/classes/com/uas/report/util/ReportConstants.class
  34. 11 0
      target/classes/jdbc.properties
  35. 5 0
      target/classes/log4j.properties
  36. 5 0
      target/m2e-wtp/web-resources/META-INF/MANIFEST.MF
  37. 7 0
      target/m2e-wtp/web-resources/META-INF/maven/com.uas.report/report/pom.properties
  38. 95 0
      target/m2e-wtp/web-resources/META-INF/maven/com.uas.report/report/pom.xml
  39. 5 0
      target/maven-archiver/pom.properties
  40. 0 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  41. BIN
      target/report.war
  42. 7 0
      target/report/WEB-INF/web.xml
  43. 5 0
      target/report/index.jsp

+ 32 - 0
.classpath

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

+ 42 - 0
.project

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>report</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>

+ 13 - 0
.settings/.jsdtscope

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/webapp"/>
+	<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="target/m2e-wtp/web-resources"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+	<classpathentry kind="output" path=""/>
+</classpath>

+ 8 - 0
.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,8 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.7

+ 4 - 0
.settings/org.eclipse.m2e.core.prefs

@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

+ 10 - 0
.settings/org.eclipse.wst.common.component

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="report">
+        <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
+        <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+        <property name="context-root" value="report"/>
+        <property name="java-output-path" value="/report/target/classes"/>
+    </wb-module>
+</project-modules>

+ 7 - 0
.settings/org.eclipse.wst.common.project.facet.core.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <fixed facet="wst.jsdt.web"/>
+  <installed facet="jst.web" version="2.3"/>
+  <installed facet="wst.jsdt.web" version="1.0"/>
+  <installed facet="java" version="1.7"/>
+</faceted-project>

+ 1 - 0
.settings/org.eclipse.wst.jsdt.ui.superType.container

@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary

+ 1 - 0
.settings/org.eclipse.wst.jsdt.ui.superType.name

@@ -0,0 +1 @@
+Window

+ 2 - 0
.settings/org.eclipse.wst.validation.prefs

@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1

+ 95 - 0
pom.xml

@@ -0,0 +1,95 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.uas.report</groupId>
+	<artifactId>report</artifactId>
+	<packaging>war</packaging>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>report Maven Webapp</name>
+	<url>http://maven.apache.org</url>
+
+	<properties>
+		<oracle.jdbc.version>11.2.0</oracle.jdbc.version>
+		<spring.version>4.1.6.RELEASE</spring.version>
+		<log4j.version>1.2.16</log4j.version>
+		<servlet.version>3.0-alpha-1</servlet.version>
+		<commons.dbcp.version>1.4</commons.dbcp.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>${servlet.version}</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>commons-dbcp</groupId>
+			<artifactId>commons-dbcp</artifactId>
+			<version>${commons.dbcp.version}</version>
+		</dependency>
+
+		<!-- log4j -->
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>${log4j.version}</version>
+		</dependency>
+
+		<!-- spring-webmvc -->
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.oracle</groupId>
+			<artifactId>ojdbc6</artifactId>
+			<version>${oracle.jdbc.version}</version>
+		</dependency>
+
+		<!-- 打印报表 -->
+		<dependency>
+			<groupId>net.sf.jasperreports</groupId>
+			<artifactId>jasperreports</artifactId>
+			<version>6.3.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.codehaus.groovy</groupId>
+			<artifactId>groovy-all</artifactId>
+			<version>2.4.7</version>
+		</dependency>
+
+		<!-- 自制中文字体 - 微软雅黑 -->
+		<dependency>
+			<groupId>com.uas.report</groupId>
+			<artifactId>msyahei</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<finalName>report</finalName>
+		<!-- 解决maven项目jre版本默认为1.5的问题 -->
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 115 - 0
src/main/java/com/uas/report/controller/PrintController.java

@@ -0,0 +1,115 @@
+package com.uas.report.controller;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.uas.report.service.PrintService;
+
+/**
+ * 报表打印
+ * 
+ * @author sunyj
+ * @since 2016年8月16日 下午3:49:02
+ */
+
+@Controller
+@RequestMapping("/print")
+public class PrintController {
+
+	@Autowired
+	private PrintService printService;
+
+	/**
+	 * 打印报表
+	 * 
+	 * @param reportName
+	 *            不为null;需要打印的报表的名称,不带任何后缀(如打印采购单,即为"Purchase")
+	 * @param whereCondition
+	 *            可为null;where之后的条件(包括where)
+	 * @param otherParameters
+	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数
+	 * @param response
+	 * @return
+	 */
+	@RequestMapping("")
+	@ResponseBody
+	public String print(String reportName, String whereCondition, Map<String, Object> otherParameters,
+			HttpServletResponse response) {
+		String message = "";
+		if (StringUtils.isEmpty(reportName)) {
+			message = "报表名称无效!";
+			System.out.println(message);
+			return message;
+		}
+
+		System.out.println("\n开始打印报表: " + reportName + "...");
+		byte[] results = printService.print(reportName, whereCondition, otherParameters);
+		if (results == null || results.length < 1) {
+			message = "报表 " + reportName + " 打印失败!";
+			return message;
+		}
+
+		OutputStream outputStream = null;
+		try {
+			response.setContentType("application/pdf");
+			outputStream = response.getOutputStream();
+			outputStream.write(results);
+			outputStream.flush();
+			outputStream.close();
+		} catch (IOException e) {
+			System.out.println("连接被关闭!");
+		}
+
+		message = "报表 " + reportName + " 打印完成!";
+		System.out.println(message);
+		return message;
+	}
+
+	@RequestMapping("/test")
+	@ResponseBody
+	public String testPrint(HttpServletResponse response) {
+		String reportName = "Purchase";
+		String whereCondition = "where pu_code = 'MP160800017'";
+		Map<String, Object> otherParameters = new HashMap<>();
+		otherParameters.put("OTHER_PARAMETER_1", "天气真好!");
+
+		String message = "";
+		if (StringUtils.isEmpty(reportName)) {
+			message = "报表名称无效!";
+			System.out.println(message);
+			return message;
+		}
+
+		System.out.println("\n开始打印报表: " + reportName + "...");
+		byte[] results = printService.print(reportName, whereCondition, otherParameters);
+		if (results == null || results.length < 1) {
+			message = "报表 " + reportName + " 打印失败!";
+			return message;
+		}
+
+		OutputStream outputStream = null;
+		try {
+			response.setContentType("application/pdf");
+			outputStream = response.getOutputStream();
+			outputStream.write(results);
+			outputStream.flush();
+			outputStream.close();
+		} catch (IOException e) {
+			System.out.println("连接被关闭!");
+		}
+
+		message = "报表 " + reportName + " 打印完成!";
+		System.out.println(message);
+		return message;
+	}
+}

+ 25 - 0
src/main/java/com/uas/report/service/PrintService.java

@@ -0,0 +1,25 @@
+package com.uas.report.service;
+
+import java.util.Map;
+
+/**
+ * 报表打印
+ * 
+ * @author sunyj
+ * @since 2016年8月18日 上午10:55:18
+ */
+public interface PrintService {
+
+	/**
+	 * 打印报表
+	 * 
+	 * @param reportName
+	 *            不为null;需要打印的报表的名称,不带任何后缀(如打印采购单,即为"Purchase")
+	 * @param whereCondition
+	 *            可为null;where之后的条件(包括where)
+	 * @param otherParameters
+	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数
+	 * @return 导出的文件的字节数组
+	 */
+	public byte[] print(String reportName, String whereCondition, Map<String, Object> otherParameters);
+}

+ 96 - 0
src/main/java/com/uas/report/service/impl/PrintServiceImpl.java

@@ -0,0 +1,96 @@
+package com.uas.report.service.impl;
+
+import java.io.File;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.dbcp.BasicDataSource;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import com.uas.report.service.PrintService;
+import com.uas.report.util.ContextUtils;
+import com.uas.report.util.ReportConstants;
+
+import net.sf.jasperreports.engine.JRException;
+import net.sf.jasperreports.engine.JasperCompileManager;
+import net.sf.jasperreports.engine.JasperRunManager;
+import net.sf.jasperreports.engine.design.JasperDesign;
+import net.sf.jasperreports.engine.xml.JRXmlLoader;
+
+/**
+ * 报表打印
+ * 
+ * @author sunyj
+ * @since 2016年8月18日 下午2:58:28
+ */
+@Service
+public class PrintServiceImpl implements PrintService {
+
+	@Override
+	public byte[] print(String reportName, String whereCondition, Map<String, Object> otherParameters) {
+		byte[] results = null;
+		if (StringUtils.isEmpty(reportName)) {
+			return results;
+		}
+
+		File jrxmlFile = new File(ReportConstants.REPORT_DIR + reportName + ".jrxml");
+		// 报表模板不存在
+		if (!jrxmlFile.exists()) {
+			System.out.println(jrxmlFile.getPath() + " not found!");
+			return results;
+		}
+
+		String jasperFilePath = ReportConstants.REPORT_DIR + reportName + ".jasper";
+		// 报表模板编译后的文件
+		File jasperFile = new File(jasperFilePath);
+		try {
+			// 报表模板未编译过
+			if (!jasperFile.exists()) {
+				JasperDesign jasperDesign = JRXmlLoader.load(jrxmlFile);
+				JasperCompileManager.compileReportToFile(jasperDesign, jasperFilePath);
+			} else {
+				// 如果在编译之后,报表模板有更改过 ,重新编译
+				if (jrxmlFile.lastModified() > jasperFile.lastModified()) {
+					System.out.println("重新编译报表模板...");
+					JasperDesign jasperDesign = JRXmlLoader.load(jrxmlFile);
+					JasperCompileManager.compileReportToFile(jasperDesign, jasperFilePath);
+				}
+			}
+		} catch (JRException e) {
+			e.printStackTrace();
+		}
+
+		Map<String, Object> parameters = new HashMap<>();
+		parameters.put(ReportConstants.PARAMETER_REPORT_DIR, ReportConstants.REPORT_DIR);
+		if (!StringUtils.isEmpty(whereCondition)) {
+			parameters.put(ReportConstants.PARAMETER_WHERE_CONDITION, whereCondition);
+		}
+		if (!CollectionUtils.isEmpty(otherParameters)) {
+			parameters.putAll(otherParameters);
+		}
+
+		try {
+			Connection connection = getDataSource().getConnection();
+			results = JasperRunManager.runReportToPdf(jasperFilePath, parameters, connection);
+			connection.close();
+		} catch (SQLException e) {
+			e.printStackTrace();
+		} catch (JRException e) {
+			e.printStackTrace();
+		}
+		return results;
+	}
+
+	/**
+	 * 从配置文件中获取dataSource作为报表模板的数据源
+	 * 
+	 * @return
+	 */
+	private BasicDataSource getDataSource() {
+		return ContextUtils.getApplicationContext().getBean("dataSource", BasicDataSource.class);
+	}
+}

+ 19 - 0
src/main/java/com/uas/report/support/ApplicationContextRegister.java

@@ -0,0 +1,19 @@
+package com.uas.report.support;
+
+import org.apache.log4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+import com.uas.report.util.ContextUtils;
+
+public class ApplicationContextRegister implements ApplicationContextAware {
+
+	private static Logger logger = Logger.getLogger(ApplicationContextRegister.class);
+
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+		ContextUtils.setApplicationContext(applicationContext);
+		logger.debug("ApplicationContext registed");
+	}
+
+}

+ 72 - 0
src/main/java/com/uas/report/util/ContextUtils.java

@@ -0,0 +1,72 @@
+package com.uas.report.util;
+
+import org.apache.log4j.Logger;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * spring容器上下文对象
+ * 
+ * @author yingp
+ *
+ */
+public class ContextUtils {
+	private static ApplicationContext applicationContext;
+
+	private static Logger logger = Logger.getLogger(ContextUtils.class);
+
+	public static void setApplicationContext(ApplicationContext applicationContext) {
+		synchronized (ContextUtils.class) {
+			logger.debug("setApplicationContext, notifyAll");
+			ContextUtils.applicationContext = applicationContext;
+			ContextUtils.class.notifyAll();
+		}
+	}
+
+	public static ApplicationContext getApplicationContext() {
+		synchronized (ContextUtils.class) {
+			while (applicationContext == null) {
+				try {
+					logger.debug("getApplicationContext, wait...");
+					ContextUtils.class.wait(60000);
+					if (applicationContext == null) {
+						logger.warn("Have been waiting for ApplicationContext to be set for 1 minute", new Exception());
+					}
+				} catch (InterruptedException ex) {
+					logger.debug("getApplicationContext, wait interrupted");
+				}
+			}
+			return applicationContext;
+		}
+	}
+
+	/**
+	 * 获取bean
+	 * 
+	 * @param name
+	 * @return
+	 */
+	public static Object getBean(String name) {
+		return getApplicationContext().getBean(name);
+	}
+
+	/**
+	 * 获取bean
+	 * 
+	 * @param cls
+	 * @return
+	 */
+	public static <T> T getBean(Class<T> cls) {
+		return getApplicationContext().getBean(cls);
+	}
+
+	/**
+	 * 触发事件
+	 * 
+	 * @param event
+	 */
+	public static void publishEvent(ApplicationEvent event) {
+		getApplicationContext().publishEvent(event);
+	}
+
+}

+ 78 - 0
src/main/java/com/uas/report/util/PathUtils.java

@@ -0,0 +1,78 @@
+package com.uas.report.util;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+
+/**
+ * 路径
+ * 
+ * @author yingp
+ *
+ */
+public class PathUtils {
+
+	private static String classPath;
+
+	private static String appPath;
+
+	private static String filePath;
+
+	/**
+	 * classes文件目录
+	 * 
+	 * @return
+	 */
+	public static String getClassPath() {
+		if (classPath == null)
+			setClassPath();
+		return classPath;
+	}
+
+	/**
+	 * 应用程序目录
+	 * 
+	 * @return
+	 */
+	public static String getAppPath() {
+		if (appPath == null)
+			setAppPath();
+		return appPath;
+	}
+
+	/**
+	 * 日志、附件文件等存放目录,与程序同级
+	 * 
+	 * @return
+	 */
+	public static String getFilePath() {
+		if (filePath == null)
+			setFilePath();
+		return filePath;
+	}
+
+	private static void setClassPath() {
+		Class<?> objClass = ContextUtils.getApplicationContext().getClass();
+		String strRealPath = objClass.getClassLoader().getResource("").getFile();
+		try {
+			strRealPath = URLDecoder.decode(strRealPath, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			e.printStackTrace();
+		}
+		File objFile = new File(strRealPath);
+		classPath = objFile.getParent() + File.separator;
+		if (classPath.contains("/")) {
+			classPath = "/" + classPath;
+		}
+	}
+
+	private static void setAppPath() {
+		File file = new File(getClassPath());
+		appPath = file.getParent() + File.separator;
+	}
+
+	private static void setFilePath() {
+		File file = new File(getAppPath());
+		filePath = file.getParent() + File.separator;
+	}
+}

+ 26 - 0
src/main/java/com/uas/report/util/ReportConstants.java

@@ -0,0 +1,26 @@
+package com.uas.report.util;
+
+import java.io.File;
+
+/**
+ * 报表打印相关常量
+ * 
+ * @author sunyj
+ * @since 2016年8月18日 下午5:42:05
+ */
+public class ReportConstants {
+	/**
+	 * 报表模板路径
+	 */
+	public static final String REPORT_DIR = PathUtils.getFilePath() + "jrxml" + File.separator;
+
+	/**
+	 * 报表参数 - WHERE_CONDITION,where字句(需含where)
+	 */
+	public static final String PARAMETER_WHERE_CONDITION = "WHERE_CONDITION";
+
+	/**
+	 * 报表参数 - REPORT_DIR,报表模板的路径
+	 */
+	public static final String PARAMETER_REPORT_DIR = "REPORT_DIR";
+}

+ 39 - 0
src/main/resources/applicationContext.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:task="http://www.springframework.org/schema/task"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+	xmlns:cache="http://www.springframework.org/schema/cache" xmlns:util="http://www.springframework.org/schema/util"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd   
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
+	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
+	http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd
+	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
+	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
+	http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.1.xsd">
+
+	<context:property-placeholder location="classpath*:*.properties" />
+	<!-- 注册spring上下文对象 -->
+	<bean class="com.uas.report.support.ApplicationContextRegister" />
+
+	<!-- 扫描注解 -->
+	<context:annotation-config />
+	<!-- 扫描的包 -->
+	<context:component-scan base-package="com.uas.report" />
+
+	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
+		destroy-method="close">
+		<property name="driverClassName" value="${jdbc.driverClassName}" />
+		<property name="url" value="${jdbc.url}" />
+		<property name="username" value="${jdbc.username}" />
+		<property name="password" value="${jdbc.password}" />
+		<property name="initialSize" value="${jdbc.initialSize}" />
+		<property name="maxActive" value="${jdbc.maxActive}" />
+		<property name="maxIdle" value="${jdbc.maxIdle}" />
+		<property name="minIdle" value="${jdbc.minIdle}" />
+		<property name="removeAbandoned" value="true" />
+		<property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
+		<property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
+	</bean>
+
+</beans>

+ 11 - 0
src/main/resources/jdbc.properties

@@ -0,0 +1,11 @@
+jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
+jdbc.url=jdbc:oracle:thin:@192.168.253.6:1521:orcl
+jdbc.username=UAS
+jdbc.password=select!#%*(
+jdbc.initialSize=10
+jdbc.maxActive=100
+jdbc.maxIdle=50
+jdbc.minIdle=20
+jdbc.suspectTimeout=60
+jdbc.timeBetweenEvictionRunsMillis=30000
+jdbc.minEvictableIdleTimeMillis=60000

+ 5 - 0
src/main/resources/log4j.properties

@@ -0,0 +1,5 @@
+log4j.rootLogger=ERROR, stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d %5p %c:%L - %m%n

+ 23 - 0
src/main/webapp/WEB-INF/log4j.properties

@@ -0,0 +1,23 @@
+# For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
+# For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
+log4j.rootLogger=ERROR, stdout, logfile
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d %p [%c]:%m%n
+
+log4j.appender.logfile=org.apache.log4j.RollingFileAppender
+log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
+log4j.appender.logfile.File=../log4j.log
+# Keep three backup files.
+log4j.appender.logfile.MaxBackupIndex=3
+log4j.appender.logfile.MaxFileSize=5120KB
+# Pattern to output: date priority [category] - message
+log4j.appender.logfile.layout.ConversionPattern=%d %p [%c]:%m%n
+#log4j.logger.org.springframework.samples.petclinic.aspects=DEBUG
+
+log4j.logger.com.uas = error
+#=========================================
+#=   spring framewokr log configuration  =
+#=========================================
+log4j.logger.org.springframework = 

+ 5 - 0
src/main/webapp/WEB-INF/views/index.html

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>你好Hello World!</h2>
+</body>
+</html>

+ 86 - 0
src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,86 @@
+<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	version="3.0"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_0.xsd">
+
+	<display-name>report</display-name>
+	<description>Print the reports</description>
+
+	<context-param>
+		<param-name>webAppRootKey</param-name>
+		<param-value>spring.webapp.dfs</param-value>
+	</context-param>
+	<context-param>
+		<param-name>spring.profiles.active</param-name>
+		<param-value>production</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jConfigLocation</param-name>
+		<param-value>/WEB-INF/log4j.properties</param-value>
+	</context-param>
+	<context-param>
+		<param-name>log4jRefreshInterval</param-name>
+		<param-value>60000</param-value>
+	</context-param>
+	<context-param>
+		<param-name>contextConfigLocation</param-name>
+		<param-value>classpath*:applicationContext.xml</param-value>
+	</context-param>
+
+	<!-- filters -->
+	<filter>
+		<filter-name>CharacterEncodingFilter</filter-name>
+		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
+		<async-supported>true</async-supported>
+		<init-param>
+			<param-name>encoding</param-name>
+			<param-value>UTF-8</param-value>
+		</init-param>
+		<init-param>
+			<param-name>forceEncoding</param-name>
+			<param-value>true</param-value>
+		</init-param>
+	</filter>
+	<filter-mapping>
+		<filter-name>CharacterEncodingFilter</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+
+	<filter>
+		<filter-name>HttpMethodFilter</filter-name>
+		<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>HttpMethodFilter</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+
+	<!-- Handles Spring requests -->
+	<servlet>
+		<servlet-name>spring-mvc-dispatcher</servlet-name>
+		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+		<init-param>
+			<param-name>contextConfigLocation</param-name>
+			<param-value>/WEB-INF/webmvc.xml</param-value>
+		</init-param>
+		<load-on-startup>1</load-on-startup>
+		<async-supported>true</async-supported>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>spring-mvc-dispatcher</servlet-name>
+		<url-pattern>/</url-pattern>
+	</servlet-mapping>
+
+	<!-- Creates the Spring Container shared by all Servlets and Filters -->
+	<listener>
+		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+	</listener>
+	<listener>
+		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
+	</listener>
+	<!-- Spring localization -->
+	<listener>
+		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
+	</listener>
+
+</web-app>

+ 32 - 0
src/main/webapp/WEB-INF/webmvc.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+
+	<mvc:annotation-driven>
+		<!-- 解决Controller返回String时中文乱码的问题 -->
+		<mvc:message-converters>
+			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
+				<!-- 不可为text/plain -->
+				<property name="supportedMediaTypes" value="text/html;charset=UTF-8" />
+			</bean>
+		</mvc:message-converters>
+	</mvc:annotation-driven>
+
+	<mvc:default-servlet-handler />
+
+	<mvc:resources mapping="/static/**" location="/resources/" />
+
+	<context:component-scan base-package="com.uas.report" />
+
+	<bean
+		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+		<property name="prefix" value="/WEB-INF/views/" />
+		<property name="suffix" value=".html" />
+		<property name="contentType" value="text/html;charset=UTF-8" />
+	</bean>
+
+	<mvc:view-controller path="/" view-name="index" />
+
+</beans>

+ 39 - 0
target/classes/applicationContext.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:context="http://www.springframework.org/schema/context"
+	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:task="http://www.springframework.org/schema/task"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+	xmlns:cache="http://www.springframework.org/schema/cache" xmlns:util="http://www.springframework.org/schema/util"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd   
+	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
+	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
+	http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd
+	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
+	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
+	http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.1.xsd">
+
+	<context:property-placeholder location="classpath*:*.properties" />
+	<!-- 注册spring上下文对象 -->
+	<bean class="com.uas.report.support.ApplicationContextRegister" />
+
+	<!-- 扫描注解 -->
+	<context:annotation-config />
+	<!-- 扫描的包 -->
+	<context:component-scan base-package="com.uas.report" />
+
+	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
+		destroy-method="close">
+		<property name="driverClassName" value="${jdbc.driverClassName}" />
+		<property name="url" value="${jdbc.url}" />
+		<property name="username" value="${jdbc.username}" />
+		<property name="password" value="${jdbc.password}" />
+		<property name="initialSize" value="${jdbc.initialSize}" />
+		<property name="maxActive" value="${jdbc.maxActive}" />
+		<property name="maxIdle" value="${jdbc.maxIdle}" />
+		<property name="minIdle" value="${jdbc.minIdle}" />
+		<property name="removeAbandoned" value="true" />
+		<property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
+		<property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
+	</bean>
+
+</beans>

BIN
target/classes/com/uas/report/controller/PrintController.class


BIN
target/classes/com/uas/report/service/PrintService.class


BIN
target/classes/com/uas/report/service/impl/PrintServiceImpl.class


BIN
target/classes/com/uas/report/support/ApplicationContextRegister.class


BIN
target/classes/com/uas/report/util/ContextUtils.class


BIN
target/classes/com/uas/report/util/PathUtils.class


BIN
target/classes/com/uas/report/util/ReportConstants.class


+ 11 - 0
target/classes/jdbc.properties

@@ -0,0 +1,11 @@
+jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
+jdbc.url=jdbc:oracle:thin:@192.168.253.6:1521:orcl
+jdbc.username=UAS
+jdbc.password=select!#%*(
+jdbc.initialSize=10
+jdbc.maxActive=100
+jdbc.maxIdle=50
+jdbc.minIdle=20
+jdbc.suspectTimeout=60
+jdbc.timeBetweenEvictionRunsMillis=30000
+jdbc.minEvictableIdleTimeMillis=60000

+ 5 - 0
target/classes/log4j.properties

@@ -0,0 +1,5 @@
+log4j.rootLogger=ERROR, stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d %5p %c:%L - %m%n

+ 5 - 0
target/m2e-wtp/web-resources/META-INF/MANIFEST.MF

@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Built-By: sunyj-pc
+Build-Jdk: 1.8.0_66
+Created-By: Maven Integration for Eclipse
+

+ 7 - 0
target/m2e-wtp/web-resources/META-INF/maven/com.uas.report/report/pom.properties

@@ -0,0 +1,7 @@
+#Generated by Maven Integration for Eclipse
+#Thu Aug 18 17:37:41 CST 2016
+version=0.0.1-SNAPSHOT
+groupId=com.uas.report
+m2e.projectName=report
+m2e.projectLocation=C\:\\sunyj\\project\\workspace\\report
+artifactId=report

+ 95 - 0
target/m2e-wtp/web-resources/META-INF/maven/com.uas.report/report/pom.xml

@@ -0,0 +1,95 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.uas.report</groupId>
+	<artifactId>report</artifactId>
+	<packaging>war</packaging>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>report Maven Webapp</name>
+	<url>http://maven.apache.org</url>
+
+	<properties>
+		<oracle.jdbc.version>11.2.0</oracle.jdbc.version>
+		<spring.version>4.1.6.RELEASE</spring.version>
+		<log4j.version>1.2.16</log4j.version>
+		<servlet.version>3.0-alpha-1</servlet.version>
+		<commons.dbcp.version>1.4</commons.dbcp.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>${servlet.version}</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>commons-dbcp</groupId>
+			<artifactId>commons-dbcp</artifactId>
+			<version>${commons.dbcp.version}</version>
+		</dependency>
+
+		<!-- log4j -->
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>${log4j.version}</version>
+		</dependency>
+
+		<!-- spring-webmvc -->
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-webmvc</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.oracle</groupId>
+			<artifactId>ojdbc6</artifactId>
+			<version>${oracle.jdbc.version}</version>
+		</dependency>
+
+		<!-- 打印报表 -->
+		<dependency>
+			<groupId>net.sf.jasperreports</groupId>
+			<artifactId>jasperreports</artifactId>
+			<version>6.3.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.codehaus.groovy</groupId>
+			<artifactId>groovy-all</artifactId>
+			<version>2.4.7</version>
+		</dependency>
+
+		<!-- 自制中文字体 - 微软雅黑 -->
+		<dependency>
+			<groupId>com.uas.report</groupId>
+			<artifactId>msyahei</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<finalName>report</finalName>
+		<!-- 解决maven项目jre版本默认为1.5的问题 -->
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 5 - 0
target/maven-archiver/pom.properties

@@ -0,0 +1,5 @@
+#Generated by Maven
+#Tue Aug 16 17:12:32 CST 2016
+version=0.0.1-SNAPSHOT
+groupId=com.uas.report
+artifactId=report

+ 0 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst


BIN
target/report.war


+ 7 - 0
target/report/WEB-INF/web.xml

@@ -0,0 +1,7 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+</web-app>

+ 5 - 0
target/report/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>