在js中调用Applet中的方法,当Applet中的方法需要访问本地文件系统时,即使你的Applet 是经过签名的,也会报异常,不能正确地访问本地文件系统,解决的办法是:
将原来Applet中的方法:
/**
* 提供页面中用js调用导出Excel的方法
*/
public void exportExcel() {
if (showPanel instanceof IstatReportPanel) {
((IstatReportPanel) showPanel).exportExcel();
}
}
修改为:
/**
* 提供页面中用js调用导出Excel的方法
*/
public void exportExcel() {
if (showPanel instanceof IstatReportPanel) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
((IstatReportPanel) showPanel).exportExcel();
}
});
}
}
就可以了。
在js中调用:
<%--
* @file:bb_query.jsp
* @author:Wei Baojun
* @date?2009.6.11
* @reviser:Wei Baojun
* @reviseDate: 2009.6.11
* @description: 报表填报显示Applet
* @version:1.0
--%>
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*" %>
<%@ include file="/include/header.jsp"%>
<style>
<!--
body{
margin: 0px;
padding: 0px;
}
-->
</style>
<script language="javascript">
<!--
document.body.onload = function (){
document.body.scroll = "no";
}
-->
</script>
<%
String url = request.getRequestURL().toString();
String servletPath = request.getServletPath();
url = url.replace(servletPath,"");
request.setAttribute("basePath",url);
String sessionId = session.getId();
request.setAttribute("sessionId",sessionId);
%>
<OBJECT id="appletObj" name="appletObj" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="100%" height="100%" codebase="/istat3/bbgl/bbtbcl/jvm/jre-1_5_0-windows-i586.exe#Version=1,5,0,0">
<param name="baseUrl" value="${basePath}" />
<param name="instBbId" value="${param.instBbId}" />
<param name="bbDesignerBm" value="${param.bbDesignerBm}" />
<!--<param name="instBbId" value="8aceec0c22cf745e0122cf7a25920001" />-->
<param name="sessionId" value="${sessionId}" />
<param name="code" value="com.longtop.istat3.bbgl.applet.dtable.QueryBbApplet">
<param name="codebase" value="${CONTEXT_ROOT}/bbgl/bbtbcl/lib">
<param name="version" value="2009091807" />
<param name="archive" value="2009091807.jar,IKExpression2.0.jar,jxl.jar,commons-collections.jar,swingx-0.9.2.jar,commons-lang.jar,spring-2.5.6.jar,commons-logging.jar">
<param name="cache_option" value="NO">
</OBJECT>
<script language="javascript">
<!--
/**
* 打印报表的方法
*/
function printTable(){
var appletObj = document.getElementById("appletObj");
appletObj.printTable();
}
/**
* 导出报表的方法
*/
function exportExcel(){
var appletObj = document.getElementById("appletObj");
appletObj.exportExcel();
}
-->
</script>
<%@ include file="/include/footer.jsp"%>
分享到:
相关推荐
`jsinterface.js`是一个外部JavaScript文件,用于定义JS与Applet的交互。 在`jsinterface.js`中,我们可以这样调用Applet的方法: ```javascript var applet = document.applets['MyApplet']; // 获取Applet实例 ...
#### 五、Applet访问JavaScript 为了实现Applet与JavaScript之间的通讯,需要使用Live Connect技术,它允许Applet调用JavaScript代码。这需要引入`netscape.javascript.JSObject`类,该类位于NetScape的Java库中。...
考虑到Applet的局限性,现在更常见的文件上传解决方案是使用JavaScript、Ajax或现代Web框架(如React、Angular等)结合服务器端语言(如PHP、Python、Node.js等)实现。这些技术提供了更安全、更灵活的解决方案,且...
4. 当用户访问包含 `<applet>` 标签的网页时,浏览器会下载 `.class` 文件并在用户的计算机上执行它。 **Applet 类的主要方法与生命周期:** 每个 Applet 都有一个生命周期,涉及到一系列关键的方法: 1. **`init...
当用户在浏览器中访问包含Applet的网页时,浏览器会下载Applet的.class文件,并在本地的JVM上运行。这种跨平台的特性得益于Java的“一次编写,到处运行”理念。 **Java Applet 的生命周期** Java Applet有四个主要...
由于Applet可能来自不可信的网络源,因此Java引入了安全沙箱模型,限制了Applet的权限,如读写本地文件、访问网络资源等。这降低了恶意Applet对用户系统的潜在威胁。 六、JavaApplet的局限性与替代方案 随着Web...
- 由于Applet运行在用户机器上,为了安全考虑,Java插件会限制Applet的权限,例如不能访问本地文件系统,除非用户明确授权。 - Applet可以使用`signed`方式签名,以获取更多的系统权限,但这样可能会带来安全风险...
由于安全原因,现代浏览器已不再支持Applet,因为它们可以访问用户的系统资源,存在潜在的安全风险。开发者现在更多地转向其他技术,如JavaScript、HTML5 Canvas或Web Applets(基于Web的Java应用)来实现类似的功能...
【动态调用Applet】涉及到的主要知识点包括: 1. **Java Applet**:Applet是Java小应用程序,它可以嵌入到HTML页面中并在用户的Web浏览器中执行。Applet通常由`java.applet.Applet`类或其子类实现,并通过`<applet>...
2. 启动(start()):当Applet可见或从不可见变为可见时调用,恢复Applet的运行状态。 3. 绘画(paint()):用于绘制Applet的内容,通常与`Graphics`对象一起使用。 4. 停止(stop()):当Applet不再可见或浏览器...
5. **启动**:接着调用Applet的`start()`方法,开始执行Applet的生命周期。 6. **运行**:Applet开始运行其用户界面和业务逻辑。 7. **停止和销毁**:当用户离开包含Applet的网页或者浏览器关闭时,Applet的`stop()`...
2. **JavaScript调用Applet的方法**:JavaScript函数`btnclick()`尝试调用名为`testapplet1`的Applet的`t`方法(此处代码不完整)。 ```javascript function btnclick() { var ret = testapplet1.t; // 假设调用...
Java Applet的工作原理是:服务器将编译后的Java类文件打包成一个jar(Java Archive)文件,如本例中的`picc.jar`。这个jar文件包含了所有必要的类和资源,以便在支持Java的Web浏览器中运行。当用户访问包含applet的...
当用户首次访问包含Applet的网页时,浏览器会加载并初始化Applet,然后调用start方法使其开始运行。当用户离开包含Applet的页面时,浏览器调用stop方法暂停Applet,释放资源。当浏览器关闭或重新加载页面时,会再次...
7. **安全性**:由于Applet是在客户端运行,需要注意安全问题,如防止恶意代码执行,限制对本地文件系统的访问等。 8. **优化性能**:Applet需要在有限的计算和内存资源下运行,因此可能需要进行性能优化,如减少...
首先,Java Applet的工作原理包括:将Java程序编译成.class字节码文件,然后在HTML文件中嵌入这个字节码文件的路径,当用户通过浏览器访问含有Applet的网页时,浏览器内置的Java虚拟机(JVM)会解析并执行这些字节码...
3. **安全性**:Java的安全模型为Applet提供了沙箱环境,限制了Applet对本地系统的访问权限,这在一定程度上保证了使用Web扫描仪的用户的系统安全。 4. **网络通信**:Applet可以利用Java的网络类库与服务器进行...
- JavaScript框架(如React、Vue.js)和库(如jQuery)提供了丰富的功能,可以实现与Java Applet类似甚至更高级的交互性。 - WebAssembly允许在浏览器中运行编译后的C++或其他语言代码,提供高性能的应用程序。 -...
- 默认情况下,Applet受到沙箱模型的限制,不能访问本地文件系统、网络资源或执行其他敏感操作,以保护用户的计算机安全。 4. **Signed Applet**: - 为了绕过这些安全限制,开发者可以对Applet进行签名,这涉及...