JSONICでPOSTリクエストのパラメータを取得する
JSONICのRESTServletを使って、POSTリクエストを受け取って、その値を取り出し、Jsonで値を返却してみます。
以下のようなフォームからPOSTリクエストを飛ばします。
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の値を返してみます。
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。
ディレクトリ構成はこんな感じ。