JSPエンジンの動作原理


JSP実行環境:
JSPコードを実行するにはサーバにJSPエンジンをインストールする必要があります.一般的なエンジンはWebLogicとTomcatです.これらJSP対応のwebサーバを構成した後.クライアントがブラウザでJSPページにアクセスできるようになりました.デフォルトポートは一般的に7001です.
JSPライフサイクル:
JSPが要求を処理する方法は,これらの要求をすべてサーブレットとして統一することである.そのため、JSPの多くの機能とライフサイクルは、Javaサーブレット技術標準によって定義されています.この制限は,動的コンテンツの面でより顕著である.だからJSPを学ぶ時、サーブレットの内容と標準を復習する必要があります.
JSPネットワークアプリケーションサーバフレームワーク:
J 2 EE仕様に準拠したサーバが構築されると、JSPページが作成され、HTMLページにJSPスクリプトが埋め込まれ、そのページがJSPページとなる.JSPスクリプトは、<%...%>、または……です.JSPのワークフローは、HTMLのコードを読むとそのままクライアントに出力され、埋め込みJSPスクリプトを読むと、これらのスクリプトに対して別の翻訳や処理を行い、出力を得てからクライアントに出力される.
JSPネットワークアプリケーションのフレームワークを簡単なページ作成で理解します.
1.JSPクライアントインタラクション
JSPの大部分の仕事はクライアントと対話することである.クライアントは一般的にブラウザを指し、サーバ側に配置されたJSPページと対話します.JSPスクリプトのJava文はすべてサーバで実行され,サーバはクライアントからの要求を受け,一定の処理を経てクライアントに結果を返し,クライアントはHTMLコードのみを得る.次はJSPのHelloWorldプログラムコードです.

  
  
  
  
  1. <html> 
  2. <head> 
  3. <title>HelloWorld for JSP</title> 
  4. </head> 
  5. <body> 
  6. <h1>HelloWord for JSP</h1> 
  7. <%out.println("<h3>Hello World!</h3>");%> 
  8. </body> 
  9. </html> 

