はじめに
テスト用にWeb Projectを作って、終わったら削除するのであればMavenである必要もないのですが、しばらく使うことを考慮してMavenを使えるようにします。
Eclipse Pluginの用意
New > Other > Maven > Maven Project でメニューが見つからなかったらプラグインが不足しているので、Installします。
Help > Install New Softwareで以下のように選択して導入します。
Maven Projectの作成
- Projectの配置場所を指定します。こだわりがなければ、デフォルトを指定します。
- Archetype に Liberty用の webapp-j2ee-liberty 違うアプリケーションサーバーを使っているような場合は、maven-arcehtype-webapp を選びます。
- Project名は以下のようにしました。
GropuId : qiita.keniooi // ここのページ用という意味で、
ArtifactId : sampleWeb // プロジェクト名として、
Version : デフォルト
Package : sample.web
Finishを押せば出来上がります。
pom.xmlの編集
必要なライブラリをpom.xmlに記述して使えるようにします。ここではJSONのライブラリを追加します。
JSON In Java
このサイトで 20180130 をクリックして、以下の部分からコピーします。
コピーしたテキストを sampleWebプロジェクトにある pom.xml を開いて dependencies タグの中に追加します。
...
<dependencies>
<dependency>
<groupId>net.wasdev.maven.tools.targets</groupId>
<artifactId>liberty-target</artifactId>
<version>RELEASE</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180130</version>
</dependency>
</dependencies>
...
この設定をすると Maven Dependencies に追加されているのが確認できます。
サーブレット作成
JSON を POSTで受け取って処理するサーブレットを、作成していく予定なのですが、ここでは、サーブレット中でStringをJSONArray, JSONObject で処理するサーブレットを作ってみます。doPost()に書いてくので、テスト用の doGet()はそのまま doPost()を呼び出してあります。
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public TestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json;charset=UTF-8");
String json = "[{\"name\":\"Satoh Taro\",\"id\":\"123\",\"mail\":\"taro@sample.com\"},"
+ "{\"name\":\"Suzuki Hana\",\"id\":\"124\",\"mail\":\"hana@sample.com\"}]";
JSONArray ja = new JSONArray(json);
ArrayList<Person> list = new ArrayList<Person>();
for(Object o : ja) {
JSONObject jo =(JSONObject) o;
Person p = new Person();
p.setName(jo.getString("name"));
p.setId(jo.getString("id"));
p.setMail(jo.getString("mail"));
list.add(p);
System.out.println(p.getId() + "," + p.getName() + "," + p.getMail());
}
response.getWriter().println(json);
}
}
class Person {
String name;
String id;
String mail;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
}
このサーブレットにFirefoxでアクセスすると以下のようになり、
Libertyのログには、
123,Satoh Taro,taro@sample.com
124,Suzuki Hana,hana@sample.com
と出力されます。
参考
Eclipse+Maven という便利な開発環境をインストールからプロジェクト作成まで
【Java】JSONデータを標準API、Jackson、JSON in Javaで扱う方法