JSP は Servlet の拡張です。JSP が登場する前に、すでに Servlet 技術が登場していました。Servlet は、「出力ストリーム」を使用して HTML ページを動的に生成します。すべての HTML タグと HTML ページに表示されるすべてのコンテンツが含まれます。簡単に言うと、サーブレットの出力ストリームを使用して HTML タグから HTML ページを生成します。時間が経つにつれて、サーブレットには大量の HTML タグ、大量の静的テキストやフォーマットなどが含まれるようになり、その結果、サーブレットの開発効率が非常に低くなってしまいました。 JSP が誕生したとき、JSP はこの状況を補います。JSP は標準の THML ページに JAVA コードを埋め込み、静的な部分を JAVA プログラムで制御する必要がありません。データベースから読み取る必要があるページ コンテンツまたは必要なページ コンテンツのみを埋め込みます。動的に生成されるファイルは、JAVA スクリプトによって制御できます。
JSP は主に 2 つの部分で構成されます。
(1) 静的部分: 標準 HTML タグ、静的ページのコンテンツ。これらの内容は静的 HTML ページと同じです。(2) 動的部分: Java プログラムによって動的に生成される、Java プログラムによって制御されるコンテンツ。
以下は最も単純な JSP コードです:<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <html> <head> <title>欢迎</title> </head> <body> 欢迎学习Java JSP!现在时间是:<%out.println(new java.util.Date());%> </body> </html>ページ上の太字のコードは <% と %> の間に配置されており、これらが静的コンテンツではなく Java スクリプトであることを示しています。このようにして、Java コードを HTML ページに埋め込むことができ、動的 JSP ページになります。表面的に分析すると、JSP ページは Java クラスを必要とせず、Java のオブジェクト指向特性から完全に切り離されているように見えます。しかし、実際には、JSP はサーブレットの特別な形式であり、各 JSP ページはサーブレットのインスタンスです。
動作原理
(1) ユーザーが JSP ページにアクセスすると、サーブレット コンテナ (Tomcat) がリクエストを発行します。 (2) 初めてページをリクエストする場合、またはページが変更された場合、サーブレット コンテナはまず JSP ページ (test.jsp とする) をサーブレット コード (test.java) に変換し、次に変換する必要があります。 (test.classファイル); この処理(コンパイル)にはある程度の時間がかかるため、初めてアクセスする場合やjspファイルを変更する場合はアクセス時間が少し長くなります; (3) JSP コンテナは、サーブレットから変換された JSP を呼び出す責任を負い、これらのサーブレットは、対応するユーザー要求にサービスを提供する責任を負います (たとえば、クライアントがフォームを送信し、それを処理するためにサーブレット: formprocessor.java が必要な場合、コンテナはスレッドを作成し、formprocessor.java を呼び出してリクエストを処理します); ユーザーに複数のリクエストがある場合、コンテナは複数のリクエストを処理するために複数のスレッドを作成します;
注:
JSP ページは、Tomcat Weblogic、jboss Wait などの JSP サーバーで実行する必要があります (ちなみに、Apache と Tomcat は別のものです。多くの人は、apache が Tomcat であると考えています。実は間違った理解です!~、tomcat は Apache の単なるサブプロジェクトであり、Apache は WEB アプリケーション サーバーとして使用され、Tomcat は JSP またはサーブレットの Web コンテナであると言えます);
JSP への訪問者JSP ページは標準の HTML ページとしてクライアントに配信されるため、ページにはクライアントをインストールする必要がなく、Java を実行できる実行環境さえもインストールする必要がありません。関連する学習の推奨事項:
Java 基本チュートリアル以上がJSPはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。