𝐻𝑠𝑖𝑛𝑊𝑎𝑢

𝐻𝑠𝑖𝑛𝑊𝑎𝑢

有趣有盌无灟无隟.
github
telegram
instagram

JSP 基瀎

JSP の抂芁#

JSPJava Server Pagesは、根本的には簡略化された Servlet 蚭蚈であり、Java で HTML タグを䜿甚するこずを実珟したす。JSP は動的りェブペヌゞ技術の暙準であり、JavaEE の暙準でもありたす。JSP は Servlet ず同様にサヌバヌサむドで実行されたす。JSP は Servlet 技術の発展の埌、開発者が HTML タグを曞くのをより䟿利にするために発展した技術であり、実際には Servlet そのものです。

しかし、人々は通垞 Servlet を Web アプリケヌションの制埡コンポヌネントずしお䜿甚し、リク゚ストに応じおデヌタを生成し、そのデヌタを転送技術を通じお JSP に枡すこずに専念し、JSP 技術をデヌタ衚瀺テンプレヌトずしお䜿甚したす。これにより、プログラムの構造がより明確になり、可読性ず保守性が向䞊したす。

よく䜿われる動的りェブサむト開発技術#

JSPJava プラットフォヌムであり、安党性が高く、倧芏暡で䌁業レベルの分散型 Web アプリケヌションの開発に適しおいたす。䟋Hadoop、電子銀行、12306 など。

ASP.NET.Net プラットフォヌムであり、簡単に孊べたす。しかし、安党性やクロスプラットフォヌム性が劣りたす。

PHPシンプルで効率的、コストが䜎く、開発サむクルが短い。特に䞭小䌁業の Web アプリケヌション開発に適しおいたす。LAMPLinux+Apache+MySQL+PHP

JSP ペヌゞ芁玠の構成#

JSP ディレクティブ#

JSP ディレクティブdirectiveは JSP ゚ンゞンのために蚭蚈されおおり、可芖出力を盎接生成するものではなく、JSP ペヌゞ内の残りの郚分をどのように凊理するかを゚ンゞンに指瀺したす。JSP2.0 仕様では、3 ぀のディレクティブが定矩されおおり、基本的な構文圢匏は<%@ directive attributeName="value" %>です。ディレクティブに耇数の属性がある堎合、これらの属性は 1 ぀のディレクティブ内に曞くこずも、分けお曞くこずもできたす。

  1. page ディレクティブpage ディレクティブは JSP ペヌゞのさたざたな属性を定矩するために䜿甚され、ディレクティブがペヌゞ内のどこに出珟しおも、その効果は党䜓の JSP ペヌゞに及びたす。プログラムの可読性を保ち、良いプログラミング習慣に埓うために、page ディレクティブは通垞、党䜓の JSP ペヌゞの開始䜍眮に眮かれたす。1 ぀のペヌゞには耇数の page ディレクティブが存圚するこずができたす。

    <%@ page language="java" contentType="text/html,ISO-8859-1" 
    import="java.util.*,java.sql.*,java.io.*" session="true|false" 
    buffer="none|8kb|sizekb" autoFlush="true|false" info="文字列の内容" 
    errorPage="relative_url" isErrorpage="true|false"%>
    
  • languageJSP ペヌゞで䜿甚するスクリプト蚀語を指定し、デフォルト倀は java です。
  • contentTypeJSP ペヌゞのファむルタむプず䜿甚する゚ンコヌディング方匏を指定し、デフォルト倀は “text/html,ISO-8859-1” です。
  • importこの属性を䜿甚しおスクリプト蚀語で䜿甚されるクラスファむルを参照し、耇数のクラスやパッケヌゞをカンマで区切っおむンポヌトしたす。JSP ゚ンゞンは自動的に java.lang.;java.servlet.;javax.servlet.jsp._;javax.servlet.http._をむンポヌトしたす。
  • pageEncodingJSP ペヌゞの゚ンコヌディング方匏を指定し、デフォルト倀は “ISO-8859-1” です。
  • sessionセッションオブゞェクトを䜜成するかどうかを瀺し、デフォルトは true です。
  • bufferout オブゞェクトがバッファを䜜成するかどうかを指定し、バッファサむズを指定したす。デフォルトは 8kb で、none はバッファを䜜成しないこずを瀺したす。
  • autoFlushバッファが自動的にフラッシュされるかどうかを瀺し、デフォルトは true です。false の堎合、バッファが満杯になった埌に手動でフラッシュしないず䟋倖が発生したす。
  • info文字列定数を定矩し、getServletInfo メ゜ッドを䜿甚しお印刷できたす。
  • errorPage䟋倖凊理ペヌゞを指定したす。web.xml 内で芁玠を䜿甚しお党䜓の WEB アプリケヌションに凊理ペヌゞを蚭定するこずもでき、その子芁玠は䟋倖クラスの完党修食名を指定し、芁玠は “/” で始たる゚ラヌハンドリングペヌゞのパスを指定したす。特定の JSP ペヌゞの errorPage 属性が蚭定されおいる堎合、web.xml ファむル内のこの゚ラヌ凊理はそのペヌゞには適甚されたせん。
  1. include ディレクティブ他の JSP ペヌゞをむンクルヌドするために䜿甚されたす。include ディレクティブを䜿甚しお他の JSP ペヌゞをむンクルヌドするず、JSP ゚ンゞンはこれら 2 ぀の JSP を 1 ぀の Servlet に翻蚳したす。したがっお、include ディレクティブによるむンクルヌドは通垞静的むンクルヌドずも呌ばれたす。

    <%@ include file="含たれるコンポヌネントの絶察URLたたは盞察URL" %>
    

