是不是java程序想在浏览器中运行,就必须得用applet呢?

twos 2002-11-25 02:53:36
我现在想搞java的网络编程,大概就是做客户端与服务器端可以相互认证的功能。如果用application,就只能在dos命令行下运行并显示结果。如果在浏览器中要怎样做呢?
请问这个application怎样转换成applet?一个简单的计算文件消息摘要的程序!
import java.security.MessageDigest;
import java.io.*;
import sun.misc.*;
public class DigestFile {
public static void main (String[] args) throws Exception {
if (args.length != 1) {
System.err.println("Usage: java DigestFile filename");
System.exit(1);
}
MessageDigest md = MessageDigest.getInstance("MD5");
BufferedInputStream in = new BufferedInputStream(new FileInputStream(args[0]));
int theByte = 0;
while ((theByte = in.read()) != -1)
{
md.update((byte)theByte);
}
in.close();
byte[] theDigest = md.digest();
System.out.println(new BASE64Encoder().encode(theDigest));
}
}

还有,我把它当成bean,用jsp调用,失败了。为什么不可以呢?
applet,jsp,sevlet三者有什么差别和联系呢?真是有点搞不懂了!

...全文
156 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq66 2002-11-28
  • 打赏
  • 举报
回复
applet是在客户端运行的,如果你想对客户端的文件计算消息摘要,就应该使用applet,如果文件比较敏感,那么在网络中传送的文件就应该是密文,也就是说你应该在客户端做好文件加密的工作以后再传给服务器。当然你从服务器中下载的applet应该是经过签名的,否则运行了恶意的小程序,后果会不堪设想!
应该来说应用程序可以实现的功能小程序都可以实现的,你努把劲吧!
xiachedan 2002-11-27
  • 打赏
  • 举报
回复
明白了吧!!!
yeahnope 2002-11-26
  • 打赏
  • 举报
回复
applet是在客户端使用的。
servlet/jsp是在服务端使用的,jsp是servlet的一种简化,jsp程序在执行的时候会转换成servlet.
twos 2002-11-25
  • 打赏
  • 举报
回复
又做了一些改动,我想在第一个文本框需要计算摘要的文件名,用button2来计算摘要,在第二个文本框显示摘要结果,逻辑还是正确的吧!编译也没问题了,就是不能运行,什么反应也没有!
怎么办?????
import java.security.MessageDigest;
import java.io.*;
import sun.misc.*;
import java.awt.*;
import java.applet.*;
public class DigestFile extends Applet{
Button b1 = new Button("输入文件名");
Button b2 = new Button("摘要计算");
TextArea t1 = new TextArea("t1", 1, 30);
TextArea t2 = new TextArea("t2", 4, 30);
public void init() {
add(b1);
add(t1);
add(b2);
add(t2);
}
public boolean action (Event evt, Object arg) {
if(evt.target.equals(b2)) {
try{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(t1.getText()));
MessageDigest md = MessageDigest.getInstance("md5");
int theByte = 0;
while ((theByte = in.read()) != -1)
{
md.update((byte)theByte);
}
in.close();
byte[] theDigest = md.digest();
t2.appendText(new BASE64Encoder().encode(theDigest));
}catch(Exception e){
t2.appendText("error ");
}
}
else return super.action(evt, arg);
return true;
}
tripofdream 2002-11-25
  • 打赏
  • 举报
回复
你只捕获了IO异常,未捕获java.security.NoSuchAlgorithmException异常
twos 2002-11-25
  • 打赏
  • 举报
回复
不好意思,代码没来得及排版就发出了!
twos 2002-11-25
  • 打赏
  • 举报
回复
我自己做了个转换,代码如下:
import java.security.MessageDigest;
import java.io.*;
import sun.misc.*;
import java.awt.*;
import java.applet.*;
public class DigestFile extends Applet{

TextArea t1 = new TextArea("t1", 1, 30);
TextArea t2 = new TextArea("t2",300,300);
public void init(){
add(t1);
add(t2);
try{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(t1.getText()));
MessageDigest md = MessageDigest.getInstance("sha-1");
int theByte = 0;
while ((theByte = in.read()) != -1)
{
md.update((byte)theByte);
}
in.close();
byte[] theDigest = md.digest();
t2.appendText(new BASE64Encoder().encode(theDigest));
}catch(IOException e){
t2.appendText("error " );
}
}
}
但是总是提示这一行:
MessageDigest md = MessageDigest.getInstance("sha-1")
有未报告的异常java.security.NoSuchAlgorithmException;必须被捕获或被声明抛出

我不是已经有异常处理了吗?请大虾们帮忙看看呢!

随风来去 2002-11-25
  • 打赏
  • 举报
回复
applet 和jsp 、servlet最明显的运行区别就是
applet在用户端下载运行得到结果
而使用jsp和servlet,用户端看到只是运行结果(已经在服务器上运行)

如果要在applet中做上面的功能,首先,获取客户端文件是需要授权的,而服务器文件,需要使用http方式或者socket方式获取。第二,使用awt或者swing组件来显示在applet内,也可以显示在网页上,具体方法不太清楚

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