Webコンテナの外側のJSP [重複
質問
この質問にはすでに答えがあります:
- JavaからJSPを直接実行します 4つの回答
多くの「ファイル」を持つプロジェクト(Webサーバー.htmlまたはJSPファイルなど)を開始しています。これらの各ファイルには、たとえばファイルに「JSP」が埋め込まれています。
こんにちは<%= "John Doe"%>
次に、このファイルを「JSPコンパイラ」からプログラム的に送信し、出力ファイルを取得したいと思います。
Tomcats jspservletを見て、コードからサーブレットオブジェクトに到達することはできないように思われるため、行き止まりになりました。また、TomcatにあるApache Jasperコードをダウンロードして、JSpservletが何をしているのかを把握しましたが、これは長いルートのようです。
誰かが提案やアイデアを持っていますか?
私はJSPがWeb指向であることを知っていますが、それは私のために働くでしょう。
解決
私自身の質問に答えるために:)
Tomcatのコネクタインターフェイスを実装するクラスを作成しました。これにより、Tomcatが提供するすべてのエントリポイントを使用することができました。
他のヒント
それが長いルートです。テンプレートを使用してファイルを生成する方法をお探しですか?この場合、VelocityまたはFreemarkerの方が良いかもしれません。特に、HTMLを生成したくない場合。
あなたはその出力を取得したいだけですか?最も簡単な方法は、ServletContainerをインストールし、WebAppを展開して使用することです URL#openStream()
を取得する InputStream
それの。
InputStream response = new URL("http://localhost/context/page.jsp").openStream();
Tomcatは、WebアプリのJSPファイルをコンパイルし、各Webアプリの特別なフォルダーに配置します。
できることは、Tomcat WebAppsディレクトリ内のwhate.warディレクトリ内のユーザーから送信されたJSPファイルを定期的にダンプするスクリプトを作成することです。
そうすれば、TomcatはJSPを自動的にコンパイルし、出力httpservletコードを提供します。
次に、これらのJSPファイルのそれぞれのコンパイル例外については、Tomcatログを確認できます。
それを行うことについてのこの記事をご覧ください 蟻 Jasperコンパイラを使用してから Apache Webサイト.