-
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 {//连接Servleturl = 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");//组装参数并发送请求到ServletMap<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
目前还没有答案
相关推荐
小弟,无奈写了一个客户端的Applet来获取客户端MAC然后再在传给服务器端;JS方法虽然也可行,但是手浏览器限制,还其他因素,不知道高手有何建议或者例子,可以建议;但目前这个可以实现服务器端获取客户端的MAC;...
但是,由于安全限制,直接使用此方法在Applet中可能无法成功。 4. **JavaScript-Java桥接**:由于Applet的限制,开发者可能需要通过Java Applet与JavaScript之间的通信(JSObject或LiveConnect)来获取MAC地址。...
在Java中,由于安全限制,Applet在用户沙箱中运行,不能直接访问系统资源,包括MAC地址。但是,可以通过一些技巧来绕过这些限制,实现读取MAC地址的功能。 首先,我们需要创建一个Applet类,继承自`java.applet....
在JavaScript中,我们可以通过`document.applets`对象来访问已加载的Applet实例。而在Applet中,可以使用`getScriptEngine()`方法获取JavaScript引擎,从而调用JS函数。 让我们深入到例子中,假设我们有一个名为...
- Applet向服务器发起请求以获取报告数据。 - 服务器通过`TestServlet`处理请求,并将报告数据(`JasperPrint`对象)发送回客户端。 - 客户端的Applet解析并显示报告。 通过上述示例可以看出,Applet不仅可以...
这一步通常在服务器端完成,生成的报表通常以JasperPrint对象的形式存在。 2. **转换为适合打印的格式**: JasperReport支持多种输出格式,如PDF、HTML、Excel等。通常会选择PDF,因为它能更好地保留原始设计的样式...
Java Applet是Java技术在早期为了实现网页动态交互而提出的一种技术。Applet是一段用Java语言编写的代码,能够在用户的浏览器环境下运行,为用户提供动态的、交互式的Web内容。与传统的Java Application不同,Applet...
- 绘画:`paint(Graphics g)`方法用于绘制Applet的内容,这里的`Graphics`对象用于图形渲染。 - 开始与停止:`start()`在Applet可见时调用,恢复其活动状态;`stop()`在Applet不再可见时调用,暂停其活动。 - ...
4. **Applet与浏览器的通信**:Applet可以通过`AppletContext`对象与浏览器进行交互,如打开链接、播放声音或获取URL数据。此外,`Applet`类还提供了一些内置方法,如`getDocumentBase()`和`getCodeBase()`,用于...
7. **Applet与AppletContext**:Applet有一个`AppletContext`对象,它提供了与浏览器和其他Applet通信的能力,如播放声音、获取URL信息等。 8. **替代技术**:随着Web技术的发展,Applet逐渐被其他技术取代,如...
4. **Applet调用JavaScript**:在Applet中使用`getAppletContext().getJavaScriptObject()`获取JavaScript对象,然后调用方法。 ```java import java.applet.Applet; import netscape.javascript.JSObject; public...
由于浏览器的安全模型,Applet 在与服务器通信时受到一些限制,比如不能直接访问本地文件系统,这限制了它们获取和存储用户数据的能力。此外,跨域安全策略阻止 Applet 直接与不同域名的服务器通信。 **通信策略** ...
* Applet 可以使用线程,但是不能使用 daemon 线程。 三、Applet 的图形用户界面 * Applet 可以使用 java.awt 包中的组件来实现图形用户界面。 * Applet 可以使用 paint() 方法绘制图形。 * Applet 可以使用 ...
- **`getParameter(String)`** - 获取 `<applet>` 标签中定义的参数值。 - **`getCodeBase()`** - 返回 `.class` 文件的 URL 地址。 - **`getDocumentBase()`** - 返回 HTML 文档的 URL。 - **`getAppInfo()`** - ...
在Java编程领域,Applet和Servlet是两种不同的技术,它们分别在Web应用的不同层面发挥作用。Applet是嵌入在HTML页面中的小型Java程序,能够提供客户端的交互功能,而Servlet则是运行在服务器端的Java程序,负责处理...
Java Applet是Java技术在Web浏览器中运行的一种小程序,它为网页添加了交互性和动态性。本教程将探讨如何在Java Applet中实现动画效果,让网页内容更加生动有趣。 首先,理解动画的基本原理至关重要。动画是通过...
4. `destroy()`方法:与对象的`finalize()`方法不同,`destroy()`方法在浏览器关闭时自动执行,回收Applet占用的非内存资源。如果浏览器在Applet运行时关闭,系统会先调用`stop()`,然后调用`destroy()`。 接下来,...
Applet是Java类的子类,通常是`java.applet.Applet`或其子类,如`javax.swing.JApplet`。它们通过`<applet>`标签或者`<object>`标签在HTML页面中被引用,从而在客户端(用户的浏览器)中执行。Applet的生命週期包括...
这个“一个Applet小例子”是一个专门用于展示股市实时行情变动的应用,用户可以在浏览器中直接运行,无需下载安装,极大地提高了信息获取的便捷性。 在Java中,Applet的生命周期包括初始化、启动、绘画、更新和终止...