JavaWeb_JSP指令説明

7197 ワード

1.JSP指令:
JSP命令(directive)は、JSPエンジンのために設計され、直接可視出力を生成するのではなく、エンジンにJSPページの残りの部分をどのように処理するかを教えるだけです.
2.現在のJSP 2.0では、page、include、taglibの3つの命令が定義されている
3.page指令:
1).page命令はJSPページの様々な属性を定義するために用いられ、page命令がJSPページのどこに現れても、JSPページ全体に作用し、プログラムの可読性と良好なプログラミング習慣を維持するために、page命令はJSPページ全体の開始位置に置くことが望ましい.2).page命令でよく使われる属性:①.import属性:現在のJSPページに対応するサーブレットにインポートするクラスを指定する.
<%@page import="java.text.DateFormat"%>
②. session属性:trueまたはfalseの値をとり、現在のページのsession非表示変数が利用可能かどうかを指定し、現在のページにアクセスする際に必ずHttpSessionオブジェクトを生成するかどうかを言ってもよい.
<%@ page session="false" %> 
③. errorPageとisErrorPage:
errorPageは、現在のページにエラーが発生した場合の実際の応答ページを指定する.ここで/は、現在のWEBアプリケーションのルートディレクトリを示す.
    <%@ page errorPage="/error.jsp" %> 
>     error.jsp  , JSP             . 

> isErrorPage                ,                exception     .       :     
isErrorPage="true",     exception     ,               . 

>                   ?    Tomcat      , WEB-INF                        
    .             !

>      web.xml          : 
<error-page>
    <!--        : 404        , 500     . -->
        <error-code>404</error-code>
        <!--           -->
        <location>/WEB-INF/error.jsp</location>
    </error-page>

    <error-page>
        <!--         -->
        <exception-type>java.lang.ArithmeticException</exception-type>
        <location>/WEB-INF/error.jsp</location>
    </error-page>
④. contentType:現在のJSPページの応答タイプを指定します.実際に呼び出されたのはresponse.setContentType(「text/html;charset=UTF-8」)です.通常、JSPページの値はtext/htmlです.charset=UTF-8.charset戻るページの文字コードを指定します.通常はUTF-8の値をとります
⑤. pageEncoding:現在のJSPページの文字コードを指定する.通常この値はcontentTypeのcharsetと一致する.
⑥isELIgnored:現在のJSPページでEL式を使用できるかどうかを指定する.通常falseとして値をとる.
3.include指令:
<%@ include file="b.jsp" %>
1).include命令は、JSPエンジンが現在のJSPページを翻訳する際に、他のファイルの内容を現在のJSPページから変換されたサーブレットソースファイルに統合することを通知するために用いられ、このようなソースファイルレベルでの導入は静的導入と呼ばれ、現在のJSPページは静的導入されたページと密接に結合して1つのサーブレットとなる.
2).file属性の設定値は相対パスを使用する必要があります
3).現在のWEBアプリケーションに対するルートを/先頭で表示する場合(サイトルートではないことに注意)、そうでない場合は現在のファイルに対して表示する.
4.jsp:incluceラベル:
1). <jsp:include page="b.jsp"></jsp:include>2).動的導入:include命令のように1つのサーブレットソースファイルを生成するのではなく、2つのサーブレットソースファイルを生成し、1つの方法でターゲットページを含める.
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "b.jsp", out, false);
5. jsp:forward:
<jsp:forward page="/include/b.jsp"></jsp:forward>    
相当于
<% request.getRequestDispatcher("/include/b.jsp").forward(request, response); %>
2).ただし、jsp:forwardを使用すると、jsp:paramサブラベルを使用してb.jspにいくつかのパラメータを入力ことができる.同様に、jsp:includeもjsp:paramサブラベルを使用することができる.
<jsp:forward page="/include/b.jsp">
    <jsp:param value="abcd" name="username"/>
</jsp:forward>  
OR
<jsp:include page="/include/b.jsp">
    <jsp:param value="abcd" name="username"/>
</jsp:include>
b.jspページではrequest.getParameter(「username」)によって受信要求パラメータを取得することができる.
6.中国語の文字化けしについて:
1).JSPページに中国語を入力し、要求ページ後に文字化けしない:contentType="text/htmlを保証する;charset=UTF-8、pageEncoding="UTF-8"charsetはpageEncodingの符号化と一致し、中国語をサポートする.通常はUTF-8の値を取ることを推奨する
また、ブラウザの表示の文字符号化も要求するJSPページの符号化と一致することを保証する必要がある.
2).中国語のパラメータ値を取得する:デフォルトのパラメータは伝送中に使用するコードはISO-8859-1である
①. POSTリクエストについて:リクエスト情報を取得する前に(request.getParameterまたはrequest.getReaderなどを呼び出す)、request.setCharacterEncoding(「UTF-8」)を呼び出せばよい.
②. GET要求に対して:前述の方式はGETに対して無効である.Tomcatのserver.xmlファイルを修正することによって可能である.
参照http://localhost:8989/docs/config/index.html ドキュメントのuseBodyEncodingForURI属性.ConnectorノードにuseBodyEncodingForURI="true"属性を追加すればよい.
<Connector connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>