<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ page import="java.io.*,java.sql.*,net.sf.jasperreports.engine.*" %>
<%@ page import="com.microsoft.sqlserver.jdbc.SQLServerDriver" %>
<%@ include file="/common/header.jsp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>报表打印</title>
<link rel="stylesheet" type="text/css" href="<s:property value="%{default_css}"/>" />
</head>
<body id="Body">
<%
String reportName = request.getParameter("reportName");
//报表编译之后的.jasper文件的存放位置
File reportFile = new File(application.getRealPath("/report/resource/jasper/"+reportName+".jasper"));
String url = "jdbc:sqlserver://liubin:1433;DatabaseName=db_forest_police";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
//传递报表中用到的参数值,这里是空值
Map parameters = new HashMap();
System.out.println("-----------conn---------");
//连接到数据库
Connection conn = DriverManager.getConnection(url,"sa","time0442");
System.out.println("----------jasper begin-----------");
//在控制台打印报表文件的物理路径
System.out.println("****物理路径 ***"+reportFile.getPath());
byte[]bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,conn);
System.out.println("---------jasper end-------");
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
//清除输出对象的冲突(因jsp本身有自己的out输出对象,如果去除下面的语句,则response.getOutputStream()得到的输出对象与原来存在的out对象冲突,会报异常)
out.clear();out=pageContext.pushBody();
ServletOutputStream output = response.getOutputStream();
output.write(bytes,0,bytes.length);
output.flush();
output.close();
try{
if(conn!=null){
conn.close();
}
}catch(Exception e){
e.printStackTrace();
}
%>
</body>
</html>