对于不熟悉flex的童鞋,要做一些像聊天等交互性功能,用applet + js也是很容易实现的——而且,跨浏览器,js也容易操作dom进行页面内容展示。
1. 建立一个工程,compiler level设置1.3
2. 找到jre lib 下的plugin.jar,导入路径
3. 写一个比较通用的socket client applet,暴露一些主要方法,比如jsFunCall connect close send,connect方法里开启一个domain thread负责接收处理数据(最好是以接口形式)
话说actionscript那种socket方法回调那是一个简单啊!java线程小麻烦了点。
1. 建立一个工程,compiler level设置1.3
2. 找到jre lib 下的plugin.jar,导入路径
3. 写一个比较通用的socket client applet,暴露一些主要方法,比如jsFunCall connect close send,connect方法里开启一个domain thread负责接收处理数据(最好是以接口形式)
话说actionscript那种socket方法回调那是一个简单啊!java线程小麻烦了点。
package com.cisee.appletjs; import java.applet.Applet; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Random; import netscape.javascript.JSException; import netscape.javascript.JSObject; public abstract class JsApplet extends Applet { /** Socket */ private Socket sock = null; /** Input Stream */ private InputStream is = null; /** Output Stream */ private OutputStream os = null; private final int port = 12800; private final String host = "127.0.0.1"; /** win JSObject */ protected JSObject win = null; /** doc JSObject */ protected JSObject doc = null; /** Is connected? */ protected boolean connected = false; Thread reviever; String userid; String toUserid; protected String getInfo() { return "Cisee Applet Javascript Interpretor Operation"; } public void init() { logMsg("Init.."); userid = System.currentTimeMillis() + "_" + new Random().nextInt(100); } public void destroy() { closeConnect(); } /** * JS Object */ protected JSObject getWin() { if (win == null) win = JSObject.getWindow(this); return win; } protected JSObject getDoc() { if (doc == null) doc = (JSObject) getWin().getMember("document"); return doc; } public abstract void processMessage(final String msg); /** * Send message to server. * @param msg message that will be sent. */ void sendToServer(final String msg) { if (connected) { try { logMsg(msg); os.write((msg).getBytes()); os.write("\r\n".getBytes()); os.flush(); } catch (IOException e) { logMsg("Stream write error.", e); } } else { wincall("warn_notconnected", null); } } /** * Close connection. */ void closeConnect() { if(reviever != null) reviever.stop(); connected = false; if (sock != null) { try { sock.close(); } catch (IOException e) { e.printStackTrace(); } sock = null; } } /** * Call function of outside explorer's script. * @param function function name. * @param param Parameter values. */ protected void wincall(final String function, final Object[] param) { Object[] realParam = param == null?new Object[0]:param; try { getWin().call(function, realParam); } catch (JSException e) { callAlert( "function : " + function + "(arg*" + realParam.length + ") is exist?"); } } /** * Call alert function of outside explorer's script. * @param msg Message. */ protected void callAlert(final String msg) { try { getWin().call("alert", new String[] { msg }); } catch (JSException e1) { e1.printStackTrace(); } } /** * Log message when debug is true. * @param msg Message. */ protected void logMsg(final String msg) { System.out.println(msg); } /** * Log message when debug is true. * @param msg Message. * @param e Exception. */ protected void logMsg(final String msg, final Throwable e) { System.out.println(msg + "\r\nCause : " + e.getMessage()); e.printStackTrace(); } /** * Connect to server. */ public void connect() { if (connected) { return; } logMsg("Connect to server..."); try { // Conect to server.. sock = new Socket(host, port); is = sock.getInputStream(); os = sock.getOutputStream(); connected = true; // Thread that receive messages. reviever = new Thread() { public void run() { try { while (sock != null && !sock.isClosed()) { if (is.available() != 0) { byte[] buf = new byte[is.available()]; is.read(buf); String line = new String(buf).trim(); processMessage(line); } } } catch (IOException e) { logMsg("Error..", e); } finally { if (connected) { closeConnect(); wincall("warn_connect_failed", null); } } } }; reviever.setDaemon(true); reviever.start(); } catch (IOException e) { e.printStackTrace(); } } public void sendMsg(final String toId, final String msg) { try { // TODO sendToServer(msg); } catch (Exception e1) { logMsg("Error in sendMsg", e1); } } public void quit() { try { sendToServer("quit"); closeConnect(); wincall("applet_quit", null); } catch (Exception e) { logMsg("Error in quit", e); } } public boolean isConnected() { return connected; } }
发表评论
-
MyEclipse6.5配置Tomcat7.0
2014-11-26 10:26 792window>>Preferences>&g ... -
JSP 转换 mht java 代码
2013-11-22 10:31 1018import java.io.BufferedInputS ... -
JAVA实现FTP上传下载
2013-09-06 10:31 848import java.io.DataIn ... -
java的KVM在arm上的应用
2013-03-21 09:26 915http://wenku.baidu.com/view/162 ... -
JAVA在ARM的应用
2013-03-21 09:18 5714J2ME CDC(Connected Device Confi ... -
JAVA桌面截图
2013-03-20 15:07 760Robot robot = new Robo ... -
引用他人代码去掉前面行数
2013-03-19 11:01 848import java.io.*; public clas ... -
JAVA调用DLL文件
2012-11-25 16:02 9541 创建 TestDll.java public cla ... -
用java的反射清空对象属性的值
2012-10-25 16:09 7969@SuppressWarnings("unche ... -
用反射清空对象属性的的值
2012-10-25 16:06 0@SuppressWarnings("unche ... -
JMS实例,包括点对点和主题订阅
2012-07-11 10:58 2977三个Java文件: JMSTest.java ... -
Jmail收发邮件
2012-07-11 09:32 1078Jmail 接收邮件: import javax.mai ... -
MyEclipse6.0反编译插件jadclipse安装
2012-05-16 11:54 1009插件下载 反编译工具jad,地址:http://www.var ... -
MyEclipse6.0反编译插件jadclipse安装
2012-05-16 11:51 0插件下载 反编译工具ja ... -
把第一个对象中不为空的数据复制到第二个对象中
2012-04-09 10:31 1028/*** *实现两个实例对象之间的对拷, * ... -
velocity导出word模板
2012-02-29 13:11 1484public class VelocityExample { ... -
Jacob操作word
2012-02-29 13:02 1331package test; import com.jacob ... -
EJB3学习资料
2011-03-31 17:28 843http://wenku.baidu.com/view/6e2 ... -
Java和C#相互调用
2011-03-31 17:23 876http://developer.51cto.com/art/ ... -
java操作注册表方法
2011-02-23 16:57 840http://www.iteye.com/topic/8229 ...
相关推荐
阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店...
阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店...
阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店管理系统(javaapplet+SQL)阳光酒店...
基于java+applet实现阳光酒店管理系统(java+applet+SQL+文档lunwen+PPT) 基于java+applet实现阳光酒店管理系统(java+applet+SQL+文档lunwen+PPT) 基于java+applet实现阳光酒店管理系统(java+applet+SQL+文档lunwen+...
(java applet+SQL) 实现阳光酒店管理系统(java applet+SQL) 实现阳光酒店管理系统(java applet+SQL) 实现阳光酒店管理系统(java applet+SQL) 实现阳光酒店管理系统(java applet+SQL) 实现阳光酒店管理系统(java ...
基于java+applet实现家庭理财系统(java+applet+系统ppt文档) 基于java+applet实现家庭理财系统(java+applet+系统ppt文档) 基于java+applet实现家庭理财系统(java+applet+系统ppt文档) 基于java+applet实现家庭理财...
java阳光酒店管理系统(javaapplet+SQL)java阳光酒店管理系统(javaapplet+SQL)java阳光酒店管理系统(javaapplet+SQL)java阳光酒店管理系统(javaapplet+SQL)java阳光酒店管理系统(javaapplet+SQL)java阳光酒店管理系统...
基于java的阳光酒店管理系统(javaapplet+SQL)基于java的阳光酒店管理系统(javaapplet+SQL)基于java的阳光酒店管理系统(javaapplet+SQL)基于java的阳光酒店管理系统(javaapplet+SQL)基于java的阳光酒店管理系统(java...
Java毕设-阳光酒店管理系统(javaapplet+SQL) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! Java毕设-阳光酒店管理系统(javaapplet+SQL) Java毕设-阳光酒店管理系统(javaapplet+SQL) Java毕设-阳光酒店管理...
基于Java实现的网络三维技术的设计与实现(java+3D+Applet+源码+文档lunwen) 基于Java实现的网络三维技术的设计与实现(java+3D+Applet+源码+文档lunwen) 基于Java实现的网络三维技术的设计与实现(java+3D+Applet...
适合练手、课程设计、毕业设计的Java项目源码:阳光酒店管理系统(javaapplet+SQL).rar 适合练手、课程设计、毕业设计的Java项目源码:阳光酒店管理系统(javaapplet+SQL).rar 适合练手、课程设计、毕业设计的Java项目...
"阳光酒店管理系统(javaapplet+SQL).rar"是一个典型的案例,它结合了Java Applet技术和SQL数据库管理,为酒店提供了一套高效、便捷的运营解决方案。下面,我们将深入探讨这一系统的组成部分及其核心知识点。 1. ...
《JSP源码——阳光酒店管理系统(javaapplet+SQL)》是一个基于Java技术的Web应用程序,主要用于实现酒店的日常管理功能。在这个系统中,开发者利用了JSP(JavaServer Pages)作为动态网页开发语言,结合SQL数据库进行...
阳光酒店管理系统:(javaapplet+SQL), 阳光酒店管理系统:(javaapplet+SQL) 阳光酒店管理系统:(javaapplet+SQL) 阳光酒店管理系统:(javaapplet+SQL) 阳光酒店管理系统:(javaapplet+SQL)
Java+applet+小程序+滚动字符