フォーム送信とデータのやり取り
ページ間でのデータの受け渡しの為、「index.jsp」と、「back.jsp」の2ファイルを作る。
■index.jsp
<%@ page language="java" contentType="text/html; charset=Shift_JIS"
pageEncoding="windows-31j"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSP SAMPLE</title>
</head>
<body>
");
String msg2 = (String)session.getAttribute("defaultMsg");
if (msg2 == null)
msg2 = "(SESSION:未送信)";
out.println("SESSION:" + msg2);
%>
<form method="post" action="./back.jsp">
<input type="text" name="text1">
<input type="submit">
</form>
</body>
</html>
■back.jsp
<%@ page language="java" contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_JIS"%>
<%
request.setCharacterEncoding("Shift_JIS");
String msg = request.getParameter("text1");
String result = "Hello, " + msg + "!";
request.setAttribute("message",result);
if (session.getAttribute("defaultMsg") == null)
session.setAttribute("defaultMsg",result);
if (msg != null)
pageContext.forward("./index.jsp");//リーダイレクト
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Insert title here</title>
</head>
<body>
※このページは、直接開いても動きません。
</body>
</html>
index.jspの実行クリックしてサーバー実行をする。
表示
REQUEST:未送信
SESSION:未送信
が表示される
適当なテキストを書いて何回か送信するしてみる。
REQUEST:Hello、二回
SESSION:Hello、初回
と表示される。しかし、SESSIONの方は初回にしか変わらない。
getAttribute:値を取り出し
setAttribute:値をセット
request:毎回送信する度に送られた値が表示
session:最初に送信したメッセージだけ
※コメント投稿者のブログIDはブログ作成者のみに通知されます