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

JSP
在Jsp Servlet中页面重新定向总汇
JSP 点击链接后下载文件(相当于右键另存)功能
Java 通过设置Referer反盗链
JSP XMLHttpRequest动态无刷新及其中文乱码处理
java session出现的错误
JSP 自定义标签之一 简单实例
JSP Servelet 数据源连接池的配置
jsp web.xml文件的作用及基本配置
java tapestry5 布局 参数的处理
JSP 传递中文参数的例子
通过Setters方式对日期属性及日期格式进行IOC注入
J2EE基础--为什么jsp不能取代servlet?
解析JSP中标签库
JSP三种页面跳转方式的比较
提升JSP应用程序的几个技巧
JSP进行数据库连接的实例
JSP实例程序:统计当前在线人数
EJB初学者怎样面对经常有的十一个疑惑
高手为你解读J2EE开发过程中的异常处理
JSP环境配置:TOMCAT的内存和连接数配置详解

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


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


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