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

JSP
搭建Eclipse+MyEclipse开发环境
卖jsp编程技巧的那个垃圾的所有实例的答案全部已收集,现将他人收集的实例答案公布出来,大家鉴赏!
一个jsp+AJAX评论系统
JSP 多个文件打包下载代码
JSP 动态树的实现
jsp 重复提交问题
J2ME/J2EE实现用户登录交互 实现代码
访问JSP文件或者Servlet文件时提示下载的解决方法
JSP EL表达式详细介绍
JSP 报表打印的一种简单解决方案
jsp 自定义标签实例
AJAX自学练习 无刷新从数据库后台取数据显示
AJAX 自学练习 请求与显示
AJAX 自学练习 无刷新提交并修改数据库数据并显示
jsp 文件上传浏览,支持ie6,ie7,ie8
JSP application(return String)用法详例
jsp form表单方法示例
JSP request(return String)用法详例
JSP forward用法分析实例代码分析
JSP JavaBean的setProperty属性

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 277 ::
收藏到网摘: 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. }


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