2.インタラクティブプロセスの流れ
一般的なクライアントとサーバ側のインタラクションでは、HTTPプロトコルを使用し、クライアントは次の4つのステップでもサーバセグメントでインタラクションを行います.
(1)クライアント側とサーバ側の接続
(2)クライアント要求の送信
(3)サーバがクライアントに応答する
(4)クライアントが接続を閉じる
すべてのリクエストはクライアントによってアクティブに発行され、サーバは常に受動的なリスニング状態にある.ユーザーはブラウザにアクセスするアドレスを入力し、Enterキーを押して確認すると、ブラウザがサーバに接続し始め、このときからインタラクティブなプロセスが開始されます.ブラウザはしばらく待つことでサーバから応答し,対応する情報をHTML方式でユーザに提示する.ユーザは,ウェブサイトを閲覧する過程で,実際にはこのようなインタラクティブな応答過程を多く含んでいる.クライアントとJSPページのインタラクションでは,サーバのみが要求を受信し,応答を返す動作が異なる可能性があり,その他は上記の手順とほぼ一致する.基本的な状況は次のとおりです.
(1)サーバは,1つの要求を受け取った後にまずこの要求を分析し,要求されたページが一般的なHTMLページである場合,サーバは直接HTMLページを読み出してクライアントに返す.
(2)クライアントがJSPページを要求した場合,サーバはJSPエンジンを呼び出して要求したJSPページを翻訳処理し,翻訳と処理後のHTMLをクライアントに返す.
(3)JavaBeansコンポーネントに遭遇した場合、JSPエンジンは対応するJavaBeansコンポーネントを呼び出し、JavaBeansの戻り値を取得し、最後にJSPページに戻る
3.JSPエンジンの動作原理
JSPページが最初にアクセスされると、JSPエンジンは次のステップを実行します.
(1)JSPページを1つのサーブレットに翻訳し、このサーブレットはjavaファイルであり、同時に完全なjavaプログラムでもある.
(2)JSPエンジンはjavaコンパイラを呼び出してこのサーブレットをコンパイルし,実行可能ファイルclassを得る.
(3)JSPエンジンはjava仮想マシンを呼び出してclassファイルの実行を解釈し,クライアントに送信する応答を生成し,クライアントに送信する.
以上の3つのステップは、JSPページが最初にアクセスされたときにのみ実行され、classファイルが生成されたため、以降のアクセス速度が大幅に向上します.JSPエンジンストリートのクライアントからのアクセス要求に対しては,まず要求されたJSPページが対応するサーブレットよりも新しいかどうかを判断し,新しい場合は対応するJSPを再コンパイルする必要がある.
4.要求情報の処理
ほとんどのインタラクションの過程で、1つのJSPページはまずユーザーが提出した要求を分析し、その後、ユーザーが提出したデータや要求を受信する方法など、要求から有用なデータを得て、それから相応の処理を行う.これは、入力パラメータを得る方法と、ユーザの他の情報を得る方法を理解する必要がある.
(1)入力パラメータを得る方法
インタラクティブなプロセスでは、サーバはクライアントからいくつかのデータを取得し、プロセスの処理を支援する必要があります.これらのデータには、ユーザー名、パスワードなどのユーザー認証データと、その他の情報が含まれます.これらのデータの担体は,ユーザが提出した要求である.リクエストの構成には主に2つの部分があります.1つはヘッダ情報です.ヘッダ情報には、要求の方法(GETおよびPOST)、要求されたURL、およびブラウザ情報が含まれる.その他の情報には、いくつかのデータ情報が含まれています.
まず、GETメソッドがリクエストを送信する場合、このメソッドはクライアントがサーバセグメントに情報を要求するために使用されるため、リクエストには情報体が含まれていないことを理解する.ユーザは要求の内容をパラメータとしてURLの後ろに添付して送信するしかなく、パラメータ間は「&」記号で区切る、例えばコード:典型的なGET要求のフォームget.html www.189works.com

  
  
  
  
  1. <html> 
  2. <head> 
  3. <title>Get</title> 
  4. </head> 
  5. <body> 
  6. <h1>Get Method</h1> 
  7. <form action = "submit.jsp" method = "GET"> 
  8.     username<input name = "uername" value = "aaa"><br> 
  9.     password<inpput type = password name = "password" value = "111111"><br> 
  10.     <input type = submit value = "submit"> 
  11. </form> 
  12. </body> 
  13. </html> 

(コードにはフォームがあり、フォームが定義されているときに属性method="GET"が定義されている.これはフォームの発行方法がGETであることを示している.このフォームはサーバに2つのパラメータを提出し、そのうちの1つはusernameであり、デフォルト値はaaaであり、もう1つはpasswordであり、そのデフォルト値は111111である.)
このページは入力データを得ただけでsubmit.しかありません.JSPはこのページに提出されたデータを実現することができます.これはJSPが必要です.コードは以下の通りです.submit.JSP

  
  
  
  
  1. <html> 
  2. <head> 
  3. <title>submit</title> 
  4. </head> 
  5. <body> 
  6. <h1>submit</h1> 
  7. request method:<%=request.getMethod() %><br> 
  8. user name:<%=request.getParameter("user") %><br> 
  9. password:<%=request.getParameter("password") %><br> 
  10. </body> 
  11. </html> 

このJSPページでは、現在のリクエストのタイプを取得するためのgetMethodと、指定したパラメータの値を取得するためのgetParameterの2つの方法が使用されています.get.htmlでsubmitボタンをクリックすると、フォームリクエスト方法、ユーザー名、パスワードなどの情報が表示されます.www.189works.com
(2)その他の情報を得る方法
非ユーザが入力した他のパラメータ情報を得るには,他の方法が必要である.以下にクライアント情報を得るための簡単なプログラムを示す.このプログラムに基づいて,クライアント情報をどのように得るかの大まかな考え方を初歩的に理解することができる.コードは次のとおりです.

  
  
  
  
  1. <html> 
  2. <head> 
  3. <title> </title> 
  4. </head> 
  5. <body> 
  6.     <h1> URL</h1><br> 
  7.     <%=request.getQueryString()%><br> 
  8. </body> 
  9. </html>