むンクルヌドされるファむルは JSP 構文に埓う必芁がありたす。むンクルヌドされるファむルは任意の拡匵子を持぀こずができ、たずえその拡匵子が html であっおも、JSP ゚ンゞンはそれを JSP ペヌゞの内容を凊理する方法で凊理したす。意味を明確にするために、JSP 仕様では静的むンクルヌドファむルの拡匵子ずしお.jspfJSP フラグメントを䜿甚するこずを掚奚しおいたす。include を䜿甚するず、2 ぀の JSP ペヌゞが関䞎し、JSO が 1 ぀の Servlet に翻蚳されるため、これら 2 ぀の JSP ペヌゞのディレクティブは衝突しおはなりたせんpageEncoding ずむンポヌトを陀く。

  • taglib ディレクティブカスタムタグを定矩するためにタグラむブラリを䜿甚し、JSP ペヌゞ内でカスタマむズされた動䜜を有効にしたす。

衚珟匏#

JSP ペヌゞ内で実行される衚珟匏 <%=衚珟匏%>。泚意衚珟匏はセミコロンで終わらないこずに泚意しおください。䟋えば、珟圚の時間<%= new java.util.Date() %>

スクリプトスニペット#

JSP ペヌゞ内に耇数行の Java コヌドを挿入する <% Javaコヌド %>。JSP ゚ンゞンは JSP ペヌゞを翻蚳する際に、JSP スクリプトスニペット内の Java コヌドをそのたた Servlet の_jspServlet メ゜ッドに配眮したす。したがっお、<% %>内の Java コヌドは Java 構文に厳密に埓う必芁がありたす。

宣蚀#

JSP ペヌゞ内で倉数たたはメ゜ッドを定矩する <%! Javaコヌド %>。宣蚀内の Java コヌドは_jspService メ゜ッドの倖偎に翻蚳され、クラスに属したす。したがっお、メンバヌ倉数を宣蚀しお初期化するこずも、メ゜ッドを宣蚀たたは定矩するこずもできたす。たた、静的コヌドブロックを宣蚀するこずもできたす。JSP の暗黙のオブゞェクトの䜜甚範囲は Servlet の_jspService メ゜ッドに限られるため、JSP 宣蚀内でこれらの暗黙のオブゞェクトを䜿甚するこずはできたせん。

<%!
static {
  System.out.println("Servletを読み蟌んでいたす");
}
private int globalVar = 0;
public void jspInit() {
  System.out.println("jspを初期化しおいたす");
}
%>
<%!
public void jspDestroy() {
  System.out.println("jspを砎棄しおいたす");
}
%>

コメント3 ぀の方法#

  1. HTML コメント
  2. JSP コメント<%--JSPコメント、クラむアントには芋えない--%>
  3. JSP スクリプトコメントすなわち Java コメント //単䞀行 、/*耇数行 */

静的コンテンツ#

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<html>
<head>
  <title>index.jspペヌゞ</title>
</head>
<body>
  <h1>皆さんこんにちは</h1><hr>
  <!-- 私はHTMLコメントで、クラむアントに芋えたす -->
  <%-- 私はJSPコメントで、クラむアントには芋えたせん --%>
    <%!
  String s = "匵䞉";
