3

JavaとTomcatを使用するのはこれが初めてであり、すべてがどのように組み合わされるかについて少し混乱しています。私は際限なくグーグルで検索しましたが、いくつかの概念に頭を悩ませているようには見えません。

bufferedImagesを出力するJavaプログラムを完成させました。私の目標は、最終的にこれらの画像をWebページに表示することです。

現在NetBeansで実行されているJavaファイル(.java)がサーブレットやJSPとどのように相互作用するかを理解するのに問題があります。

理想的には、サーブレットまたはJSP(どちらがどのように機能するかについて100%明確ではありません。ただし、さまざまな例を見ると構文はほとんど理解できます)は、プログラムの実行時に出力(bufferedImages)を取得し、HTMLファイルが何らかの形で相互作用する可能性があります。画像をWebageに表示できるように、何をしていても。これが可能かどうかはわかりません。誰かが物事を進めるための一般的な順序を提案できれば、それは素晴らしいことです。

私が見つけたすべての例/チュートリアルでは、誰も.javaファイルを使用していません-WEB-INFフォルダーに.classesがあります-人々がJavaプログラムで完全に使用しているようには見えません。ただし、出力を取得してWebアプリケーションで使用できるように、.javaプログラムを実行する必要があります。

一般的なガイダンスをいただければ幸いです。

4

2 に答える 2

3

この種のドキュメントは悲しいことに不足していると思います。あまりにも多くの人が例が説明であると考えています、そしてあなたが例から得ることができるすべての素晴らしいことのために、時々説明はそれらの1つではありません。あなたが言及した全体的な概念のいくつかを説明しようと思います。残念ながら、バッファリングされた画像の表示の問題を直接解決することはできません。

Tomcatおよびそのような他のプログラムは「Webサーバー」です。これらは、他のコンピューターからのインターネット接続を受け入れ、特定の形式で情報を返すプログラムです。ブラウザに「www」アドレスを入力すると、そのアドレスの文字列は最終的に(「リクエスト」として)Webサーバーに送られ、Webページ(「レスポンス」とも呼ばれます)が返されます。Tomcat、Apache、Jetty、JBoss、およびWebSphereはすべて、この種のことを行う同様のプログラムです。ワールドワイドウェブの元の形式では、リクエスト文字列はサーバーマシン上のファイルを表しており、ウェブサーバーの仕事はその(html)ファイルをブラウザに表示するために返すことでした。

サーブレットは、一部のWebサーバーで実行される一種のJavaプログラムです。サーブレット自体は、javax.servlet.Servletインターフェースによって定義されたメソッドを持つJavaクラスです。サーブレットを処理するWebサーバーでは、構成ファイルに精通している人がWebサーバープログラムに特定の要求を受け入れ、サーバーからHTMLファイル(またはその他)を返す代わりにサーブレットコードを実行するように指示できます。サーブレットは、その性質上、コンテンツ自体を返します。HTMLを出力するプログラムを考えれば、正しい方向に進んでいます。

しかし、プログラムから完全なHTMLを出力するのは面倒なことがわかります。つまり、ある種のプログラミング言語が必要な「重労働」とはあまり関係のない、退屈な量のHTMLがあります。データベースの照会や結果のフィルタリングなどを行うには、Java(またはいくつかの言語)が必要ですが、最新のWebページに必要なその他の何百ものタグをJavaで挿入する必要はありません。

したがって、JavaServerPage(JSP)は、HTMLとサーブレットに関連するものを組み合わせた、特殊な種類のハイブリッドです。JavaコードをJSPファイルに直接入れることもできますが、通常はhtmlのような「タグ」を使用する方がよいと考えられています。タグは「JSPコンパイラ」によって解釈され、サーブレットに変換されます。したがって、JSPページの作成者は、これらのタグの使用方法を学習します。これらのタグは、(正しく構築されている場合)Javaプログラミング言語よりもWebページ作成者にとって論理的であり、実際にはプログラマーである必要はありません。したがって、プログラマーは、このコンテンツ志向の人と協力して、ページの外観を説明するために使用するページのタグを作成し、次にプログラマーがプログラミングを行い、コンテンツ担当者がそれを使用してWebページを作成します。

