String method = request.getMethod();暗黙オブジェクトrequestの「getMethod」は、アクセスのメソッドを返すものです。返り値は、「GET」か「POST」のいずれかになります。JSPのgetParameterなどのメソッドは、GETでもPOSTでも同様に呼び出され値が取得できます。利用の上では、JSPはGET/POSTを意識することなく、全く同じように扱えるよう設計されているのです。が、時には「GETのときはこれ、POSTのときはあれ」というように処理を分けなければいけないこともあります。こうした場合に、getMethodが用いられます。
if ("GET".equals(method)){……略……}
<%@ page language="java" contentType="text/plain; charset=utf-8"よく見ると、contentType="text/plain; charset=utf-8"になっていますね? text/htmlではなく、text/plainに変わっています。こういう「サーバーに問い合わせて結果をもらうだけ」というような場合には、ただのテキストを出力するだけですから、text/plainにしておきましょう。
pageEncoding="utf-8"%>
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※index.htmlの修正
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Hello App Engine</title>
<style>
h1 {font-size:16pt; background:#AAFFAA; padding:5px; }
</style>
<script type="text/javascript">
function doAction(){
var req = createRequest();
if (req == null){
alert("実行できません!");
return;
}
var s = document.getElementById('input').value;
req.open("post", "helo.jsp?param=" + encodeURI(s));
req.setRequestHeader("User-Agent","XMLHttpRequest");
req.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200){
var msg = document.getElementById('msg');
msg.innerHTML = this.responseText;
}
}
req.send();
}
function createRequest(){
var httplist = [
function(){ return new XMLHttpRequest(); },
function(){ return new ActiveXObjct("Msxml2.XMLHTTP"); },
function(){ return new ActiveXObject("Microsoft.XMLHTTP"); }
];
for(var i = 0;i < httplist.length;i++){
try {
var http = httplist[i]();
if (http != null) return http;
} catch(e){
continue;
}
}
return null;
}
</script>
</head>
<body>
<h1>Hello App Engine!</h1>
<p id="msg">※なにか書いて送信してください。</p>
<table>
<tr><td>入力</td><td>
<input type="text" id="input" name="input"></td></tr>
<tr><td></td><td>
<button onclick="doAction();">Send</button></td></tr>
</table>
</body>
</html>
※helo.jspの修正
<%@ page language="java" contentType="text/plain; charset=utf-8"
pageEncoding="utf-8"%>
<%
String method = request.getMethod();
if ("GET".equals(method)){
out.println("can't access!");
} else {
String inpt = request.getParameter("param");
out.println("あなたは、 '" + inpt + "' と書きました。");
}
%>
| << 前へ | 次へ >> |