0 0

applet获取ObjectInputStream传过来的jasperPrint对象不成功,但是没报错。请教。5

 

servlet代码:

 

public class PrintTicketServlet extends HttpServlet { private static final long serialVersionUID = 63685217401879285L; Logger logger = LoggerFactory.getLogger(PrintTicketServlet.class); public PrintTicketServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ObjectInputStream ois = null; ObjectOutputStream oos = null; try { //通过输入流获取请求参数 ois = new ObjectInputStream(request.getInputStream()); Map<String, String> params = (Map<String, String>) ois.readObject(); String strInfo = params.get("ticketInfo"); String strDetailList = params.get("details"); //将JSON格式的请求参数转化成实体类 JSONObject jInfo = JSONObject.fromObject(strInfo); JSONObject jObject = JSONObject.fromObject(strDetailList); JSONArray jDetails = jObject.getJSONObject("list").getJSONArray("source"); TicketInfo ticketInfo = (TicketInfo) JSONObject.toBean(jInfo, TicketInfo.class); List<TicketDetail> details = JSONArray.toList(jDetails, TicketDetail.class); this.setDetails(ticketInfo,details); ticketInfo.setDetails(details); //调用service获取JasperPrint对象 JasperPrint jasperPrint = new TaxInfoServiceImpl().getJasperPrint(new TicketInfo()); if (jasperPrint == null) { logger.error("生成jasperPrint对象为空"); } //通过输出流返回JasperPrint对象 response.setContentType("application/octet-stream"); oos = new ObjectOutputStream(response.getOutputStream()); oos.writeObject(jasperPrint); oos.flush(); } catch (Exception e) { logger.error(e.toString()); } finally { if (ois != null) { ois.close(); } if (oos != null) { oos.close(); } } } }



applet代码:

public class PrintTicketApplet extends JApplet {

private static final long serialVersionUID = 871447586454123188L;
private static final String ADDRESS = "PrintTicketServlet";

public boolean printTicket(String ticketInfoJson, String ticketDetailJson) throws Exception {
URL url = null;
HttpURLConnection conn = null;
ObjectInputStream ois = null;
ObjectOutputStream oos = null;
JasperPrint jasperPrint = null;
boolean success = false;
try {
//连接Servlet
url = new URL(getCodeBase(), ADDRESS);
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-type", "application/octet-stream");

//组装参数并发送请求到Servlet
Map<String, String> params = new HashMap<String, String>();
params.put("ticketInfo", ticketInfoJson);
params.put("details", ticketDetailJson);
oos = new ObjectOutputStream(conn.getOutputStream());
oos.writeObject(params);
oos.flush();

//获取返回的JasperPrint对象
ois = new ObjectInputStream(conn.getInputStream());
JOptionPane.showMessageDialog(this, "1、获取到输入流对象:" + ois);
jasperPrint = (JasperPrint) ois.readObject();
//applet运行到这个地方就不再继续下去了,是什么原因。readObject不成功。但是在eclipse中 run as Applet是成功的。而在浏览器上运行就不能继续执行了。
JOptionPane.showMessageDialog(this, "2、获取到jasperPrint对象:" + jasperPrint);

//打印JasperPrint对象
success = JasperPrintManager.printReport(jasperPrint, true);
JOptionPane.showMessageDialog(this, "3、成功打印:" + success);


} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this, e.toString());
} finally {
if (ois != null) {
ois.close();
}
if (oos != null) {
oos.close();
}
if (jasperPrint != null) {
jasperPrint = null;
}
}
return success;
}
2012年5月17日 12:11
  • 大小: 303.4 KB
目前还没有答案

相关推荐

    JAVA获取客户端MAC,web获取客户端MAC,Applet获取客户端MAC

    小弟,无奈写了一个客户端的Applet来获取客户端MAC然后再在传给服务器端;JS方法虽然也可行,但是手浏览器限制,还其他因素,不知道高手有何建议或者例子,可以建议;但目前这个可以实现服务器端获取客户端的MAC;...

    applet获取mac

    但是,由于安全限制,直接使用此方法在Applet中可能无法成功。 4. **JavaScript-Java桥接**:由于Applet的限制,开发者可能需要通过Java Applet与JavaScript之间的通信(JSObject或LiveConnect)来获取MAC地址。...

    Applet读MAC地址示例