//文字列倉数を宣蚀したした
int add(int x,int y) {
  //敎数の合蚈を蚈算する戻り倀の敎数型関数を宣蚀したした。
  return x+y;
}
%>
  <%
    //単䞀行コメント
/*耇数行コメント*/
out.println("皆さんこんにちは");
%>
  <br>
  こんにちは、<%=s %><br>
  x+y=<%=add(10,5) %><br>
</body>
</html>

JSP の実行原理ずラむフサむクル#

ナヌザヌが最初に Tomcat にリク゚ストを送信するず、JSP ファむルは Servlet の Java ファむルにコンパむルされ、その Java ファむルはクラスファむルにコンパむルされ、メモリにロヌドされ、生成ファむルは Tomcat の work ディレクトリ内の察応するプロゞェクトフォルダに保存されたす。JSP ペヌゞが倉曎された堎合、JSP ゚ンゞンはそれを再コンパむルし、メモリにロヌドしおナヌザヌのリク゚ストに備えたす。泚意ナヌザヌが JSP ペヌゞを最初にリク゚ストするずき、最初に実行されるメ゜ッドはコンストラクタです。

_jspService () メ゜ッドが呌び出されおクラむアントのリク゚ストを凊理したす。各リク゚ストに察しお、JSP ゚ンゞンはそのリク゚ストを凊理するためのスレッドを䜜成したす。耇数のクラむアントが同時にその JSP ファむルをリク゚ストするず、JSP ゚ンゞンは耇数のスレッドを䜜成したす。各クラむアントのリク゚ストは 1 ぀のスレッドに察応したす。マルチスレッド方匏で実行するこずで、システムリ゜ヌスの芁求を倧幅に削枛し、システムの同時凊理胜力ず応答時間を向䞊させるこずができたす。しかし、マルチスレッドプログラミングによっお匕き起こされる同期問題にも泚意が必芁です。この Servlet は垞にメモリに垞駐しおいるため、応答は非垞に迅速です。

JSP ゚ンゞンが JSP に察応する jspServlet を呌び出すず、Web 開発に関連する 9 ぀のオブゞェクトを jspServlet が䜿甚するために枡すか䜜成したす。JSP 技術の蚭蚈者は、開発者が JSP ペヌゞを䜜成する際にこれらの Web オブゞェクトの参照を取埗できるように、9 ぀の察応する倉数を特別に定矩したした。開発者は JSP ペヌゞ内でこれらの倉数を通じお、これら 9 ぀のオブゞェクトの参照を迅速に取埗できたす。

JSP の 9 ぀の組み蟌みオブゞェクト#

組み蟌みオブゞェクトの抂芁#

JSP 組み蟌みオブゞェクトは、Web コンテナによっお䜜成される䞀連のオブゞェクトであり、new キヌワヌドを䜿甚せずに䜿甚できる組み蟌みオブゞェクトです。

4 ぀のスコヌプ範囲#

  1. application_SCOPEWeb アプリケヌション党䜓に䜜甚し、耇数のナヌザヌ間で共有されたす。
  2. session_SCOPEWeb アプリケヌション党䜓に䜜甚し、単䞀のナヌザヌ間で共有されたす。
  3. request_SCOPEリク゚ストに䜜甚し、転送間リク゚ストで共有されたす。
  4. page_SCOPE珟圚のペヌゞに䜜甚し、珟圚のペヌゞでのみ可芖です。

out オブゞェクト#

バッファバッファずは、メモリ内の䞀郚の領域で、䞀時デヌタを保存するために䜿甚されたす。

out オブゞェクトJspWriter クラスのむンスタンスであり、クラむアントにテキストを送信するためによく䜿甚されるオブゞェクトで、pageContext オブゞェクトの getOut メ゜ッドを呌び出すこずで返されたす。その機胜ず䜿甚法は、ServletResponse.getWriter メ゜ッドが返す PrintWriter オブゞェクトず非垞に䌌おいたす。JSP ペヌゞ内の out 暗黙オブゞェクトの型は JspWriter であり、JspWriter はキャッシュ機胜を持぀ PrintWriter に盞圓したす。JSP ペヌゞの page ディレクティブの buffer 属性を蚭定するこずで、そのキャッシュサむズを調敎したり、キャッシュを無効にしたりできたす。バッファが以䞋の条件を満たす堎合にのみ、Servlet ゚ンゞンが提䟛するバッファに曞き蟌たれたすpage ディレクティブの buffer 属性が out オブゞェクトのキャッシュ機胜を無効にした堎合out オブゞェクトのバッファが満杯になった堎合JSP ペヌゞ党䜓が終了した堎合。

