1.通过对基金折溢价率曲线图的开发,个人对applet的总结如下:
第一种方法实际上只使用了Applet而没有使用Servlet,尽管Applet受到它们的安全模式的限制,但是Applet还是可以 使 用 象 JDBC、RMI这样的协议来访问象数据库、LDAP目录和Enterprise JavaBeans组件这样的后端信息。 这种方法虽然看上去很简单,但是这并不是一个好的方法,它会带来很多的问题。首先, 这种安排要求你将所有的访问信息直接嵌入到你的Applet代码中。数据库用户名、口令、服务器标识,所有的这一切都必须包含在你的Applet代码中,这样最终用户就有可能从类文件中搜集到这些信息。此外,数据库或任何其他你访问的系统都必须在提供Applet的同一台服务器上。这意味着你的服务器将不得不承担双重的负担,它既是一个web服务器,也是一个数据库服务器。
我开发的思路是:通过apllet绘图,然后用jdbc连接数据库,把数据返回给applet,及时绘图,但是这样会导致如下报错:
java.security.AccessControlException: access denied (java.lang.RuntimePerm
ission loadLibrary.win32com)
Security Exception win32com: java.security.AccessControlException: access denied
(java.lang.RuntimePermission loadLibrary.win32com)
Win32Driver Initialized
此类原因就是:applet随着客户端的访问,下载到客户端浏览器的JVM内运行,但是applet调用服务器端的运行的JDBC类,却没有这种权限,再者这样访问常常导致第三方jar包无法加载。从而结果是:applet在IDE工具内可以运行,但是在DOS命令下:appletviewer applet.html却报错,或者直接访问applet.hmtl时也报错。
我试着开始改变思路:首先我通过spring的SERVICE层把从DAO层访问的数据写到EXCEL文件里,然后在applet里面解析Excel文件提取数据,这样解决了applet访问数据库不安全性的操作,而且可以解决了直接点击applet.html访问applet。但是当我部署到服务器的时候却遇到了问题,首先:其他电脑无法通过http://*******/applet.html访问,java控制台但因找不到类的错误,突然见我才明白,这样和上个做法几乎没什么区别,因为解析Excle文件同样需要第三方jar包:jxl。jar,再次;生成的文件存放路径问题,无法得到解决,因为我不可能通过客户端访问把生成的文件也下载到客户端去。
最后我想到了SERVlET的解决方式:
测试代码如下:
web.xml 代码:
---------------------------------------------------------------------------------
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>main.java.servlet.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/servlet/TestServlet</url-pattern>
</servlet-mapping>
---------------------------------------------------------------------------------
index.jsp 代码:
<body>
<jsp:plugin type="applet"
code="main.java.applet.TestApplet.class"
width="754" height="528"
archive="test.jar"
>
</jsp:plugin>
</body>
----------------------------------------------------------------------------
package main.java.servlet;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.*;
public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/plain");
PrintWriter out = res.getWriter();
out.println("Hello! " + req.getParameter("name")
+ ", servlet talking!");
out.close();
}
}
----------------------------------------------------------------------------
package main.java.applet;
import java.applet.Applet;
import java.awt.Graphics;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class TestApplet extends Applet {
private String line;
public void init() {
try {
URL url = new URL(
"http://127.0.0.1:8081/servlet/TestServlet?name=TestApplet");
BufferedReader in = new BufferedReader(new InputStreamReader(url
.openStream()));
line = in.readLine();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void paint(Graphics g) {
g.drawString(line, 20, 40);
}
}
正如你看到的,HTTP文字流的使用相当简单而且直接。Applet建立到Servlet的连接,读取它返回的两行信息并对其进行适当的处理。
使用简单的文字流来交换数据有一个主要的弱点,那就是Applet并不直接理解数据的信息,而是要将其转换成一个有用的格式。在我们的例子中,将字符串转换成数字还不算太复杂,但是当我们试图处理一个更复杂的数据和对象时,转换的工作会很快变得无法控制。事实上,在下面我们可以看到我们一种简单的方法来处理这些复杂的数据。

591

被折叠的 条评论
为什么被折叠?



