JSP内蔵対象


JSP内蔵対象はWEBコンテナ作成の対象グループで、newキーワードで作成する必要はありません。
JSP九大内蔵対象:out、request、reponse、session、appication、page、pageConteet、exception、config
1、outオブジェクト
outオブジェクトはJspWriter類の一例であり、役割はクライアントにコンテンツを出力することである。
常用方法:
1、void println()
2、void clear() バッファの内容をクリアし、flush後に呼び出したら異常が発生します。
3、void clear Buffer()バッファの内容をクリアし、flash後に呼び出したら異常がない。
4、void flush()バッファの内容をクライアントに強制的に出力し、バッファエリアを空にする
5、int getBufferSize()
6、int getRemaning()
7、ブーメランisAutoFush()バッファに戻って満杯になった時は自動的にクリアしますか?それとも異常を投げますか?
8、void close()出力ストリームをクローズする
outオブジェクトの例コード:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">    

    <title>My JSP 'index.jsp' starting page</title>

  </head>  

  <body>

    <h1>out    </h1>

    <% 

       out.println("<h2>out      </h2>");

       out.println("    <br>");       

       out.flush();//            

       //out.clear();//       。

       out.clearBuffer();//        。

       out.println("    <br>");    

    %><%=out.getBufferSize() %>  <br><%=out.getRemaining() %>  <br><%=out.isAutoFlush() %><br>   

  </body>

</html>
2、request対象
requestオブジェクトはHttpServletRequestクラスの例であり、クライアントの要求情報はrequestオブジェクトにカプセル化され、クライアント要求を完了する前に、オブジェクトは常に有効である。
常用方法:
1、Stering getParameterはname指定パラメータのパラメータ値を返します。
2、Stering[]getParameterValues(String name)はパラメータnameを含む全ての値の配列を返します。
3、void set Attribute(String name、Object value)は、この要求の属性を格納します。
4、Object get Attribute(String name)は指定された属性の属性値を返します。
5、Stering getContentType()返却要求体のMIMEタイプ
6、Stering get Protocol()返却要求用のプロトコルタイプとバージョン番号
7、Stering get ServerName()はサーバホスト名に戻ります。
8、int get ServerPort()は、サーバに戻り、この要求を受けたポート番号を返します。
9、Stering get CharcterEnccoding()リターン文字コード方式
10、void set CharcterEnccoding()設定要求の文字コード方式
11、int getContintLength()返却要求体のバイト長
12、String getRemoteAddr()は、この要求を送信するクライアントIPアドレスを返す。
13、String getRealPathは、指定された仮想パスの真の経路を返す。
14、Stering get ContectPath()はコンテキストパスに戻る
以下は、get Parameeter方法とget Parameter Values方法の一例コードである。
  <body>

    <h1>request    </h1>

    <% 

       request.setCharacterEncoding("utf-8"); //        ,    URL           。    

    %><%=request.getParameter("username") %><br><% 

           if(request.getParameterValues("favorite")!=null)

           {

               String[] favorites = request.getParameterValues("favorite");

               for(int i=0;i<favorites.length;i++)

               {

                  out.println(favorites[i]+"&nbsp;&nbsp;");

               }

            }

        %> <br>

  </body>
【注】URLの中国語トランスポートの文字化け問題を解決するには、tomcatのルートディレクトリの下/conf/server.xmlのConnectorタグを修正し、URIEncoding=「utf-8」の属性を追加して、tomcatサーバを再起動すると有効になります。
 3、reponseオブジェクト
レスポンスオブジェクトは、ウェブページ機能領域を有する顧客要求に応答する関連情報を含むHttpServletResonseクラスの例である。
常用方法:
1、Stering get CharcterEnccoding()応答時に使用する文字コード
2、void set ContentType(String type)設定応答のMIMEタイプ
3、PrintWriter getWriter()はクライアントに文字を出力するPrintWriterオブジェクトに戻り、このオブジェクトの出力はoutの内蔵オブジェクトより前にある。
4、sendRedirect(String location)クライアントの再配向要求
<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%>

<%

    response.setContentType("text/html;charset=utf-8"); //     MIMI  

    

    out.println("<h1>response    </h1>");

    out.println("<hr>");

    //out.flush();//         ,  out      outer       

    PrintWriter outer = response.getWriter(); //       

    outer.println("  response        outer  ");

    //response.sendRedirect("reg.jsp");//     

    //     

    //response.sendRedirect("request.jsp");

    //    

    request.getRequestDispatcher("request.jsp").forward(request, response);

%>
【注】リダイレクト要求と要求転送の違い:
リダイレクト要求:クライアント行為、レスポンス.sendRedirect(url)は、2回の要求に相当し、前回の要求オブジェクトは保存されません。アドレスバーのURLは変更されます。
要求転送:サーバ行為、request.getRequest Dispactch.forward(request,reponse)は一回の要求で、転送後に要求対象が保存されます。アドレスバーのURLは変更されません。
4、セッション対象
Sessionは、クライアントとサーバ端の一回のセッションを表し、ユーザ状態を保存する仕組みであり、sessionはサーバメモリに保存され、異なるユーザは異なるセッションに対応する。
sessionオブジェクトはHttpSessionクラスの一例であり、最初のJSPページがロードされたときに自動的に作成され、セッション期間の管理が行われる。
常用方法:
1、long get CreationTime()がsessionの作成時間に戻り、長い整型ミリ秒単位の時間
2、Stering getId()はセッション作成時JSPエンジンが設定した固有ID番号に戻ります。
3、Object set Attribute(String name、Object value)は指定された名前を使って、このセッションにオブジェクトをバインドします。
4、Object get Attributeは、このセッションの指定された名前と紐付けられたオブジェクトを返します。存在しない場合はnullに戻ります。
5、Stering[]getValueNames()は、このsessionのすべての利用可能な属性を含む配列を返す。
6、int getMaxInactiveInterval()は2回の要求間隔に戻りますが、このsessionはキャンセルされますか?(単位秒)
  <body>

    <h1>session    </h1>

    <hr>

    <% 

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd  HH:mm:ss");

      Date d = new Date(session.getCreationTime());

      session.setAttribute("username", "admin");//    session          

      //session.setMaxInactiveInterval(10);//10        

    %>

    Session    :<%=sdf.format(d)%><br>    

    Session ID  :<%=session.getId()%><br>

     Session      :<%=session.getAttribute("username") %><br>         

  </body>
  <body>

    <h1>session    </h1>

    <hr>        

    Session ID  :<%=session.getId()%><br>

     Session      :<%=session.getAttribute("username") %><br>

    Session       :<% 

                     String[] names =session.getValueNames();

                     for(int i=0;i<names.length;i++)

                     {

                        out.println(names[i]+"&nbsp;&nbsp;");

                     }    

    %> <br>    

  </body>