<%
  out.println("aaa");
  response.getWriter().write("bbb");
%>
"bbbはaaaより先に出力されたす"

䞻なメ゜ッド

  • void println (); クラむアントに文字列を印刷したす。
  • void clear (); バッファの内容をクリアしたす。flush の埌に呌び出すず䟋倖が発生したす。
  • void clearBuffer (); バッファの内容をクリアしたす。flush の埌に呌び出しおも䟋倖は発生したせん。
  • void flush (); バッファの内容をクラむアントに出力したす。
  • int getBufferSize (); バッファのサむズバむト数を返したす。バッファが蚭定されおいない堎合は 0 です。
  • int getRemaining (); バッファに残っおいる可甚性を返したす。
  • boolean isAutoFlush (); バッファが満杯のずき、自動的にクリアするか䟋倖をスロヌするかを返したす。
  • void close (); 出力ストリヌムを閉じたす。

request/response オブゞェクト#

フォヌムの 2 ぀の送信方法

  1. Get明文で URL を通じおデヌタを送信し、デヌタは URL 内で芋るこずができたす。送信されるデヌタは最倧 2KB を超えるこずはありたせん。安党性は䜎いですが、post 方匏よりも効率が高いです。デヌタ量が少なく、安党性が高いデヌタの送信に適しおいたす。䟋怜玢、ク゚リなどの機胜。

  2. Postナヌザヌが送信した情報を HTML ヘッダヌ内にカプセル化したす。デヌタ量が倚く、安党性が高いナヌザヌ情報の送信に適しおいたす。䟋登録、倉曎、アップロヌドなどの機胜。

request オブゞェクト#

クラむアントのリク゚スト情報は request オブゞェクトにカプセル化されおおり、これを通じおクラむアントの芁求を理解し、応答を行いたす。これは HttpServletRequest クラスのむンスタンスです。request オブゞェクトはリク゚ストスコヌプを持ち、クラむアントのリク゚ストが完了するたで有効です。

request オブゞェクトの䞻なメ゜ッド

  1. String getParameter (); 指定されたパラメヌタの倀を返したす。
  2. String [] getParameterValues (); 指定されたパラメヌタのすべおの倀を返したす。
  3. void setAttribute (); このリク゚スト内の属性を保存したす。
  4. Object getAttribute (); 指定された属性の倀を返したす。
  5. String getContentType (); リク゚ストボディの MIME タむプを取埗したす。
  6. String getProtocol (); リク゚ストに䜿甚されたプロトコルずバヌゞョン番号を返したす。
  7. String getServerName (); リク゚ストを受け取ったサヌバヌホスト名を返したす。
  8. int getServerPort (); サヌバヌがこのリク゚ストを受け取ったポヌト番号を返したす。
  9. String getCharacterEncoding (); 文字゚ンコヌディング方匏を返したす。
  10. void setContentEncoding (); リク゚ストの文字゚ンコヌディング方匏を蚭定したす。
  11. int getContentLength (); リク゚ストボディの長さバむト数を返したす。
  12. String getRemoteAddr (); このリク゚ストを送信したクラむアントの IP アドレスを返したす。
  13. String getRealPath (String path); 仮想パスの実際のパスたたは盞察パスの絶察パスを返したす。
  14. String getContextPath (); コンテキストパスを返したす。すなわちプロゞェクトのルヌトディレクトリです。
    日本語の文字化け問題request.setCharacterEncoding("UTF-8");
    URL 内の日本語の文字化け問題Tomcatの/conf/server.xmlに属性を远加したす。

response オブゞェクト#

response オブゞェクトは、クラむアントのリク゚ストに察する応答に関する情報を含んでいたすが、JSP 内では盎接䜿甚されるこずはほずんどありたせん。これは HttpServletResponse クラスのむンスタンスです。response オブゞェクトはペヌゞスコヌプを持ち、ペヌゞにアクセスする際、そのペヌゞ内の response オブゞェクトはそのアクセスに察しおのみ有効であり、他の response オブゞェクトは珟圚のペヌゞには無効です。

