调用applet的html页面<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>打印窗口</title>
</head>
<script language="javascript">
<!--
function openApp()
{
var url = "http://localhost:8080/BsIreport/TEST/JRPrintServlet";
document.write('<APPLET ID="JrPrt" CODE = "JRPrinterApplet.class" CODEBASE = "./TEST" ARCHIVE = "jasperreports-3.5.3-applet.jar" WIDTH = "100%" HEIGHT = "100%">');
document.write('<PARAM NAME = "type" VALUE="application/x-java-applet;version=1.2.2">');
document.write('<PARAM NAME = "scriptable" VALUE="false">');
document.write('<PARAM NAME = "REPORT_URL" VALUE ="'+url+'">');
document.write('</APPLET>');
}-->
</script>
<body bgcolor="#FFFFFF">
<input type="button" value="测试打印" onclick="openApp();"></body>
</html>Appletpublic class JRPrinterApplet extends Applet {// @Override
// public void paint(Graphics g) {
// g.drawString("Hello World",50,50);
// }
private URL url = null;
/**
* Initialization method that will be called after the applet is loaded
* into the browser.
*/
@Override
public void init() {
super.init();
String strUrl = getParameter("REPORT_URL");
if(strUrl!=null){
try{
//JOptionPane.showMessageDialog(this,getCodeBase().toString());
url = new URL(getCodeBase(),strUrl);//从获得html参数中获得报表URL
// JOptionPane.showMessageDialog(this,url.toString());
}catch(Exception e){
e.printStackTrace();
}
}else
JOptionPane.showMessageDialog(this, "Source URL not specified");
// TODO start asynchronous download of heavy resources
} @Override
public void start(){
if(url!=null){
try{
JOptionPane.showMessageDialog(this,url.toString());
Object obj = JRLoader.loadObject(url);//发送对象请求,获得JasperPrint对象
JOptionPane.showMessageDialog(this,url.toString());
//JasperPrint jprint = (JasperPrint) JRLoader.loadObject(url);
JasperViewer.viewReport((JasperPrint)obj, true);
//JasperPrintManager.printReport((JasperPrint)obj, true);//调用方法打印所获得的JasperPrint对象
}catch(Exception e){
e.printStackTrace();
}
// TODO overwrite start(), stop() and destroy() methods
}
}
}servlet
public class JRPrintServlet extends HttpServlet {
private static final long serialVersionUID = 348226870594216833L; @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
{
try
{
//生成测试数据var url = "http://10.168.0.178:8080/BsIreport/TEST/JRPrinterApplet";
String repFilePath="E:\\IReport\\BsIreport\\build\\web\\TEST\\BS.jasper";
Map Param=new HashMap();
File file=new File(repFilePath);
//JasperReport jasperReport=(JasperReport)JRLoader.loadObject(JasperCompileManager.compileReportToFile(repFilePath));
JasperReport jasperReport=(JasperReport)JRLoader.loadObject(repFilePath);
JRDataSource dataSource=new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(DeptBeanFactory.getBeanCollection());
JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport, Param,dataSource); //设定输出格式
resp.setContentType("application/octet-stream");
ServletOutputStream out = resp.getOutputStream();
ObjectOutputStream os = new ObjectOutputStream(out);
os.writeObject(jasperPrint);
os.flush();
os.close();
out.flush();
out.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
Object obj = JRLoader.loadObject(url);//发送对象请求,获得JasperPrint对象
运行的时候一直卡在这一步。是不是我的URL 传递错误?这里的URL到底是一个什么路径
我这里的这里的url 就是这个 http://localhost:8080/BsIreport/TEST/JRPrintServletBsIreport 为工程目录
TEST 是编译后产生的class文件
JRPrintServlet为servlet类web/test/JRPrintServlet.class
web/test/JRPrinterApplet.class
web/JRPrintTest.html用的是jboss服务 工具是NetBeans6.5 jasperreports-3.5.0.jar
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>打印窗口</title>
</head>
<script language="javascript">
<!--
function openApp()
{
var url = "http://localhost:8080/BsIreport/TEST/JRPrintServlet";
document.write('<APPLET ID="JrPrt" CODE = "JRPrinterApplet.class" CODEBASE = "./TEST" ARCHIVE = "jasperreports-3.5.3-applet.jar" WIDTH = "100%" HEIGHT = "100%">');
document.write('<PARAM NAME = "type" VALUE="application/x-java-applet;version=1.2.2">');
document.write('<PARAM NAME = "scriptable" VALUE="false">');
document.write('<PARAM NAME = "REPORT_URL" VALUE ="'+url+'">');
document.write('</APPLET>');
}-->
</script>
<body bgcolor="#FFFFFF">
<input type="button" value="测试打印" onclick="openApp();"></body>
</html>Appletpublic class JRPrinterApplet extends Applet {// @Override
// public void paint(Graphics g) {
// g.drawString("Hello World",50,50);
// }
private URL url = null;
/**
* Initialization method that will be called after the applet is loaded
* into the browser.
*/
@Override
public void init() {
super.init();
String strUrl = getParameter("REPORT_URL");
if(strUrl!=null){
try{
//JOptionPane.showMessageDialog(this,getCodeBase().toString());
url = new URL(getCodeBase(),strUrl);//从获得html参数中获得报表URL
// JOptionPane.showMessageDialog(this,url.toString());
}catch(Exception e){
e.printStackTrace();
}
}else
JOptionPane.showMessageDialog(this, "Source URL not specified");
// TODO start asynchronous download of heavy resources
} @Override
public void start(){
if(url!=null){
try{
JOptionPane.showMessageDialog(this,url.toString());
Object obj = JRLoader.loadObject(url);//发送对象请求,获得JasperPrint对象
JOptionPane.showMessageDialog(this,url.toString());
//JasperPrint jprint = (JasperPrint) JRLoader.loadObject(url);
JasperViewer.viewReport((JasperPrint)obj, true);
//JasperPrintManager.printReport((JasperPrint)obj, true);//调用方法打印所获得的JasperPrint对象
}catch(Exception e){
e.printStackTrace();
}
// TODO overwrite start(), stop() and destroy() methods
}
}
}servlet
public class JRPrintServlet extends HttpServlet {
private static final long serialVersionUID = 348226870594216833L; @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
{
try
{
//生成测试数据var url = "http://10.168.0.178:8080/BsIreport/TEST/JRPrinterApplet";
String repFilePath="E:\\IReport\\BsIreport\\build\\web\\TEST\\BS.jasper";
Map Param=new HashMap();
File file=new File(repFilePath);
//JasperReport jasperReport=(JasperReport)JRLoader.loadObject(JasperCompileManager.compileReportToFile(repFilePath));
JasperReport jasperReport=(JasperReport)JRLoader.loadObject(repFilePath);
JRDataSource dataSource=new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(DeptBeanFactory.getBeanCollection());
JasperPrint jasperPrint=JasperFillManager.fillReport(jasperReport, Param,dataSource); //设定输出格式
resp.setContentType("application/octet-stream");
ServletOutputStream out = resp.getOutputStream();
ObjectOutputStream os = new ObjectOutputStream(out);
os.writeObject(jasperPrint);
os.flush();
os.close();
out.flush();
out.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
Object obj = JRLoader.loadObject(url);//发送对象请求,获得JasperPrint对象
运行的时候一直卡在这一步。是不是我的URL 传递错误?这里的URL到底是一个什么路径
我这里的这里的url 就是这个 http://localhost:8080/BsIreport/TEST/JRPrintServletBsIreport 为工程目录
TEST 是编译后产生的class文件
JRPrintServlet为servlet类web/test/JRPrintServlet.class
web/test/JRPrinterApplet.class
web/JRPrintTest.html用的是jboss服务 工具是NetBeans6.5 jasperreports-3.5.0.jar
解决方案 »
- 繁体乱码问题,急!!!
- 页面删掉后,但还是跳到旧页面上去,重启weblogic,重新部署都不行
- 关于ajax + jsp 的一个问题(在线等候)请各位高手帮帮忙~!
- JSP的环境配置一问题!
- 一个jsp页面发送请求到下一个页面后,怎么在接受请求的页面里取得发送请求的页面的action内容
- 关于在Tomcat5.5和JDK1.5下的struts
- 试卷提交后不能正确提交到指定的数据表中~~~~毕业设计中…………急………………
- 请问如何将session的内容赋值给一个变量??
- WEB服务器和应用服务器以及中间件服务器之间的区别和联系?
- 初识JSP,请问配置机子上的jsp运行环境:j2sdk1.4 + tomcat4.1 怎么办????
- 菜鸟的字符串问题
- frameset 问题?
JAVA主控台的提示Exception in thread "thread applet-JRPrinterApplet.class-1" java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/util/JRLoader
at JRPrinterApplet.start(JRPrinterApplet.java:57)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: net.sf.jasperreports.engine.util.JRLoader
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 3 more
Caused by: java.io.IOException: open HTTP connection failed:http://localhost:8080/BsIreport/TEST/net/sf/jasperreports/engine/util/JRLoader.class
at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
... 7 more
楼主的问题主要是因为没有引入相关的JAR包原因,有一个jasperreports-3.0.0.jar文件(版本会有所不同后面的版本号也会不同),将APPLET所用到的类文件全部打包到这个JAR文件中,在页面引用APPLET时引用此JAR文件即解决问题。
可能说的不详细,时间仓促就这样吧。