Ireportクライアント印刷
10421 ワード
Ireportクライアント印刷
1.Webプロジェクトの新規作成図:
2.ireportレポートに必要なパッケージjasperreports-4.0をlibにインポートする.2.jar, jasperreports-applet-4.0.2.jar, commons-collections-2.1.jar, commons-logging-1.0.2.jar, groovy-all-1.7.5.jar, iText-2.1.7.jar, iTextAsian.JAr(これらのテーブルには個別のパケットが必要ではない場合があります).図のように:
3.WebRootにireportというディレクトリを新規作成し、印刷されたireportレポートを保存します.ここはユーザーのレポートです.図:
4.srcにappletというディレクトリを新規作成し、appletにIreportServiceletというディレクトリを新規作成する.JAvaのservlet.コードは次のとおりです.
5.web.xmlでコードを構成し、次のコードを追加します.
プロジェクトを開始し、Webページに入力http://localhost:8080/Outireport/ireportServlet
ダウンロードしたウィンドウがポップアップされたら、このservletがOKになったことを証明します.
6.次に、src/appletディレクトリの下にprinterAppletという名前のappletを書きます.JAvaのapplet.コードは次のとおりです.
右クリックprinterApplet.JAva、「Run as Java Applet」を選択し、印刷ダイアログボックスをポップアップし、確認後、プリンタが正常に印刷され、appletの作成に成功したことを証明します.
7. index.jspのコードは以下の通りです.
WebRootディレクトリの下にappletディレクトリを新規作成し、jasperreports-4.0を作成します.2.jar, jasperreports-applet-4.0.2.jar,commons-logging-1.0.2.jar, commons-collections-2.1.jarこのいくつかのバッグを一つ入れてください.
後でsrc/appletディレクトリのprinterAppletを変更します.java
その後、プロジェクトを再実行しprinterApplet.JAva生成printerApplet.classファイルをWebRoot/appletディレクトリにコピーします.WebRoot/appletディレクトリのファイルは次のとおりです.
8.最後にappletに署名証明書を追加します.
そのディスクにディレクトリaaを新規作成し、jasperreports-applet-4.0を作成します.2.jarはこのディレクトリに解凍し、jasperreports-applet-4.0.2.jarパッケージには3つのファイルMETA-INF、net、defaultがあります.jasperreports.properties(すべてある必要があります.そうしないとエラーが報告されます).printerApplet.javaで生成されたprinterApplet.classファイルをこのディレクトリの下にコピーします.printのディレクトリは次のとおりです.
次に署名、システム-実行-cmdを入力します.
cd+jdkが存在するディレクトリを入力bin
jar cvfmで生成するパケット名.JAr mymanifest+printのパス
例:私が呼んだパッケージ名:print,aaのパスは:D:aa,入力コマンドはjar cvfm print.jar mymanifest D:\aa\
jdkのbinのディレクトリの下にprintが生成されます.jarのパッケージ.
keytoolで証明書を生成する:keytool-genkey-alias printkey-keystore printstore(printkeyは自分の名前で命名できます)keytoolで証明書をエクスポートする:keytool-export-keystore printstore-alias printkey-file print.cer(print.cer証明書の名前は、独自の名前でも使用できます)jarsignerでreportprint.jarにデジタル署名を付けます.jarsigner-keystore printstore appletPrint.jar printkey以上はコマンドプロンプトで実行され、printkeyとprintstoreは独自の名前で名前を付けることができます.jdkのbinのディレクトリの下にprint.jarとprintstoreがあります.一つ.cer、この2つのファイルをプロジェクトにコピーして、同じディレクトリの下に置いて、WebRoot/appletディレクトリの下に置いたことを覚えています.図:
完了します.Outereportプロジェクトを実行して結果を見てみましょう.Javaコンソールで「ClassNotFoundException」というメッセージが表示された場合、appletパッケージパスが設定されていないことを証明します.JasperReportクラスがパッケージ化されているかどうかを確認し、jspページでreportprinを呼び出す.JArが正しいかどうか.ポップアップ・ダイアログ・ボックス:アプリケーションのデジタル署名が検証できない場合、アプリケーションを実行しますか?デジタル署名が使用可能であることを証明します.
最後に、印刷ダイアログがポップアップされたら、OKをクリックして指示プログラムが正常に印刷されました.
添付:applet署名証明書を使用したくない場合.applet権限の無限アップグレード方法として使用できます.
具体的にはhttp://aspnetdbを参照してください.iteye.com/blog/648370この兄台の、私も彼のものを使っています.
プロジェクトのWebRootディレクトリの下にあるindex.jspコードでは
運転後も同様の目的を達成できます.
1.Webプロジェクトの新規作成図:
2.ireportレポートに必要なパッケージjasperreports-4.0をlibにインポートする.2.jar, jasperreports-applet-4.0.2.jar, commons-collections-2.1.jar, commons-logging-1.0.2.jar, groovy-all-1.7.5.jar, iText-2.1.7.jar, iTextAsian.JAr(これらのテーブルには個別のパケットが必要ではない場合があります).図のように:
3.WebRootにireportというディレクトリを新規作成し、印刷されたireportレポートを保存します.ここはユーザーのレポートです.図:
4.srcにappletというディレクトリを新規作成し、appletにIreportServiceletというディレクトリを新規作成する.JAvaのservlet.コードは次のとおりです.
package applet;
import java.io.File;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
public class IreportServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List list=new ArrayList();
try{
Users users=null;
for(int i=0;i<2;i++)
{
users=new Users();
users.setUserName("yzp"+i);
users.setSex(""+i);
users.setPhone("13410479904");
users.setPhone("19890214");
list.add(users);
}
JRBeanCollectionDataSource jds =new JRBeanCollectionDataSource(list); // javabean
String url=this.getServletContext().getRealPath("/")+"/ireport/users.jasper";//
File reportFile = new File(url);
JasperReport report=(JasperReport) JRLoader.loadObject(reportFile.getPath());
JasperPrint jasperPrint=null;
jasperPrint= JasperFillManager.fillReport(report, null, jds);// jasperPrint,
response.setContentType("application/pdf");
ServletOutputStream ouputStream = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(ouputStream);
oos.writeObject(jasperPrint);// JasperPrint
oos.flush();
oos.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
5.web.xmlでコードを構成し、次のコードを追加します.
<servlet>
<servlet-name>ireportServlet</servlet-name>
<servlet-class>applet.IreportServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ireportServlet</servlet-name>
<url-pattern>/ireportServlet</url-pattern>
</servlet-mapping>
プロジェクトを開始し、Webページに入力http://localhost:8080/Outireport/ireportServlet
ダウンロードしたウィンドウがポップアップされたら、このservletがOKになったことを証明します.
6.次に、src/appletディレクトリの下にprinterAppletという名前のappletを書きます.JAvaのapplet.コードは次のとおりです.
package applet;
import java.applet.Applet;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.URL;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.util.JRLoader;
public class printerApplet extends Applet {
private static final long serialVersionUID = 1L;
private URL url=null;
/** Creates new form AppletViewer */
public printerApplet() {
}
public void init() {
String strUrl = "http://localhost:8080/Outireport/ireportServlet";
if (strUrl != null) {
try {
url = new URL("http://localhost:8080/Outireport/ireportServlet"); } catch (Exception e) {
StringWriter swriter = new StringWriter();
PrintWriter pwriter = new PrintWriter(swriter);
e.printStackTrace(pwriter);
JOptionPane.showMessageDialog(this, swriter.toString());
}
} else {
JOptionPane.showMessageDialog(this, "Source URL not specified");
}
}
public void start() {
if (url != null) {
try {
// url (url: servlet ) JasperPrint
JasperPrint obj = (JasperPrint)JRLoader.loadObject(url);// , JasperPrint
JasperPrintManager.printReport(obj, true);// JasperPrint
} catch (Exception e) {
e.printStackTrace();
}
} else {
JOptionPane.showMessageDialog(this,
"start():Source URL not specified");
}
}
}
右クリックprinterApplet.JAva、「Run as Java Applet」を選択し、印刷ダイアログボックスをポップアップし、確認後、プリンタが正常に印刷され、appletの作成に成功したことを証明します.
7. index.jspのコードは以下の通りです.
<%@ page language="java" import="java.util.*;" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ireport </title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript">
function openApp()
{
var url = "/Outireport/ireportServlet";
//COD: WebRoot applet.class ARCHIVE: WebRoot
document.write('<APPLET ID="JrPrt" CODE="applet/printerApplet.class" ARCHIVE = "applet/print.jar,applet/jasperreports-4.0.2.jar,applet/commons-logging-1.0.2.jar,applet/commons-collections-2.1.jar" WIDTH = "0" HEIGHT = "0">');
document.write('<PARAM NAME = "type" VALUE="application/x-java-applet;version=1.2.2">');
document.write('<PARAM NAME = "scriptable" VALUE="false">');
//REPORT_URL: servlet
document.write('<PARAM NAME = "REPORT_URL" VALUE ="'+url+'">');
document.write('<PARAM NAME = "SHOW_DIALOG" VALUE ="true">');
document.write('</APPLET>');
}
</script>
</head>
<body>
<input type="button" value=" " onclick="openApp();">
</body>
</html>
WebRootディレクトリの下にappletディレクトリを新規作成し、jasperreports-4.0を作成します.2.jar, jasperreports-applet-4.0.2.jar,commons-logging-1.0.2.jar, commons-collections-2.1.jarこのいくつかのバッグを一つ入れてください.
後でsrc/appletディレクトリのprinterAppletを変更します.java
String strUrl = "http://localhost:8080/Outireport/ireportServlet";
String strUrl =getParameter("REPORT_URL");
url = new URL("http://localhost:8080/Outireport/ireportServlet");
url = new URL(getCodeBase(),strUrl);
その後、プロジェクトを再実行しprinterApplet.JAva生成printerApplet.classファイルをWebRoot/appletディレクトリにコピーします.WebRoot/appletディレクトリのファイルは次のとおりです.
8.最後にappletに署名証明書を追加します.
そのディスクにディレクトリaaを新規作成し、jasperreports-applet-4.0を作成します.2.jarはこのディレクトリに解凍し、jasperreports-applet-4.0.2.jarパッケージには3つのファイルMETA-INF、net、defaultがあります.jasperreports.properties(すべてある必要があります.そうしないとエラーが報告されます).printerApplet.javaで生成されたprinterApplet.classファイルをこのディレクトリの下にコピーします.printのディレクトリは次のとおりです.
次に署名、システム-実行-cmdを入力します.
cd+jdkが存在するディレクトリを入力bin
jar cvfmで生成するパケット名.JAr mymanifest+printのパス
例:私が呼んだパッケージ名:print,aaのパスは:D:aa,入力コマンドはjar cvfm print.jar mymanifest D:\aa\
jdkのbinのディレクトリの下にprintが生成されます.jarのパッケージ.
keytoolで証明書を生成する:keytool-genkey-alias printkey-keystore printstore(printkeyは自分の名前で命名できます)keytoolで証明書をエクスポートする:keytool-export-keystore printstore-alias printkey-file print.cer(print.cer証明書の名前は、独自の名前でも使用できます)jarsignerでreportprint.jarにデジタル署名を付けます.jarsigner-keystore printstore appletPrint.jar printkey以上はコマンドプロンプトで実行され、printkeyとprintstoreは独自の名前で名前を付けることができます.jdkのbinのディレクトリの下にprint.jarとprintstoreがあります.一つ.cer、この2つのファイルをプロジェクトにコピーして、同じディレクトリの下に置いて、WebRoot/appletディレクトリの下に置いたことを覚えています.図:
完了します.Outereportプロジェクトを実行して結果を見てみましょう.Javaコンソールで「ClassNotFoundException」というメッセージが表示された場合、appletパッケージパスが設定されていないことを証明します.JasperReportクラスがパッケージ化されているかどうかを確認し、jspページでreportprinを呼び出す.JArが正しいかどうか.ポップアップ・ダイアログ・ボックス:アプリケーションのデジタル署名が検証できない場合、アプリケーションを実行しますか?デジタル署名が使用可能であることを証明します.
最後に、印刷ダイアログがポップアップされたら、OKをクリックして指示プログラムが正常に印刷されました.
添付:applet署名証明書を使用したくない場合.applet権限の無限アップグレード方法として使用できます.
具体的にはhttp://aspnetdbを参照してください.iteye.com/blog/648370この兄台の、私も彼のものを使っています.
プロジェクトのWebRootディレクトリの下にあるindex.jspコードでは
<input type="button" value=" " onclick="openApp();">
<applet codebase="bin" code="applet.AllPermisionApplet.class"
archive="WebInterfaceDemo.jar" name="AllPermisionApplet" width="0"
height="0" mayscript></applet>
<input type="button" value=" " onclick="openApp();">
運転後も同様の目的を達成できます.