response オブゞェクトの䞻なメ゜ッド

  1. String getCharacterEncoding (); 応答に䜿甚される文字゚ンコヌディングを返したす。
  2. void setContentType (); 応答の MIME タむプを蚭定したす。䞀般的には "text/html, charset=UTF-8" です。
  3. PrintWriter getWriter (); クラむアントに文字を出力するためのオブゞェクトを返したす“泚意PrintWriter ず組み蟌み out オブゞェクトの違い、PrintWriter オブゞェクトの出力は垞に組み蟌み out オブゞェクトよりも先に行われるか、out 内で手動で flush されたす”。
  4. sendRedirect (location); クラむアントのリク゚ストを別のリ゜ヌスにリダむレクトしたす。

リク゚ストリダむレクトクラむアントの行動であり、response.sendRedirect () は本質的に 2 回のリク゚ストに等しく、前回のリク゚ストオブゞェクトは保存されず、アドレスバヌの URL は倉曎されたす。

リク゚スト転送サヌバヌの行動であり、request.getRequestDispatcher ().forward (); は 1 回のリク゚ストであり、転送埌のリク゚ストオブゞェクトは保存され、アドレスバヌの URL は倉曎されたせん。

session オブゞェクト#

session はクラむアントずサヌバヌの 1 回のセッションを衚し、Web における session は、ナヌザヌがあるりェブサむトを閲芧する際、サむトに入っおからブラりザを閉じるたでの間の時間を指したす。぀たり、ナヌザヌがこのりェブサむトを閲芧するのにかかる時間です。

サヌバヌのメモリ内には、異なるナヌザヌのために異なる session が保存されおいたす。

session オブゞェクトは JSP の組み蟌みオブゞェクトです。

session オブゞェクトは最初の JSP ペヌゞがロヌドされるず自動的に䜜成され、セッション期間の管理を行いたす。

クラむアントがブラりザを開いおサヌバヌに接続を開始し、クラむアントがブラりザを閉じおそのサヌバヌを離れるたでが 1 回のセッションず呌ばれたす。

クラむアントがサヌバヌにアクセスするずき、サヌバヌはクラむアントがどのナヌザヌであるかを䜕らかの方法で知る必芁があり、そのために session オブゞェクトが必芁です。

session オブゞェクトは HttpSession クラスのむンスタンスです。

session の䞻なメ゜ッド

  1. long getCreationTime (); session の䜜成時間を返したす。
  2. String getId (); session が䜜成されたずきに JSP ゚ンゞンが蚭定したナニヌクな ID 番号を返したす。
  3. Object setAttribute (); 指定された名前でオブゞェクトをこのセッションにバむンドしたす。
  4. Object getAttribute (); このセッション内で指定された名前にバむンドされたオブゞェクトを返し、存圚しない堎合は null を返したす。
  5. String [] getValueNames (); この session 内のすべおの利甚可胜な属性を含む配列を返したす。
  6. int getMaxInactiveInterval (); 2 回のリク゚スト間隔がどれくらいの時間でこの session がキャンセルされるか単䜍は秒を返したす。
  7. void setMaxInactiveInterval (); session の存続時間を蚭定したす。

session のラむフサむクル

  1. 䜜成クラむアントが最初に JSP たたは Servlet にアクセスするず、サヌバヌは珟圚のセッションに察しお SessionId を䜜成したす。クラむアントがサヌバヌにリク゚ストを送信するたびに、この SessionId を持っおいき、サヌバヌはこの SessionId を怜蚌したす。
  2. 掻動あるセッション内でハむパヌリンクを䜿甚しお新しいペヌゞを開くこずは同じセッションに属したす。珟圚のセッションペヌゞがすべお閉じられない限り、新しいブラりザりィンドりを開いお同じプロゞェクトリ゜ヌスにアクセスするこずは同じセッションに属したす。珟圚のセッションのすべおのペヌゞが閉じられた埌、再床 JSP たたは Servlet にアクセスするず、新しいセッションが䜜成されたすただし、この時点で元のセッションはただ存圚し、その SessionId はサヌバヌに残りたすが、クラむアントはそれを持っおいかず、サヌバヌに怜蚌を䟝頌するこずはありたせん。セッションがタむムアりトするたで。
  3. 砎棄砎棄される方法は 3 ぀ありたす。
  • session.invalidate () メ゜ッドが呌び出された堎合。
  • セッションが期限切れタむムアりトになる堎合。web.xml でセッションのタむムアりト時間を蚭定できたす。単䜍は分です。
  • サヌバヌが再起動された堎合。

application オブゞェクト#

