当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > JAVA > APPLET与SWING > 正文

通过自建代理服务器增强 Applet 的功能(2)

http://www.zk168.com.cn  招考学习网 2006-4-11 1:16:52
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--

· 代理服务器

除了"数字签名技术"这种高级技术外,我们还可以使用其它的方法来加以实现。比如,你可以建一个网页,它可以内嵌你想要运行的小应用程序(这时它用的是存储你的服务器的假数据)。你可以提供一个按钮,用户可以使用这个按钮下载这个小应用程序和相应的策略文件,这样用户就可以从这个小应用程序运行的浏览器中运行它了。虽然这是一个可行的方法,但却使你的小应用程序的"魅力"大打折扣。好在还有另外一种方法。

代理服务器方法是另外一种突破安全性的限制,实现信息的提取,现在我们就详细的介绍一下。

在你的WEB服务器上安装一个代理服务器。它是一个服务程序,随着服务器的启动而自动运行,这个程序可以获取来自于网页的请求信息,并发送给请求它的任何人。举个例子来看一下:假设你的小应用程序向驻留在同一台主机上的代理服务器发关一个GET请求
http://www.server.com/proxysvr?URL=http://www.yahoo.com/search.pl?Name=ddvip

那么代理服务器会为这个小应用程序取回网页,并把它做为GET请求的答复发送回来,这样小应用程序就可以处理取回的信息了(参图三)

图三 通过代理服务器获取数据的流程
图三 通过代理服务器获取数据的流程

由此可见代理服务器可以实现这个功能,但现有的代理服务器都是功能丰富,而我们只是利用它的最基本的功能,所以建议大家用JAVA自己写一段代码。我们是用Servlet来实现的,一个Servlet是由一个Servlet引擎来启动的。现在大部分的网络服务器都可以运行Servlet。
代理服务器源代码(ProxySvr.java)

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ProxySvr extends HpptServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws SevletException, IOException {
String query = null;
response.setContentType("text/html");
PrintWriter out = response.getWriter();
query = request.getParameter("URL");
if(query == null) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST,
"Missing URL parameter");
return;
}
try {
query = URLDecoder.decode(query);
} catch(Exception exception) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST,
"URL decode error " + exception);
return;
}
try {
URL url = new URL(query);
BufferedReader in = new BufferedReader(new
InputStreamReader(url.openStream()));
String line;
while((line = in.readLine()) != null)
out.println(line);
out.flush();
} catch(IOException exception) {
response.sendError(HttpServletResponse.SC_NOT_FOUND,
"Exception: " + exception);
}
}
}

说明:WEB服务器的Servlet服务接收到一个GET请求时,它调用doGet()方法。HttpServletRequest参数包含请求参数。这个Servlet用getParameter()方法得到URL参数的值。在任何Servlet中,你需要把响应答复发送给HttpServletResponse类的getwriter()方法返回的PrintStream,这个Servlet连接URL参数指定的资源,每次读取它的数据,并把它发送给响应流。最后,用sendError()方法报告出现的错误。

· 小结

现在让我们回顾一下为什么代理服务器可以解决这个小应用程序的安全问题。当你的小应用程序要访问来自异地主机的信息时,它会将请求发送给驻留在本机上的代理服务器,然后代理服务器连接要访问的异地主机,取出所要求的数据,然后将数据返回给小应用程序。

虽然几经周折,但是却可以避免安全性的问题。OK,这也许并不是最好的解决方案,但是,它确实是一种实用的解决方案,欢迎大家一起研究。

· 参考资料

  • 下面是上述程序的源代码(ZIP格式)ProxySvr.zip
  • 《JAVA2核心技术》机械工业出版社
  • http://java.sun.com/docs/books/jls/index.html

· 关于作者

夏治(Tim),毕业于沈阳工业大学,学士学位,毕业后一直从事程序设计工作,对WEB程序设计有一定的见解,研究JAVA程序设计有近年的时间,通过了SUN公司的SCJP认证,对JAVA有一定程度的了解。现在在深圳一家IT企业工作,从事JAVA程序开发工作。足球是我一生的最爱,没有办法想像,没有足球的日子将会是什么样子。
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
·环保企业人力资源开发与管理的实证研究————巨龙公
·重油制气污水处理系统(A/O)技术改造
·英美CPA管理模式及其启示
·改造NERA微波公务信道为国产监控信道
·EAStudio让电子商务网站如虎添翼
·基于PB6和ORACLE8开发“劳动信息管理系统”
·巧解Pretty  Park 病毒一例
·CDMA在中国的应用以及向CDMA2000的过度中的问题研究
·SMA施工控制与现场监理
·浅谈改性沥青及SMA路面平整度的控制
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>