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

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

requestその2

 requestによるパラメータの受け渡し

ウェブフォーム:form.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>ユーザ情報の入力</title>
</head>
<body>
    <form action="dispParams.jsp" method="POST">
        ユーザー名:
        <!-- テキストボックス:一般的なテキスト入力 -->
        <input type="text" name="ユーザ名" value="" />
        <br />
        パスワード:
        <!-- パスワード用テキストボックス:パスワードなど内容を見せたくないものの入力に -->
        <input type="password" name="パスワード"/>
        <br />
        性別:
        <!-- ラジオボタン:複数選択肢の中で一つ -->
        <input type="radio" name="性別" value="男" />男
        <input type="radio" name="性別" value="女" />女
        <br />
        年代:
        <select name="年代">
            <option value="20代" selected="selected">20代かそれ以下</option>
            <option value="30代">30代、40代</option>
            <option value="50代">50代、60代</option>
            <option value="60代">70代かそれ以上</option>
        </select>
        <br />
        眼鏡をかけている?:
        <!-- チェックボックス:trueかfalseか -->
        <input type="checkbox" name="眼鏡" />
        <br />
        顔写真:
        <!-- ファイルの入力:データをファイルの形で送信させたい場合に -->
        <input type="file" name="顔写真" />
        <br />
        その他:<br />
        <!-- テキストエリア:複数行にわたるデータの入力に -->
        <textarea rows="20" cols="80" name="その他"></textarea>
        <br />
        <!-- 投稿ボタン:フォームの内容を投稿するボタン -->
        <input type="submit" value="登録" />
        <!-- 単なるボタン:何らかの機能を持たせたボタン -->
        <input type="button" value="確認" />
        <!-- リセットボタン:フォームの内容をクリアするボタン -->
        <input type="reset" value="リセット"/>
        <!-- 非表示入力:値を埋め込んで送信したい場合に -->
        <input type="hidden" name="隠されたパラメータ" value="隠された値"/>
    </form>
</body>
</html>

受け取るJSP:dispParams.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
25
26
<%@ page contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.Enumeration"%>
<html>
<body>
<%
    request.setCharacterEncoding("utf-8");
    for(Enumeration enumeration=request.getParameterNames();enumeration.hasMoreElements();){
        String key = (String) enumeration.nextElement();
        String[] values = request.getParameterValues(key);
        out.println("パラメータ["+key+"]=値{");
        for(String var:values) {
            if(var.equals("")) {
                var="@値はなし@";
            }
            out.println(var);
            if(values.length>1) {
                out.println(",");
            }
        }
        out.println("}<br />");
    }
%>
</body>
</html>

値をCSV形式で保存するJSP:saveParams.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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<%@ page contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.Enumeration"%>
<%@page import="java.io.File"%>

<%@page import="java.io.PrintWriter"%>
<%@page import="java.io.OutputStreamWriter"%>
<%@page import="java.io.FileOutputStream"%>
<%@page import="java.net.URL"%><html>
<body>
<%
    request.setCharacterEncoding("utf-8");
    String saveDirStr = "G:\\savedir\\";
    //保存先ディレクトリ
    File saveDir = new File(saveDirStr);
    if(!saveDir.exists()){
        saveDir.mkdirs();
    }
    //リクエストの処理
    File saveFile = new File(saveDirStr+new URL(request.getHeader("referer")).getFile()+".csv");
    saveFile.getParentFile().mkdirs();
    boolean initFlag = !saveFile.exists();
    PrintWriter writer = new PrintWriter(new OutputStreamWriter(
            new FileOutputStream(saveFile,true),"MS932"));
    if(initFlag){
        for(Enumeration enumeration=request.getParameterNames();enumeration.hasMoreElements();){
            String key = (String) enumeration.nextElement();
            writer.print(key+",");
        }
        writer.println();
    }
    for(Enumeration enumeration=request.getParameterNames();enumeration.hasMoreElements();){
        String key = (String) enumeration.nextElement();
        String[] values = request.getParameterValues(key);
        for(String var:values) {
            if(var.equals("")) {
                var="@値はなし@";
            }
            writer.print(var);
            if(values.length>1) {
                writer.println(";");
            }
        }
        writer.print(",");
    }
    writer.println();
    writer.flush();
    writer.close();
%>
入力いただきありがとうございました。
</body>
</html>

 課題

  1. 上記のHTMLファイルのウェブフォームについて、(1)年代を10歳区切りで尋ねる、(2)性別にその他を加える、(3)眼鏡と同様の形で「腕時計をしている」を加える、ような変更を行い、/kadai/05-01webForm.htmlとして保存しなさい。
  2. クリスマスパーティを行うときに、その日程、そこで出される料理の好み、予算等について聞くようなウェブフォームを作成しなさい。(/kadai/05-02christmas.jsp)
    • なお、パラメータを受け取るJSPはdispParams.jspをそのまま使って構わない

最終更新時間:2009年08月21日 17時23分30秒