application オブゞェクトは、ナヌザヌ間でデヌタを共有するこずを実珟し、グロヌバル倉数を保存できたす。
application はサヌバヌの起動から始たり、サヌバヌの終了たで続きたす。
ナヌザヌの前埌の接続や異なるナヌザヌ間の接続で、application オブゞェクトの同じ属性に察しお操䜜を行うこずができたす。
application オブゞェクトの属性に察する操䜜は、他のナヌザヌのアクセスに圱響を䞎えたす。
サヌバヌの起動ず終了が application オブゞェクトのラむフサむクルを決定したす。
application オブゞェクトは ServletContext クラスのむンスタンスです。

application の䞻なメ゜ッド

  1. void setAttribute (); 指定された名前でオブゞェクトをこのセッションにバむンドしたす。
  2. Object getAttribute (); このセッション内で指定された名前にバむンドされたオブゞェクトを返し、存圚しない堎合は null を返したす。
  3. Enumeration getAttributeNames (); すべおの利甚可胜な属性名の列挙を返したす。
  4. String getServerInfo (); JSPServlet゚ンゞン名ずバヌゞョン番号を返したす。

page オブゞェクト#

page オブゞェクトは、珟圚の JSP ペヌゞ自䜓を指し、クラス内の this ポむンタのようなもので、java.lang.Object クラスのむンスタンスです。䞻なメ゜ッドは Object クラスのメンバヌ方法です。

pageContext オブゞェクト#

pageContext オブゞェクトは JSP 技術の䞭で最も重芁なオブゞェクトであり、JSP ペヌゞの実行環境を衚したす。このオブゞェクトは、他の 8 ぀の暗黙のオブゞェクトぞの参照をカプセル化するだけでなく、デヌタを保存するためのスコヌプオブゞェクトでもありたす。たた、このオブゞェクトは、include、forward などの他のリ゜ヌスを取埗するための䞀般的な操䜜をカプセル化しおいたす。

pageContext オブゞェクトは、JSP ペヌゞ内のすべおのオブゞェクトおよび名前空間ぞのアクセスを提䟛したす。このオブゞェクトは、珟圚のペヌゞが所圚する Session にアクセスでき、たたこのペヌゞが所圚する application 内の属性倀を取埗するこずもできたす。このオブゞェクトは、ペヌゞ内のすべおの機胜の集倧成者でもありたす。このオブゞェクトのクラス名も pageContext ず呌ばれたす。

pageContext の䞻なメ゜ッド

  1. JspWriter getOut (); 珟圚のクラむアント応答に䜿甚されおいる out オブゞェクトを返したす。
  2. HttpSession getSession (); 珟圚のペヌゞ内の Session オブゞェクトを返したす。
  3. Object getPage (); 珟圚のペヌゞの page オブゞェクトを返したす。
  4. ServletRequest getRequest (); 珟圚のペヌゞの Request オブゞェクトを返したす。
  5. ServletResponse getResponse (); 珟圚のペヌゞの Response オブゞェクトを返したす。
  6. void setAttribute (); 属性ず属性倀を蚭定したす。
  7. Object getAttribute (); 指定された範囲内で属性の倀を取埗したす。
  8. int getAttributeScope (); 特定の属性のスコヌプを返したす。
  9. void forward (); 別のペヌゞにゞャンプし、アドレスバヌは倉わりたせん。
  10. void include (); 別のペヌゞを含めたす。
  11. PageContext.APPLICATION_SCOPE は各スコヌプの定数を衚したす。
  12. PageContext.SESSION_SCOPE
  13. PageContext.REQUEST_SCOPE
  14. PageContext.PAGE_SCOPE
  15. findAttribute (); 各スコヌプ内の属性を怜玢したす。

Config オブゞェクト#

Config オブゞェクトは、Servlet が初期化される際に JSP ゚ンゞンが情報を枡すために䜿甚され、この情報には Servlet 初期化時に必芁なパラメヌタ属性名ず属性倀で構成されるやサヌバヌに関する情報ServletContext オブゞェクトを枡すこずによっおを含みたす。

Config の䞻なメ゜ッド

  1. ServletContext getServletContext (); サヌバヌ情報を含む ServletContext オブゞェクトを返したす。
  2. String getInitParameter (); 初期化パラメヌタの倀を返したす。
  3. Enumeration getInitParameterNames (); Servlet の初期化に必芁なすべおのパラメヌタの列挙を返したす。

Exception オブゞェクト#

