JSONICでPOSTリクエストのパラメータを取得する


スポンサーリンク

JSONICのRESTServletを使って、POSTリクエストを受け取って、その値を取り出し、Jsonで値を返却してみます。

以下のようなフォームからPOSTリクエストを飛ばします。
f:id:sho322:20141123144549j:plain

HTMLはこんな感じです。

<!DOCTYPE html>
<html>
<head>
<title>お問い合わせ</title>
<meta charset="utf-8">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
  //特に何もなし
</script>
</head>
<body>

<article>
<h2>お問い合わせ</h2>
<p id="summary">ご意見、ご感想などあったら記入して送信してください。</p>
<form action="http://localhost:8080/json-web/sample/post/person.json" method="post">
<p><label>名前:<br/>
  <input type="text" name="name" size="40">
</label></p>

<p><label>メールアドレス:<br/>
  <input type="text" name="mail" size="40">
</label>
</p>

<p>
<label>コメント:<br/>
  <textarea name="comment" cols="50" rows="8"></textarea>
</label>
</p>

<p id="button">
  <input type="submit" value="送信">
  <input type="reset" value="リセット">
</p>

</form>

</article>

</body>
</html>

このリクエストをJSONICのRESTServletで受け取って、以下のようにJsonの値を返してみます。

f:id:sho322:20141123144559j:plain

pom.xml

<dependency>
	<groupId>net.arnx</groupId>
	<artifactId>jsonic</artifactId>
	<version>1.3.3</version>
</dependency>


web.xml

  <servlet>
	    <servlet-name>restServlet</servlet-name>
	    <servlet-class>net.arnx.jsonic.web.RESTServlet</servlet-class>
	    <init-param>
	        <param-name>config</param-name>
	        <param-value>
	        {
	        	"debug": true,
	        	"mappings": {
	        		"/sample/post/person.json": {
	        			"target": "com.code.log.web.SampleService",
	        			"method": {"POST":"getPostParameter"},
	        			"verb": ["POST"]
	        		}
	        	}
	        }
	        </param-value>
	    </init-param>
	</servlet>

	<servlet-mapping>
	    <servlet-name>restServlet</servlet-name>
	    <url-pattern>*.json</url-pattern>
	</servlet-mapping>

url-patternで*.jsonを指定しているけれど、POSTを受け取るときは、*.jsonを指定しなくてもいいかも。


SampleService.java

package com.code.log.web;

import java.util.Map;


public class SampleService {

	public Person getPostParameter(Map<String,String> params) {
		System.out.println("getPostParameter is called");
		Person person = new Person();

		String name = params.get("name");
		String mail = params.get("mail");
		String comment = params.get("comment");

		person.setName(name);
		person.setMail(mail);
		person.setComment(comment);

		return person;
	}
}

これで、TomcatみたいなサーブレットコンテナにデプロイすればOK。

ディレクトリ構成はこんな感じ。
f:id:sho322:20141123144621j:plain