当前位置: 首页 > 图文教程 > 网络编程 > JSP > 如何利用xml,javascript绕开applet的安全问题

JSP
Servlet及JSP中的多线程同步问题
使用Ant和Tomcat创建Web应用
如何直接在浏览器内运行SQL命令
Servlet、Jsp中的多国语言显示
html与jsp开发分离技术
通过Jsp发送动态图像
Servlets和JSP Pages最佳实践
学习在JSP中使用JavaBeans
JSP显示内容缓存技巧
应用JDOM处理数据库到XML转换的JSP实现
JSP中tomcat的SQL Server2000数据库连接池的配置
用JSTL实现JSP应用程序快速开发
浅谈4种类型的JDBC驱动程序
怎样设置 JSP 的虚拟目录
Java 中对文件的读写操作之比较
javamail在jsp中调用
jsp中任意文字转Unicode的通用模块
JSP与SQL SERVER的留言本
jspSmartUpload上传下载全攻略
Tomcat5.x中的虚拟主机配置方法

JSP 中的 如何利用xml,javascript绕开applet的安全问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 292 ::
收藏到网摘: n/a

关键词:applet,jsp,xml,javascript


相对于html而言,applet具有较高的用户交互性,如果在局域网这种高速网络环境下要实现比较丰富的用户界面的话,applet也是一种不错的选择。可是,由于applet的种种安全方面的限制,比如在缺省安全策略下,它不可以使用jdbc,不可以进行文件io操作等等。其实,如果你是在jsp或者asp中使用applet的话,问题就好办多了。我们可以利用asp或者jsp访问数据库,把获得的数据组装成xml字符串,传给applet,这样就解决了applet的数据来源问题。读者也许会问,如何把用户对applet的操作转化为对数据库等资源的操作呢,我们可以采用一种更简单的办法,就是利用applet中调用javascript函数,利用发送http请求的方式,把用户对applet的操作结果作用于数据库等资源。下面我给出一些示意性的代码。

1.jsp页面中传送xml给applet示意性代码
  1. <%@ page contentType="text/html; charset=GB2312" %>
  2. <%@ page import="com.jagie.business.organization.*"%>
  3. <%@ page import="com.jagie.utils.StringUtil"%>
  4. <%
  5. //jsp调用javabean,查询数据库,组装成xml字符串
  6. String xmlString=NodeOperator.getXmlString();
  7. //把xml字串中的双引号换成单引号,这一步非常重要。否则在
  8. //applet接受参数的时候,导致字符串断裂。你浏览器中察看一下
  9. //jsp生成的html代码就明白了。
  10. xmlString=StringUtil.replaceStr(xmlString,"\"","'");
  11. %>
  12. <html>
  13. <body bgcolor="#ffffc0">
  14. <jsp:plugin type="applet" 
  15. code="com.jagie.business.organization.NodeApplet.class" codebase="." 
  16. archive  = "Oil.jar" >
  17.     <jsp:params>
  18.         <jsp:param name="xmlString" value="<%= xmlString %>" />
  19.     </jsp:params>
  20.     <jsp:fallback>
  21.         <p>Unable to load applet</p>
  22.     </jsp:fallback>
  23. </jsp:plugin>
  24. </body>
  25. </html>


2.applet中接受xml数据的示意性代码
  1.  public void init()
  2.     {
  3.       String xmlString=getParameter("xmlString");
  4.      // System.err.println("从参数中获得的xml字串:"+xmlString);
  5.         try
  6.         {    
  7.             //利用xml生成可视化组件
  8.             jbInit(xmlString);
  9.         }
  10.         catch(Exception e)
  11.         {
  12.             e.printStackTrace();
  13.         }
  14.     }


3.applet调用javascript函数的例子

  1.   public void valueChanged(TreeSelectionEvent event){
  2.         TreePath path = event.getPath();
  3.         DefaultMutableTreeNode clicknode = 
  4. (DefaultMutableTreeNode)path.getLastPathComponent();
  5.         Object uo = clicknode.getUserObject();
  6.         Node node = (Node)uo;
  7.         //这里是个示意性代码,你可以调用自己写的javascript函数
  8.         //在js函数中进行url重定向,并且把用户输入的数据作为编码到url中
  9.         //达到修改db等资源的目的.JSObject是netscape包中的类。可以在jdk
  10.         //的jre目录下找到
  11.         JSObject.getWindow (this).eval("javascript:alert('"+node.getNodeCode()+"')") ;
  12. }


最后,希望这篇短文对你有所启发,如有错误之处,敬请批评指正。