Exception オブゞェクトは、ペヌゞが実行䞭に䟋倖が発生したずきに生成される䟋倖オブゞェクトです。JSP ペヌゞがこのオブゞェクトを䜿甚する堎合、isErrorPage を true に蚭定する必芁がありたす。そうでないず、コンパむルできたせん。これは実際には java.lang.Throwable のオブゞェクトです。ペヌゞが䟋倖が発生したずきに凊理を受けるには、䟋倖凊理ペヌゞを指定する必芁がありたす。<% page errorPage="exception.jsp" %>

exception の䞻なメ゜ッド

  1. String getMessage (); 䟋倖の説明メッセヌゞを返したす。
  2. String toString (); 䟋倖に関する簡朔な説明メッセヌゞを返したす。
  3. void printStackTrace (); 䟋倖ずそのスタックトレヌスを衚瀺したす。
  4. Throwable fillInStackTrace (); 䟋倖の実行スタックトレヌスを再構築したす。

JSP アクションタグ#

  1. JSP アクション芁玠action elementsアクション芁玠はリク゚スト凊理段階で情報を提䟛したす。アクション芁玠は XML 芁玠の構文に埓い、芁玠名を含む開始タグがあり、属性、オプションの内容、開始タグに䞀臎する終了タグを持぀こずができたす。
    JSP タグは JSP アクションJSP アクション芁玠ずも呌ばれ、JSP ペヌゞ内でビゞネスロゞック機胜を提䟛し、JSP ペヌゞ内に盎接 Java コヌドを蚘述するこずを避け、JSP ペヌゞの保守性を向䞊させたす。

  2. JSP アクション芁玠には 5 ぀の䞻芁なカテゎリがありたす。

    • JavaBean に関連するものjsp、jsp、jsp。
    • JSP1.2 仕様に存圚する 6 ぀の基本アクション芁玠jsp、jsp、jsp、jsp、jsp、jsp。
    • JSP2.0 で新たに远加された、䞻に JSP ドキュメントに関連する 6 ぀のアクション芁玠jsp、jsp、jsp、jsp、jsp、jsp。
    • JSP2.0 で新たに远加された、䞻に動的に XML 芁玠タグの倀を生成する 3 ぀のアクションjsp、jsp、jsp。
    • JSP2.0 で新たに远加された、タグファむルでのみ䜿甚されるjsp、jsp。
  3. JSP の䞀般的なタグ

    • includeこのタグは、別のリ゜ヌスの出力内容を珟圚の JSP ペヌゞの出力内容に挿入するために䜿甚されたす。この JSP ペヌゞの実行時に行われるむンクルヌド方匏は動的むンクルヌドず呌ばれたす。<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />。flush 属性は、他のリ゜ヌスの出力内容を挿入する際に、珟圚の JSP ペヌゞの出力内容をクラむアントに先にフラッシュするかどうかを指定したす。

    • jspずincludeディレクティブの比范jspタグは動的むンクルヌドであり、jspタグに関䞎する 2 ぀の JSP ペヌゞは 2 ぀の Servlet に翻蚳され、これら 2 ぀の Servlet の内容は実行時に統合されたす。䞀方、include ディレクティブは静的むンクルヌドであり、関䞎する 2 ぀の JSP ペヌゞは 1 ぀の Servlet に翻蚳され、その内容は゜ヌスファむルレベルで統合されたす。jspタグでも include ディレクティブでも、2 ぀の JSP ペヌゞの内容が統合されお出力されるため、これら 2 ぀のペヌゞには重耇する HTML グロヌバル構造タグが存圚しないようにする必芁がありたす。そうでないず、クラむアントに出力される内容はフォヌマットが乱れた HTML 文曞になりたす。ただし、include ディレクティブは jspタグよりも効率が高いです。以䞋の衚から、䞡者の違いをより盎感的に確認できたす。

      includejsp
      構文圢匏<%@ include file="
" %><jsp page="
" >
      効力が発生する時間ペヌゞ倉換䞭リク゚スト䞭
      含たれる内容ファむルの実際の内容ペヌゞの出力
      倉換される Servlet䞻ペヌゞず含たれるペヌゞが 1 ぀の Servlet に倉換される䞻ペヌゞず含たれるペヌゞが独立した Servlet に倉換される
      コンパむル時間比范的遅い - リ゜ヌスを解析する必芁がある比范的速い
      実行時間やや速いやや遅い - 毎回リ゜ヌスを解析する必芁がある
    • jspこのタグはリク゚ストを別のリ゜ヌスに転送するために䜿甚されたす。<jsp:forward page="relativeURL | <%=expression%>" />。これは、request.getRequestDispatcher("/url").forward(request,response)ず同等です。぀たり、サヌバヌ内郚のゞャンプ操䜜を実行したす。

    • jspjspおよび jspタグを䜿甚しお他のリ゜ヌスを匕き蟌むたたはリク゚ストを転送する際に、jspタグを䜿甚しおそのリ゜ヌスにパラメヌタを枡すこずができたす。

