applet 和jsp 、servlet最明显的运行区别就是
applet在用户端下载运行得到结果
而使用jsp和servlet,用户端看到只是运行结果(已经在服务器上运行)如果要在applet中做上面的功能,首先,获取客户端文件是需要授权的,而服务器文件,需要使用http方式或者socket方式获取。第二,使用awt或者swing组件来显示在applet内,也可以显示在网页上,具体方法不太清楚

解决方案 »

  1.   

    我自己做了个转换,代码如下:
    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;必须被捕获或被声明抛出我不是已经有异常处理了吗?请大虾们帮忙看看呢!
      

  2.   

    你只捕获了IO异常,未捕获java.security.NoSuchAlgorithmException异常
      

  3.   

    又做了一些改动,我想在第一个文本框需要计算摘要的文件名,用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; 
      }
      

  4.   

    applet是在客户端使用的。
    servlet/jsp是在服务端使用的,jsp是servlet的一种简化,jsp程序在执行的时候会转换成servlet.
      

  5.   

    applet是在客户端运行的,如果你想对客户端的文件计算消息摘要,就应该使用applet,如果文件比较敏感,那么在网络中传送的文件就应该是密文,也就是说你应该在客户端做好文件加密的工作以后再传给服务器。当然你从服务器中下载的applet应该是经过签名的,否则运行了恶意的小程序,后果会不堪设想!
        应该来说应用程序可以实现的功能小程序都可以实现的,你努把劲吧!