あなたの特定の問題については、私たちはあなたを助けるためにもっと詳細が必要になります。このプログラムを実行し、画像を生成するリクエストの一部としてユーザーから提供された情報を使用することを想定していますか?または、画像は一度生成され、今はそれらを表示する必要がありますか?実際、それは別の質問のトピックだと思います。

これはあなたが始めるのに十分なはずです。詳細を知るために、これらのことに関するウィキペディアの記事を提案します。幸運を祈ります。これがお役に立てば幸いです。


この補遺は、スライドショーをやりたいというコメントの後に提供されました。

重要なWebプログラミングの概念は、そのクライアントサーバーと要求/応答の性質です。従来の非JavascriptWeb環境では、クライアント(読み取りブラウザー)がサーバーに要求を送信し、サーバーがバイトを送り返します。バイトのストリームが終了した後は、2台のコンピューター間に継続的な接続はなく、そのバイトのストリームを継続できる時間には制限があります。さらに、この要求と応答以外では、サーバーは通常、クライアントが要求しない限り、クライアントに何も送信する機能を備えていません。クライアントはデータの交換を「推進」します。

したがって、たとえば、サーバーが追加の画像を表すバイトを定期的に送信する「スライドショー」は、HTMLが機能する方法ではありません(または機能するように意図されていました)。ユーザーの制御下で1つを実行できます。ユーザーが次の画像ごとにボタンを押すと、ブラウザが次の画像のリクエストを送信し、前の画像があった場所に表示されます。これは、要求と応答のパラダイムに適合します。

現在、Javascriptを使用して自動スライドショーの効果が可能です。Javascriptは、Javaに基づいていますが、それ以外は無関係であり、スクリプト言語です。これはHTMLページの一部であり、ページとともにブラウザにダウンロードされ、ブラウザの環境で実行されます(サーバー上で実行されるJSP /サーブレットとは対照的です)。Javascriptでタイマーを作成すると、N秒間待機して、サーバーに別のリクエストを送信できます(別の画像など)。Javascriptには独自のルールなどがありますが、それでもHTMLをやっているだけではないことを覚えておくことをお勧めします。

スライドショーが目的の場合は、JSPはまったく必要ありません。表示する画像の場所、ラベルやテキストなど、スライドショーを停止するためのボタンなどをHTMLで、追加の画像を要求するためのJavascriptを含むHTMLページを作成できます。

JSPを使用してページを作成できます。ページの複雑さによっては役立つ場合がありますが、スライドショーの次の画像を取得するという重要な機能には役立ちません。ブラウザがJSPページを要求した場合:

  1. リクエストはサーバーに送信され、
  2. サーバーが必要なページを判別し、それがJSPページであることを確認します。
  3. サーバーは、そのページをまだサーブレットにコンパイルしていない場合は、サーブレットにコンパイルします。
  4. サーブレットが実行され、Javaにコンパイルされたタグに従ってHTML出力が生成されます。
  5. サーバーはHTMLをブラウザに返します。

その後、サーバーが完成し、別のリクエストが行われるまで、それ以上のバイトはブラウザに送られません。

繰り返しになりますが、これがお役に立てば幸いです。スライドショーの例から、Webプログラミング、サーバー、HTML、JSP、およびJavascriptについて理解する必要のあるいくつかの基本的な概念が明らかになりました。これらすべての旅に幸運を祈ります。そして、あなたがそれを必要と思われるよりも少し複雑であると考えるようになると、まあ、あなたは最初ではないでしょう。

于 2013-03-26T03:50:48.267 に答える
0

Javaクラスのメソッドを呼び出してBufferedImageを取得するJSPを作成できます。次に、コンテンツタイプを適切な画像タイプに設定する必要があります。

response.setContentType()

トリッキーな部分は、JSPから画像を印刷する必要があるため、次のように呼び出す必要があることです。

response.getOutputStream()

JSPから、そしてOutputStreamそれであなたはあなたのBufferedImageのバイトを渡さなければなりません。

そのJSPでは、HTMLを印刷することはできず、画像のみを印刷できることに注意してください。

概念について少し混乱しているように思われるので、どこでさらに明確にする必要があるのか​​わかりません。

ところで:JSPは、HTMLとJavaコードを一緒に書くためのより簡単な構文を持つ単なるサーブレットです。

于 2013-03-26T04:04:02.883 に答える