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

JSP
Hibernate save() saveorupdate()的用法
hibernate更新数据方法小结
jsp 复选框使用方法
JSP单选按钮验证、下拉框验证、复选框验证实现代码
jsp Hibernate批量更新和批量删除处理代码
JSP彩色验证码的实例代码
[J2SE]Java中3DES加密解密调用示例
【算法】扑克发牌算法实现
java易懂易用的MD5加密(可直接运行) (1)
java 易懂易用的MD5加密(可直接运行)(2)
java 截取字符串(判断汉字)
java 中文字符串数组按照音序排列
JAVA 18位身份证号码校验码的算法
jsp JFreeChart使用心得与例子
Hibernate 查询方式总结
java struts常见错误以及原因分析
Java 获取URL的内容
JAVA (Jsp)利用Google的Translate开发API的代码
java SOAPHEADER的web service
JSP与JS交互问题 值传递

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


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


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