JSP与JSTL
jspの概要
jsp:フルネームのjava Server Pageは、Sunが提供する動的なWebページプログラミングテクノロジです。
htmlと比較すると、htmlは静的ページデータのみを提供できますが、JSPではJavaコードをページに埋め込んで、ユーザーに動的データを提供できます。
サーブレットと比較して、サーブレットはデータの植字が難しく、JSPはJavaコードを使用して動的データを生成できますが、データの植字も簡単です。
動的Webリソースの開発に使用できますが、jspまたはサーブレットのどちらでもかまいません。ただし、これら2つのテクノロジのそれぞれの特性により、長期的なソフトウェアプラクティスでは、人々は徐々にサーブレットをWebアプリケーションの制御コンポーネントとして使用し、jspテクノロジをデータ表示テンプレートとして使用します。
実際、jspはサーブレットです。初めてjspにアクセスすると、jspエンジンはこのjspをサーブレットに変換します。このファイルはtomcatの作業ディレクトリに保存されます。
コードの文字化けを防ぐために、使用する前にエンコード形式をアイデアで構成することをお勧めします
。JSPは埋め込みJavaコードを記述できることを除いて、HTMLとまったく同じです。
注釈
JSPでは2種類のコメント構文がサポートされています。1つはクライアント側で表示できる(つまり、ブラウザ開発者ツールで表示できる)コメントを表示するためのもので、もう1つは暗黙的なコメントです。クライアント見えない。
- コメント構文の表示:HTMLスタイルから継承
- 暗黙のコメント構文:JAVAスタイルから継承; JSP独自のコメント
// 单行注释
/*
多行注释
*/
以上两种只能在java程序段中编写
<!-- html风格的注释 -->
<%--
jsp的注释
--%>
基本的なスクリプレット文法
jspで最も重要な部分は、Scriplet(スクリプトアプレット)、つまりHTMLコードに埋め込まれたすべてのJAVAプログラムです。
JSPには3種類のScripletコードがあります。すべてScripletでマークする必要があります
第一种:<% %> :java 脚本段,可以定义局部变量,编写语句。
生成的代码在servlet中的service方法体中
第二种:<%! %> :声明。可以定义全局(成员)变量、方法、类 //一般用来定义全局变量
生成的代码在类中
第三种:<%= %> :输出表达式,数据,一个变量或具体内容
生成的代码在servlet中的service方法体中,相当于out.print();语句
jspコマンドラベル
一部のページではページの一部のみを変更する必要があるため、インクルード操作を使用すると、繰り返し使用するコードをインクルードできます。インクルード操作を使用すると、ページを変更せずにページを結合できます。上記の機能を実現するには、2つの方法があります。
方法1:各jspページ(html)に、ツールバー、ヘッダー情報、テール情報、特定のコンテンツを含めます。つまり、includeを使用しないでください。
方法2:ツールバー、ヘッダー情報、およびテール情報を別々のファイルに分割し、それらを使用するときに直接インポートします
明らかに、2番目の方法の方が優れています。最初の方法は冗長な重複コードが多く、変更するのは便利ではありません。jspがインクルードされた操作を実装する場合、静的インクルージョン、動的インクルージョン、静的の2つの方法があります。インクルードの使用includeディレクティブで十分ですが、動的インクルードの場合は、includeアクションタグを使用する必要があります。
1.静的には含まれて:静的含んはメインファイルで、直接翻訳されたときのファイルは、サーブレットエンジンが含まれているこれらのファイルのソースコードを一体化、jspService法上のすべて、それが唯一のサーブレットのソースファイルを生成し、これとは変数が存在しないことができますこれらのファイルの同じ名前。
小さなリンク:Webプロジェクトでは、アイデア内のjspのコンパイル済みクラスとJavaファイルは、アイデアに関連付けられたTomcatパスの下に生成されます。このパスは、次のようなコンソールからTomcat起動情報を表示することで取得できます。
言い続けます:
長所:わずかに高い操作効率
短所:高い結合、十分な柔軟性がない
形式は次のとおりです。
<%--静态包含--%>
<%@include file="header.jsp"%>
<h2>主题内容</h2>
<%@include file="footer.jsp"%>
2.動的包含:
形式は次のとおりです。
<%-- 动态包含--%>
<jsp:include page="header.jsp"></jsp:include>
<h2>主题内容</h2>
<jsp:include page="footer.jsp"></jsp:include>
注:動的インクルードがパラメーターを渡す必要がない場合、改行やスペースなど、インクルードの二重タグの間にコンテンツがあってはなりません。
パラメータを渡す必要がある場合は、パラメータの受け渡しを動的に含める方法を使用できます。
<%-- 动态包含传递参数: value值支持表达式,而name值不支持表达式--%>
<jsp:include page="footer.jsp">
<jsp:param name="namem" value="admain"/>
<jsp:param name="msg" value="<%= str%>"/>
</jsp:include>
渡されたパラメーターを取得します
。request.getParameter(String name)
を使用して、パラメーター名を指定して渡されたパラメーターを取得します。
動的封じ込め技術の分析:この封じ込め技術は、これらの封じ込められたページをロードする方法と同等の呼び出し方法を使用します。これにより、複数のソースコードファイルが生成されるため、複数のページが互いに干渉しないため、変数名を繰り返すことができます。 :
JSPの4つのドメインオブジェクト
jspで提供される属性ストレージスコープには4つのタイプがあります。いわゆる属性ストレージスコープは、設定されたドメインオブジェクト、保存して使用し続けることができるページ数、および人間の言葉がデータ共有のスコープを指します。
- ページスコープ
pageContext:現在のページにのみ属性を保存し、ジャンプ後に共有することはできません(jsp:forward) - リクエスト範囲は
1つのリクエストにのみ保存されます。サーバーがジャンプした後も有効です。クライアントのジャンプは無効です。クライアントのジャンプの
場合は2つのリクエストに相当します。その後、最初のリクエストは存在しません。必要に応じて両方のタイプのジャンプでデータを取得できる場合は、スコープを拡張する必要があります。
セッションのスコープはセッション内で有効であり、ジャンプに関係なく取得できます。
ブラウザを閉じるとセッションが終了するため、一度属性を設定したい場合は、かどうかに関係なく取得できます。新しいブラウザまたは新しいセッションです。データに対しては、アプリケーションを使用する必要があります。- アプリケーションのスコープは
サーバー全体に保存され、
すべてのユーザー(すべてのセッション)がデータを取得できますが、サーバーを再起動すると、サーバーに保存されているデータは表示されなくなります。
ドメインオブジェクトを使用するためのガイドライン:妥当な範囲内で最小の範囲を使用するようにしてください