5

私は PHP 開発者です。クライアント マシンに特定のファイルが存在する必要があり、このファイルが存在する場合、ユーザーは Web サイトにログインできます。以下のコードを使用して、ファイルの存在を取得できます。

import java.io.File;
class FileSearchFirstOrder{
    public static void main(String args[])
    {
        boolean isExistP = false;
        File volumes = new File("/Volumes");
        File files[] = volumes.listFiles();
        for(File f: files)
        {
            //System.out.println("Current File -> " + f.getPath()); 
            isExistP = parseAllFiles(f.getPath());
            if(isExistP ==  true)
                break;
        }
        if(isExistP ==  true)
            System.out.println("I got the desire file Please continue.");
        else
            System.out.println("Sorry! I can not find the desire file Please try again leter:(");

    }

    public static boolean parseAllFiles(String parentDirectory)
    { 
        boolean isExistPC = false;
        try
        {
            File[] filesInDirectory = new File(parentDirectory).listFiles(); 
                for(File f : filesInDirectory)
            {  
                if (f.getName().toString().equals("key.txt"))
                {
                        //System.out.println("Current File ->" + f.getName()); 
                    isExistPC = true;
                }
                }  
        }
        catch(Exception e)
        {
        }
        return isExistPC;
    }  
}

しかし、これをプロジェクトに実装し、この応答をサーバーに送信して、エンドユーザーがログインできるかどうかを確認するにはどうすればよいですか。

4

3 に答える 3

4

私の質問のアプレットは以下にあります:

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.border.*;

public class AppletFileSearch extends JApplet implements ActionListener
{
 private JPanel pane = null;
 public void init() 
 {
    try{
        jbInit();
    }
    catch(Exception e) {
        e.printStackTrace();
    }
}
public boolean parseAllFiles(String parentDirectory)
{ 
    boolean isExistPC = false;
    try
    {
        File[] filesInDirectory = new File(parentDirectory).listFiles(); 
            for(File f : filesInDirectory)
        {  
            if (f.getName().toString().equals("key.txt"))
            {
                isExistPC = true;
            }
        }  
    }
    catch(Exception e){}
    return isExistPC;
}  
 private void jbInit() throws Exception
 {  
    boolean isExistP = false;
    File files[] = File.listRoots();
    for(File f: files)
    {
        isExistP = parseAllFiles(f.getPath());
        if(isExistP ==  true)
            break;
    }
    if(isExistP ==  true)
    {
    pane = new JPanel();
        pane.setBounds(new Rectangle(0, 0, 500, 35));
        pane.setLayout(null);
        pane.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
        pane.setBackground(new Color(0, 255,0));
        setContentPane(pane);
    }
    else
    {
        pane = new JPanel();
        pane.setBounds(new Rectangle(0, 0, 500, 35));
        pane.setLayout(null);
        pane.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
        pane.setBackground(new Color(255, 0, 0));
        setContentPane(pane);
    }
 }
 public void actionPerformed(ActionEvent e) {
}
}

コマンド プロンプトでjavac AppletFileSearch.javaを使用してこのソースをコンパイル し、コマンド jar cvf AppletFileSearch.jar AppletFileSearch.classを使用して jar ファイルにします。その後、コマンドkeytool -genkey -alias AppletFileSearch -validity 365 を使用してキー証明書を作成する必要が あります。 10または11の手順になります(パスワード、姓、名の例がURLに記載されています:http://www.developer.com/java/other/article.php/3303561/Creating-a-Trusted-Applet -with-Local-File-System-Access-Rights.htm). 再度、最終署名 jarsigner AppletFileSearch.jar AppletFileSearchのコマンドを使用します。 以前に入力したパスワードを尋ねるプロンプトが表示されます。正しいパスワードを入力すると、署名者証明書が 6 か月以内に期限切れになるというメッセージが表示されます。

この手順を実行すると、HTML ページが作成され、コードは次のようになります。

<html>
<title>Run Applet</title>
</head>
<body>
<applet code="AppletFileSearch.class" archive="AppletFileSearch.jar"
       width=325 height=325></applet>
</body>
</html

この html ファイルを AppletFileSearch.html として保存し、ファイル AppletFileSearch.html と AppletFileSearch.jar の両方をサーバー (Apache など) に保持します。ブラウザから実行してお楽しみください。

于 2013-02-27T06:37:40.357 に答える
1

アプレット、より具体的には署名されたアプレットを介して必要なことを実行できるはずです。このチュートリアルでは、アプレットがユーザーのローカル ファイル システムにアクセスできるように、正しい方向を示しているはずです。

于 2013-02-25T06:44:01.813 に答える
0

署名されていないアプレットは、ローカル ファイル システムなどのクライアント リソースにアクセスします。そのファイルを開くには、署名されたアプレットをデプロイする必要があります (アプレットは無制限の権限で実行されることがユーザーに警告されると思います)。代わりにTSL/SSL クライアント認証を実装できます。

于 2013-02-25T06:47:02.730 に答える