    在Java中,由于安全限制,Applet在用户沙箱中运行,不能直接访问系统资源,包括MAC地址。但是,可以通过一些技巧来绕过这些限制,实现读取MAC地址的功能。 首先,我们需要创建一个Applet类,继承自`java.applet....

    关于 js 和 applet 相互调用的例子

    在JavaScript中,我们可以通过`document.applets`对象来访问已加载的Applet实例。而在Applet中,可以使用`getScriptEngine()`方法获取JavaScript引擎,从而调用JS函数。 让我们深入到例子中,假设我们有一个名为...

    0002_Applet理解_demo

    - Applet向服务器发起请求以获取报告数据。 - 服务器通过`TestServlet`处理请求,并将报告数据(`JasperPrint`对象)发送回客户端。 - 客户端的Applet解析并显示报告。 通过上述示例可以看出,Applet不仅可以...

    jasperreport+applet客户端打印demo

    这一步通常在服务器端完成,生成的报表通常以JasperPrint对象的形式存在。 2. **转换为适合打印的格式**: JasperReport支持多种输出格式,如PDF、HTML、Excel等。通常会选择PDF,因为它能更好地保留原始设计的样式...

    Applet

    Java Applet是Java技术在早期为了实现网页动态交互而提出的一种技术。Applet是一段用Java语言编写的代码,能够在用户的浏览器环境下运行,为用户提供动态的、交互式的Web内容。与传统的Java Application不同,Applet...

    java的applet实例

    - 绘画:`paint(Graphics g)`方法用于绘制Applet的内容,这里的`Graphics`对象用于图形渲染。 - 开始与停止:`start()`在Applet可见时调用,恢复其活动状态;`stop()`在Applet不再可见时调用,暂停其活动。 - ...

    Applet示例

    4. **Applet与浏览器的通信**:Applet可以通过`AppletContext`对象与浏览器进行交互,如打开链接、播放声音或获取URL数据。此外,`Applet`类还提供了一些内置方法,如`getDocumentBase()`和`getCodeBase()`,用于...

    java applet程序案例

    7. **Applet与AppletContext**:Applet有一个`AppletContext`对象,它提供了与浏览器和其他Applet通信的能力,如播放声音、获取URL信息等。 8. **替代技术**:随着Web技术的发展,Applet逐渐被其他技术取代,如...

    js与applet的相互调用资源包

    4. **Applet调用JavaScript**:在Applet中使用`getAppletContext().getJavaScriptObject()`获取JavaScript对象,然后调用方法。 ```java import java.applet.Applet; import netscape.javascript.JSObject; public...

    applet与servlet通讯

    由于浏览器的安全模型,Applet 在与服务器通信时受到一些限制,比如不能直接访问本地文件系统,这限制了它们获取和存储用户数据的能力。此外,跨域安全策略阻止 Applet 直接与不同域名的服务器通信。 **通信策略** ...

    javaApplet习题.pdf

    * Applet 可以使用线程,但是不能使用 daemon 线程。 三、Applet 的图形用户界面 * Applet 可以使用 java.awt 包中的组件来实现图形用户界面。 * Applet 可以使用 paint() 方法绘制图形。 * Applet 可以使用 ...

    JavaApplet与JavaScript

    - **`getParameter(String)`** - 获取 `&lt;applet&gt;` 标签中定义的参数值。 - **`getCodeBase()`** - 返回 `.class` 文件的 URL 地址。 - **`getDocumentBase()`** - 返回 HTML 文档的 URL。 - **`getAppInfo()`** - ...

    Applet与Servlet之间的通信与交互

    在Java编程领域,Applet和Servlet是两种不同的技术,它们分别在Web应用的不同层面发挥作用。Applet是嵌入在HTML页面中的小型Java程序,能够提供客户端的交互功能,而Servlet则是运行在服务器端的Java程序,负责处理...

    在Java Applet中实现动画.rar_applet_java Applet

    Java Applet是Java技术在Web浏览器中运行的一种小程序,它为网页添加了交互性和动态性。本教程将探讨如何在Java Applet中实现动画效果,让网页内容更加生动有趣。 首先,理解动画的基本原理至关重要。动画是通过...

    Applet应用参数说明

    4. `destroy()`方法:与对象的`finalize()`方法不同,`destroy()`方法在浏览器关闭时自动执行,回收Applet占用的非内存资源。如果浏览器在Applet运行时关闭,系统会先调用`stop()`,然后调用`destroy()`。 接下来,...

    Applet小游戏 Applet小游戏 Applet小游戏

    Applet是Java类的子类,通常是`java.applet.Applet`或其子类,如`javax.swing.JApplet`。它们通过`&lt;applet&gt;`标签或者`&lt;object&gt;`标签在HTML页面中被引用,从而在客户端(用户的浏览器)中执行。Applet的生命週期包括...

    一个Applet小例子

    这个“一个Applet小例子”是一个专门用于展示股市实时行情变动的应用,用户可以在浏览器中直接运行,无需下载安装,极大地提高了信息获取的便捷性。 在Java中,Applet的生命周期包括初始化、启动、绘画、更新和终止...

Global site tag (gtag.js) - Google Analytics