2009-03-13 10 views
5

カスタムHTMLテンプレートを作成するサイトを作成しようとしています。カスタマイズは、ユーザーの入力に基づいてカスタマイズされます。私は現在、フロントエンドの残りの部分にtomcat/JSPを使用しています。私がしたいのは、JSPでHTMLテンプレートを作成して条件付きHTMLコードを出力することですが、このHTML出力をユーザーに表示する代わりに、このコードをいくつかのファイルに保存したいと思います。ユーザー、画像、CSSファイル、jsファイル)。 JSPファイルを実行する偽のコンテナを作成する方法を知っておく必要があります(プロセスには変数が含まれ、評価されます)。JSP出力をキャプチャしてファイルに保存

JSPコードの出力を傍受するためにサーバーフィルタを使用する方法については読んでいますが、これはうまくいきません。a)複数のHTMLファイルを作成する必要があり、b)ユーザーに異なるコンテンツを表示する必要があるここにはzipファイルがあります。ダウンロードしてください)処理中のJSPの出力ではありません。

ありがとうございます!

答えて

4

ここにアイデアがあります。サーブレットからユーザーからの入力を受け入れるサーブレットを作成し、java.net.HttpURLConnectionを使用して入力をJSPページに渡して結果を取得します。

URL urlPage = new URL(url); 
HttpURLConnection conn = (HttpURLConnection)urlPage.openConnection(); 
conn.connect(); 
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); 

//then loop through lines of webpage with br.readLine(); 

は、その後、あなたのサーブレットであなたが引っ張っすべてのファイルを圧縮することができますし、ユーザー

0

なぜwgetを使用しないのですか?実際のコンテナにページをロードし、wgetを使用してコンテナから生成されたページを取得することができます。ファイルからURLのリストを取得し、テキストは、ブラウザのビュー-srcの中に表示されるのと同じようにあなたのためにそれらをダウンロードするwgetコマンドでこのオプションを使用する

--input-file=FILE read URLs from file. 

また、WindowsとLinuxではwgetを利用できます。

+0

アイデアありがとう、私はwgetが大好きですが、それは私のニーズに合っていません –

+0

@Royジップビットとは関係ありませんか? – leeand00

+0

@ leeand00特に、これは複数の環境で動作するJava環境であり、Windows、Mac、Linuxの開発者が同じコードベースで作業しているので、ソリューションはJavaベースである必要があります –

1

URLConnectionを開き、出力を一時ファイルまたはバッファに読み込むことによって、JSPを呼び出すサーブレットを作成できます。それはそれを圧縮し、ジップを書き出します。

1

にそれを返す私は本当に私はあなたの質問を理解していないが、私はそれで刺しかかります。なぜサーブレットを作成し、それは次のように使用してJSPファイルを呼び出す必要はありませ:


    RequestDispatcher d = getServletContext().getRequestDispatcher(jspName); 
    d.forward(request, response); 

は、JSPが、フォーム/ユーザー入力された値を持つフロントエンドを示してもらいます。フォームが完成したら、フォームを提出してください。どの時点でjspはサーブレットにコンテキストを返します。ここで値を解析し、どのファイルを作成してユーザーに返すかを決定します。ユーザーに表示する内容を決定したら、それを別のJSPにスローし、そのJSPにコンテキストを渡します。

これは2通りの方法で実行できます。あなたは返すことを望んでいる異なったファイルタイプのために異なったjspを作成し、単に適切なものを呼び出すことができます。または、あなたはあなたのJSPに必要な構造体/値を渡すことができます。要求にそれらを埋め込み、それをJSPの中に入れます。このファクトを使用して、渡されたパラメータ(リクエストに埋め込まれている)に基づいて適切な情報を表示する単一のJSPを作成できます。

ご質問の点を完全に忘れた場合は、この回答を削除してください。

編集:いずれの方法でも、リクエスト内に値を埋め込む必要があります。

0

また、そのようなジョブ専用に設計された多数のライトテンプレートエンジンを試すこともできます。それは私が似たような仕事をしていた時にしたことです。例えばVelocityをチェックしてください。

関連する問題