• 検索結果がありません。

演算や変数を使うためには「EL 式」を使います

EL 式は、JSTL との組み合わせでないと利用できません。<% %>で宣言した変数は JSTL では 使えません

c:out

属性名 Java 型 動的な値の受け 取り

説明

value 任意の型 Yes 必須。レスポンスに追加する値 escapeXml Boolean Yes オプション。

true:値に含まれる特殊文字を変換 false:変換しない(デフォルト)

default 任意の型 Yes オプション。値が null の場合に使用する値 c:forEach

属性名 Java 型 動的な値の受け 取り

説明

items コ レ ク シ ョン

Yes オプション。繰り返し処理を行う値のコレクション。値

が null のとき、繰り返しは行われない。この指定がな いときは begin end が必要

var String No オプション。現時点で保持している値を格納する変数名 varStatus String No オプション。LoopTagStatus オプションを保持している

変数名

begin int Yes オプション。0 からはじまる最初の添字

end int Yes オプション。0 からはじまる最後の添字

step int Yes オプション。繰り返しの増分

c:if

属性名 Java 型 動的な値の受け 取り

説明

test boolean Yes 必須。true または false になる式

var String No オプション。論理型の結果を保持する変数の名前 scope String No オプション。変数のスコープ

page , request , session , application

112 c:when

属性名 Java 型 動的な値の受け 取り

説明

test boolean Yes 必須。true または false になる論理式 c:set

属性名 Java 型 動的な値の受け 取り

説明

value 任意の型 Yes ボディで値を提供しない限り必須。セットする値 var String No オプション。値を保持する変数名。指定されない場合は、

target と property を使用 scope String No オプション。変数のスコープ

page , request , session , application target Java Bean

Map

Yes オプション。property の値

property String Yes オプション。target で指定されるプロパティ

各国による通貨や日付の表現の違いを吸収し、文字セットを指定する fmt:formatDate

属性名 Java 型 動 的 な 値 の 受 け 取 り

説明

value java.util.Date Yes 必須。形式化される日付

pattern String Yes オプション。日付と時刻の両方に適用される独自 の形式パターン

type String Yes オプション。形式化する部分。time,date,both デフォルトは date

dateStyle String Yes オプション。日付部分に適用される定義済みパタ ーン。default,short,medium,long,full

デフォルトは default

timeStyle String Yes オプション。時刻部分に適用する定義済みパター ン。default,short,medium,long,full

デフォルトは default timeZone String or

java.util.TimeZone

Yes オプション。日付/時刻に対するタイムゾーン

var String No オプション。形式化された値を保持する変数の名

113

scope String No オプション。変数のスコープ

page,request,session,application デフォルトは page

fmt:formatNumber

属性名 Java 型 動的な値の

受け取り

説明

value String or Number

Yes ボディで指定されない限り必須。形式化される数値

pattern String Yes オプション。パターン

type String Yes オプション。number,currency,percentage currencyCode String Yes オプション。ISO-4217 の通貨コード

日本円は JPY

currencySymbol String Yes オプション。通貨記号

var String No オプション。形式化された値を保持する変数名

scope String No オプション。変数のスコープ

page,request,session,application デフォルトは page

fmt:requestEncoding

属性名 Java 型 動的な値の受け

取り

説明

value String or Number Yes オプション。パラメータの文字セット

114

入力されたデータをセッションにためる JSP を taglib を使って書き直すと sessionList.jsp

<%@ page language="java" import="java.lang.*,java.util.*,datas.*"

contentType="text/html; charset=utf-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

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

<html>

<head>

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

<meta http-equiv="Pragma" content="no-cache">

<meta http-equiv="Cache-Control" content="no-cache">

<meta http-equiv="Expires" content="0">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<style type="text/css">

table{

border-collapse:collapse;

} td,th{

padding:5px;

border-style:solid;

border-color:#0000ff;

border-width:1px;

}

</style>

</head>

<body>

セッションに保存されたデータは以下のとおりです<Br>