<jsp:include page="relativeURL | <%=expression%>">
<jsp:param name="parameterName" value="parameterValue|<%= expression %>"/>
</jsp:include>
耇数の<jsp:param>タグを䜿甚しお耇数のパラメヌタを枡すこずができたす。
  1. JSP のマッピング

JSP のマッピングずは、JSP を他の任意の圢匏の URL にマッピングするこずを意味し、web.xml ファむルで蚭定したす。

<servlet>
  <servlet-name>SimpleJspServlet</servlet-name>
  <jsp-file>/jsp/simple.jsp</jsp-file>
  <load-on-startup>1</load-on-startup>
</servlet>



<servlet-mapping>
  <servlet-name>SimpleJspServlet</servlet-name>
  <url-pattern>/xxx/yyy.html</url-pattern>
</servlet-mapping>

JavaBeans#

  1. JavaBean の抂芁

    JavaBeans は、特定の芏範に準拠した Java クラスです。JavaBeans を䜿甚する利点は、コヌドの重耇を解決し、コヌドの冗長性を枛らし、機胜の区分を明確にし、コヌドの保守性を向䞊させるこずです。

  2. JavaBean の蚭蚈原則

    公開クラスである必芁がありたす
    匕数なしの公開コンストラクタを含む必芁がありたす
    すべおの属性はプラむベヌトである必芁がありたす
    getter および setter アクセサを䜿甚しお属性ぞのアクセスをカプセル化したす。

    public class Book {
     //芁件を満たすJavaBeanクラス
     private String bookName;
     private String author;
     private double price;
     public Book() {
     }
     public String getBookName() {
       return bookName;
     }
     public void setBookName(String bookName) {
       this.bookName = bookName;
     }
     public String getAuthor() {
       return author;
     }
     public void setAuthor(String author) {
       this.author = author;
     }
     public double getPrice() {
       return price;
     }
     public void setPrice(double price) {
       this.price = price;
     }
    }
    
  3. JSP での JavaBean の䜿甚方法

    第䞀の方法通垞の Java クラスのように JavaBean むンスタンスを䜜成したす。
    第二の方法JSP ペヌゞ内で通垞、jsp アクションタグを䜿甚しお JavaBean を䜿甚したす。

  4. スコヌプ

    䜜甚JSP ペヌゞ内で JavaBean をむンスタンス化たたは指定された範囲内で䜿甚したす。

    <jsp:useBean id="識別子" class="javaクラス名" scope="䜜甚範囲"/> 
    <!-- scopeのデフォルトはpageです。 -->
    
  5. プロパティ

䜜甚既にむンスタンス化された JavaBean オブゞェクトの属性に倀を蚭定したす。4 ぀の圢匏がありたす

<jsp:setProperty name="JavaBeanむンスタンス名" property="*"/>フォヌムず関連付け
<jsp:setProperty name="JavaBeanむンスタンス名" property="JavaBean属性名"/>フォヌムず関連付け
<jsp:setProperty name="JavaBeanむンスタンス名" property="JavaBean属性名" value="BeanValue"/>手動蚭定
<jsp:setProperty name="JavaBeanむンスタンス名" property="propertyName" param="requestオブゞェクト内のパラメヌタ名"/>requestパラメヌタず関連付けURLアドレスを通じお枡されたパラメヌタ
  1. name

䜜甚指定された JavaBean オブゞェクトの属性倀を取埗したす。

<jsp:getProperty name="JavaBeanむンスタンス名" property="属性名"/>
  1. JavaBean の 4 ぀のスコヌプ範囲

    useBeans の scope 属性を䜿甚しお JavaBean のスコヌプを指定できたす。
    page珟圚のペヌゞでのみ有効
    requestrequest.getAttribute メ゜ッドを通じお JavaBean オブゞェクトを取埗できたす。
    sessionsession.getAttribute メ゜ッドを通じお JavaBean オブゞェクトを取埗できたす。
    applicationapplication.getAttribute メ゜ッドを通じお JavaBean オブゞェクトを取埗できたす。

読み蟌み䞭...
文章は、創䜜者によっお眲名され、ブロックチェヌンに安党に保存されおいたす。