セッションのライフサイクル:
1、作成:クライアントがjspまたはservletに初めて訪問するとき、サーバは現在のセッションのためにSessionIdを作成し、クライアントがサーバに要求を送信するたびに、このSessionIdを携帯してサービス端末はSessionIdを検査します。アクティブ:①あるセッションでハイパーリンクで開いた新しいページは同じセッションに属します。②現在のセッションページがすべて閉じられていない限り、再開したブラウザウィンドウは同じプロジェクトリソースにアクセスすると同じセッションになります。③今回のセッションのすべてのページが閉じられている限り、あるJSPまたはServletに再アクセスすると、新しいセッションが作成されます。ただし、クライアントがそれを携帯してサービスエンドチェックを渡すことはありません。3つの方法①session.invalidate()メソッド②Sessionの期限切れ(タイムアウト)③サーバの再起動を呼び出しました。
セッションタイムアウト設定:
1、session.setMaxInactiveInterval単位は秒です
2、web.xmlで構成します。単位は分で、tomcatのデフォルトsessionのタイムアウトは30分です。
<session-config>

 <session-timeout>10</session-timeout>

</session-config>
5、アプリオブジェクト
applicationオブジェクトはServlet Contectクラスの例であり、グローバル変数を保存してサーバの起動を開始し、サーバのシャットダウンを終了します。別のユーザの異なる接続において、aplicationオブジェクトの同じ属性を操作することができます。
常用方法:
1、void set Attribute(String name、Object value)
2、Object get Attribute(String name)
3、Eumeration get AttributeNames() 利用可能な属性名のすべての列挙を返します。
4、Stering get ServerInfo()はJSPエンジンとバージョン番号に戻ります。
  <body>

    <h1>application    </h1>

    <% 

       application.setAttribute("country", "  ");

       application.setAttribute("postcode", "00000");

       application.setAttribute("email", "[email protected]");

       

    %><%=application.getAttribute("country") %><br>

    application     :<% 

         Enumeration attributes = application.getAttributeNames();

         while(attributes.hasMoreElements())

         {

            out.println(attributes.nextElement()+"&nbsp;&nbsp;");

         }

    %><br>

    JSP(SERVLET)       :<%=application.getServerInfo() %><br>                   

  </body>
 
6、pageオブジェクト
pageオブジェクトはObjectクラスの例であり、現在のJSPページ自体を指す。
常用方法とObject類の常用方法。
7、pageContext対象
PageContextオブジェクトはJSPページ内のすべてのオブジェクトおよび名前空間へのアクセスを提供しており、本ページのあるsessionにアクセスすることができ、本ページのあるアプリのある属性値を取ることもできます。
常用方法:
1、JspWriter getOut()
2、HttpSession get Session()
3、Object getPage()
4、Servlet Request get Request()
5、Servlet Response gets Resonse()
6、void set Attribute(String name、Object value)
7、Object get Attribute(String name、int scope)属性の値を指定範囲内で取る
8、int getAttributeScope(String name)は指定された属性の作用範囲を返します。
9、void forward(String url)は現在のページを別のページに案内します。
10、void includeは現在位置に別のファイルを含んでいます。
8、config対象
configオブジェクトは、一つのservletの初期化において、JSPエンジンが情報を送るためのものであり、この情報は、Servlet初期化時に使用するパラメータ(属性名と属性値で構成される)と、サーバに関する情報(一つのServlet Contectオブジェクトを伝達することによって)を含む。サーバ関連情報を含むServletContectオブジェクト2、String get Init Parameter(String name)を返します。初期化パラメータの値3、Eumeration get Init ParameterNames()//を返します。Servlet初期化に必要なすべてのパラメータの列挙を返します。
9、exceptionオブジェクト
exceptionの対象はjava.lang.Throwable類の例で、一つのページが実行中に異常が発生した場合、このオブジェクトが発生します。JSPページでこのオブジェクトを適用するには、「ISError Pageをtrueに設定する」必要があります。そうでないとコンパイルできません。
常用方法:1、Stering getMessage()/。異常を記述するメッセージ2、String toString()//を返す。異常に関する簡単な説明メッセージ3、void print StockTrace();異常とそのスタックの軌跡を表示します。異常な実行スタックの軌跡を書き換えます。
【注】errorPage属性指定処理異常のページで、isError Page属性がこのページに異常があるかどうかを指定します。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" errorPage="exception.jsp"%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" isErrorPage="true" %>
 
 
参考資料:慕課網【JAVA出会いHTML——JSP編】http://www.imooc.com/learn/166