2

Java は JavaScript ではなく、その逆もまた然りであることを私は知っていることを述べて、これを序文にします。

1750 の文書名と文書の内容ごとに単語の出現回数をカウントする必要があるプロジェクトがあります。同僚から素晴らしい JavaScript を入手しました。この JavaScript は、Web ページのフォーム入力に必要な機能を正確に実行します。

Java の FileReader、BufferedReader、walkFileTree などを使用して、ドキュメントが存在するディレクトリをトラバースしたいと考えています。

これが最も効率的または効果的なアプローチかどうかはわかりませんが、コードの Java 部分と JavaScript 部分の両方が互いに独立して動作するようになりました。それらの間でデータを受け渡すことができるかどうかを確認したいと思います。車輪の再発明を始める前に。

これまでのところ、私はここにいます。私は CLParse メソッドで立ち往生しており、疑似コードを挿入しました:

public static void main(String... aArgs) throws FileNotFoundException    {
    File startingDirectory= new File("CGT");
    List<File> files = FileListing.getFileListingNoSort(startingDirectory);
    for(File file : files )           {
        CLParse(file.toString());
    }   }

static private List<File> getFileListingNoSort(File aDirectory) throws FileNotFoundException    {
    List<File> result = new ArrayList<File>();
    File[] filesAndDirs = aDirectory.listFiles();
    List<File> filesDirs = Arrays.asList(filesAndDirs);
    for(File file : filesDirs)          {
        result.add(file); //always add, even if directory
        if ( ! file.isFile() )   {
            List<File> deeperList = getFileListingNoSort(file);
            result.addAll(deeperList);
        }      }      
    return result;
    }

 /* is something like this doable and how would I do it?
 */
public static void CLParse(String fn) {
      pass fn to JavaScript counter
      return an array of {word,occurences} for the string
      write array to file
      }

ドキュメント CONTENTS を抽出して文字列として渡す別のメソッド セットも作成します。Java と JavaScript の間で値をやり取りした実際の経験があるかどうか、またそれを行うための良い/より良い方法についてのアドバイスを知りたいです。

4

4 に答える 4

1

Rhinoをチェックしてくださいhttps://developer.mozilla.org/en-US/docs/Rhino

Javaオブジェクトを作成し、それらをjavascriptで使用できます。統合は簡単です

于 2012-12-12T13:02:36.553 に答える
1

Mozilla Rhino を調査してみます。
http://en.wikipedia.org/wiki/Rhino_%28JavaScript_engine%29

于 2012-12-12T12:59:02.350 に答える
1

それらが相互に対話できるようにするための2つのオプションがあります。

1.アプレット <-> JavaScript

2.サーベット <-> JavaScript

オプション 1 では、JSObject との通信を構築する必要があります: JSObject

または、これを使用してアプレットメソッドを即座に呼び出すdocument.appletname.methodname(); こともできません。同じ単純なフォーマットを互いに解析することもできます。

オプション 2 では、サーブレットとの通信を構築する必要があります。

ここでは、サーブレットに Ajax リクエストを送信する必要があります。

$.post('login',{name:"Peter", pw:"123456"},function() 
{ 
   //do whatever
})

JavaServlet クラス

最初のコメントは、web.xml にサーブレットとして記述する必要があります。これはサーブレット パターンです。2 番目のものは、サーブレットで読み取ることができるパラメーターです。関数は、リクエストで実行できる内容を記述します。

これら 2 つのオプションの違いは次のとおりです。

1.アプレットはユーザーのコンピューター上で実行されるため、ユーザーのファイルにアクセスできます。ただし、このためには、アプレットに署名する必要があります。

2.サーブレットはサーバー上で実行されます。ここでは、完全なファイル アクセスが可能です (システムで許可されている場合)。

于 2012-12-12T13:04:29.713 に答える
0

AJAX を使用して、サーバーとの間で値を送受信できます。パラメータまたは JSON をサーバーに送信して、応答を取得できます。

JSONPを使用してデータを提供できます。または、2 番目のサーバーを制御できない場合は、リバース プロキシを使用して、最初のサーバーを介して 2 番目のサーバーに要求をプロキシします。

于 2012-12-12T12:50:18.017 に答える