<jsp:useBean id="datas" class="datas.PersonalList" scope="session" />

<table>

<tr>

<th>学籍番号</th>

<th>氏名</th>

<th>年齢</th>

</tr>

<c:forEach var="p" items="${datas.list}" >

<tr>

<td><c:out value="${p.id}" /></td>

<td><c:out value="${p.name}" /></td>

<td><c:out value="${p.age}" />才</td>

</tr>

115

</c:forEach>

</table>

</body>

</html>

20 歳以上のときだけ「*」を付ける

<%@ page language="java" import="java.lang.*,java.util.*,datas.*"

contentType="text/html; charset=utf-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

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

<html>

<head>

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

<meta http-equiv="Pragma" content="no-cache">

<meta http-equiv="Cache-Control" content="no-cache">

<meta http-equiv="Expires" content="0">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<style type="text/css">

table{

border-collapse:collapse;

} td,th{

padding:5px;

116 border-style:solid;

border-color:#0000ff;

border-width:1px;

}

</style>

</head>

<body>

セッションに保存されたデータは以下のとおりです<Br>

<jsp:useBean id="datas" class="datas.PersonalList" scope="session" />

<table>

<tr>

<th>学籍番号</th>

<th>氏名</th>

<th>年齢</th>

<th>大人</th>

</tr>

<c:forEach var="p" items="${datas.list}" >

<tr>

<td><c:out value="${p.id}" /></td>

<td><c:out value="${p.name}" /></td>

<td><c:out value="${p.age}" />才</td>

<td>

<c:if test="${p.age > 20}">

*

</c:if>

</td>

</tr>

</c:forEach>

</table>

</body>

</html>

117

<%@ page language="java" import="java.lang.*,java.util.*,datas.*"

contentType="text/html; charset=utf-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

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

<html>

<head>

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

<meta http-equiv="Pragma" content="no-cache">

<meta http-equiv="Cache-Control" content="no-cache">

<meta http-equiv="Expires" content="0">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<style type="text/css">

table{

border-collapse:collapse;

} td,th{

padding:5px;

border-style:solid;

border-color:#0000ff;

border-width:1px;

}

</style>

118 </head>

<body>

セッションに保存されたデータは以下のとおりです<Br>

<jsp:useBean id="datas" class="datas.PersonalList" scope="session" />

<table>

<tr>

<th>学籍番号</th>

<th>氏名</th>

<th>年齢</th>

<th>大人</th>

</tr>

<c:forEach var="p" items="${datas.list}" >

<tr>

<td><c:out value="${p.id}" /></td>

<td><c:out value="${p.name}" /></td>

<td><c:out value="${p.age}" />才</td>

<td>

<c:choose>

<c:when test="${p.age > 20}">

大人

</c:when>

<c:otherwise>

未成年

</c:otherwise>

</c:choose>

</td>

</tr>

</c:forEach>

</table>

</body>

</html>

119

<!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>Insert title here</title>

</head>

<body>

<h2>アンケート1</h2>

<form action="servlet/Get1" method="post">

<h3>問1:性別</h3>

<input type="radio" name="sex" value="0" checked>男

<input type="radio" name="sex" value="1">女

<h3>問2:年齢</h3>

<select name="age">

<option value="0" selected>~16歳</option>

<option value="1">17~22才</option>

<option value="2">23~30才</option>

<option value="3">31才~ </option>

</select>

<p>

<input type="submit" value="次へ">

</p>

</form>

</body>

</html>

120 bean

package answer;

public class AnswerData { //メンバ変数

private int sex; //性別 private int age; //年齢帯 private int salary; //時給

//コンストラクタ

public AnswerData() { }

public AnswerData(int sex, int age) { this.sex = sex;

this.age = age;

}

//セッタ・ゲッタ

public int getSex() { return sex;

}

public void setSex(int sex) { this.sex = sex;

}

public int getAge() { return age;

}

public void setAge(int age) { this.age = age;

}

public int getSalary() { return salary;

}

public void setSalary(int salary) { this.salary = salary;

} }

