トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

JSPの基本:暗黙オブジェクト(request)

暗黙オブジェクト

  • 暗黙オブジェクトとは「定義済み」オブジェクトであり、JSPページにおいて宣言しなくても利用可能できる
  • パラメータの受け渡しに使われるrequest、session、applicationはよく使われるので、その利用範囲を理解しておくこと。
    • (pageContext)<request<session<applicationである
  • パラメータの受け渡しに使われる暗黙オブジェクトにはgetAttributeとsetAttributeによってオブジェクトを名前を付けて格納できる
    • 設定 setAttribute(<キー>,<オブジェクト>)
    • 取得 getAttribute(<キー>)

 request

  • ページリクエストに関連付けられたパラメータの受け渡しに用いられる。

request.getParameter()

  • GETやPOSTメソッドで渡されたパラメータを受け取るときにはrequest.getParameter()を使う。そのさいには、INPUTタグのNAME属性で指定された文字列を用いる。
  • 文字列の受け渡し
<input type="text" name="parameter" />
↓
request.getParameter("parameter")

文字化けの防止

  • Tomcat5以降(Tomcat7では必要なし)で、GETの場合には文字化けする場合には以下の設定を行う
    • もともとPOSTメソッドでのパラメータの受け渡しは文字化けしない
  • Serversのserver.xml中の以下の箇所に useBodyEncodingForURI="true"を追加する
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
↓
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true" />
  • request.setCharacterEncoding("UTF-8")で文字コードの設定を行う

requestの例:input.jsp

  • 受け取ったパラメータをフォームの下に入力する
1
2
3
4
5
6
7
8
9
10
<%@ page contentType="text/html; charset=UTF-8" %>
<% request.setCharacterEncoding("UTF-8"); %>
<HTML>
 <BODY>
  <FORM METHOD="GET" ACTION="<%=request.getRequestURI() %>">
  <INPUT TYPE="TEXT" NAME="input" VALUE="">
  </FORM>
  <%=request.getParameter("input")%>
 </BODY>
</HTML>

requestの例:input2.jsp

  • 変数として文字列buffを宣言し、入力があるたびに、その入力と改行をその変数に追加していく。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page contentType="text/html; charset=UTF-8" %>
<% request.setCharacterEncoding("UTF-8"); %>
<HTML>
<%! String buff=""; %>
 <HEAD>
    <TITLE>InputForm2</TITLE>
 </HEAD>
 <BODY>
  <FORM METHOD="POST" ACTION="<%=request.getRequestURI() %>">
  <INPUT TYPE="TEXT" NAME="input" VALUE="">
  </FORM>
<%=(buff=((request.getParameter("input")!=null)?request.getParameter("input")+"<BR>\n":"")+buff)%>
 </BODY>
</HTML>

requestの例:bbs.jsp

  • 投稿日を追加することで簡易な掲示板としたもの
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.Date" %>
<%! String buff=""; %>
<HTML>
    <HEAD>
        <TITLE>簡易掲示板</TITLE>
    </HEAD>
    <BODY>
        <FORM METHOD="POST" ACTION="<%=request.getRequestURI() %>">
            <INPUT TYPE="TEXT" NAME="input" VALUE="">
        </FORM>
<%
    request.setCharacterEncoding("UTF-8");
    String tmp = request.getParameter("input");
    if(tmp!=null&&tmp.length()>0) {
        buff = tmp    + " -- "
                    + new Date()
                    + "<BR>\n"
                    + buff;
    }
    out.print(buff);
%>
    </BODY>
</HTML>

requestのその他のメソッド

setCharacterEncoding()
requestパラメータの文字コードを設定する
getReuestURI()
リクエストされたURI、つまり自分自身のパスが戻る
getCookie()
クッキーの取得、クッキーについては後述


 課題

  1. bbs.jspを改造して、日付を○○○○年○○月○○日○○時○○分○○秒とする(/kadai/04-01bbs.jsp)
  2. 1.を改造して、投稿ボタンとリセットボタンを追加する(/kadai/04-02bbs.jsp)

最終更新時間:2010年10月21日 11時16分56秒