121 servlet

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import answer.AnswerData;

public class Get1 extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session = request.getSession();

int sex = Integer.parseInt(request.getParameter("sex"));

int age = Integer.parseInt(request.getParameter("age"));

AnswerData data = new AnswerData(sex , age);

session.setAttribute("ans", data);

this.getServletContext()

.getRequestDispatcher("/index2.html") .forward(request, response);

} }

122

<!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>Insert title here</title>

</head>

<body>

<h2>アンケート2</h2>

<form action="Get2" method="post">

<h3>問3:時給</h3>

<input type="text" name="salary" >

<p>

<input type="submit" value="終わり">

</p>

</form>

</body>

</html>

123 servlet Get2

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import answer.AnswerData;

public class Get2 extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session = request.getSession();

AnswerData ans = (AnswerData) session.getAttribute("ans");

int salary = Integer.parseInt(request.getParameter("salary"));

ans.setSalary(salary);

session.setAttribute("ans", ans);

this.getServletContext().getRequestDispatcher("/final.jsp").

forward(request, response);

} }

124 final.jsp

<%@ page language="java" import="java.lang.*,java.util.*"

contentType="text/html; charset=utf-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

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

<html>

<head>

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

<meta http-equiv="Pragma" content="no-cache">

<meta http-equiv="Cache-Control" content="no-cache">

<meta http-equiv="Expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<jsp:useBean id="ans" class="answer.AnswerData" scope="session"/>

年齢:<c:out value="${ans.age}" /><br>

性別:<c:out value="${ans.sex}" /><br>

時給:<c:out value="${ans.salary}" /><br>

</body>

</html>

これでは、表示が貧弱すぎるので

125

<%@ page language="java" import="java.lang.*,java.util.*"

contentType="text/html; charset=utf-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

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

<html>

<head>

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

<meta http-equiv="Pragma" content="no-cache">

<meta http-equiv="Cache-Control" content="no-cache">

<meta http-equiv="Expires" content="0">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>

<jsp:useBean id="ans" class="answer.AnswerData" scope="session"/>

年齢:

<c:choose>

<c:when test="${ans.age == 0}">~16才</c:when>

<c:when test="${ans.age == 1}">17才~22才</c:when>

<c:when test="${ans.age == 2}">23才~30才</c:when>

<c:otherwise>31才~</c:otherwise>

</c:choose>

<br>

性別:

<c:choose>

<c:when test="${ans.sex == 0}">男</c:when>

<c:otherwise>女</c:otherwise>

</c:choose>

<br>

時給:<c:out value="${ans.salary}" />円<br>

</body>

</html>

126 Beans に変換機能を持たせる方法もあります package answer;

public class AnswerData { //メンバ変数

private int sex; //性別 private int age; //年齢帯 private int salary; //時給

//コンストラクタ

public AnswerData() { }

public AnswerData(int sex, int age) { this.sex = sex;

this.age = age;

}

//セッタ・ゲッタ

public int getSex() { return sex;

}

<< 中略 >>

public String getSex2(){

if(sex == 0){

return "男";

} else{

return "女";

} }

public String getAge2(){

String s;

switch(age){

case 0:

s = "~16才";

break;

case 1:

s = "17才~22才";

127 break;

case 2:

s = "23才~30才";

break;

default:

s = "";

}

return s;

}

}

final.jsp

<%@ page language="java" import="java.lang.*,java.util.*"

contentType="text/html; charset=utf-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

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

<html>

<head>

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

<meta http-equiv="Pragma" content="no-cache">

<meta http-equiv="Cache-Control" content="no-cache">

<meta http-equiv="Expires" content="0">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>

<jsp:useBean id="ans" class="answer.AnswerData" scope="session"/>

年齢:<c:out value="${ans.age2 }" /><br>

性別:<c:out value="${ans.sex2 }" /><br>

時給:<c:out value="${ans.salary}" />円<br>

</body>

</html>

関連したドキュメント