Maven Web Project の作成

#はじめに
テスト用にWeb Projectを作って、終わったら削除するのであればMavenである必要もないのですが、しばらく使うことを考慮してMavenを使えるようにします。

#Eclipse Pluginの用意

New > Other > Maven > Maven Project でメニューが見つからなかったらプラグインが不足しているので、Installします。
Help > Install New Softwareで以下のように選択して導入します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/262366/8b63d74f-2e0c-6fcc-b1ef-033f471dccb8.png)


#Maven Projectの作成
![image.png](https://qiita-image-store.s3.amazonaws.com/0/262366/fe18b002-ee4f-83aa-0dd1-1270c9d8db9e.png)

* Projectの配置場所を指定します。こだわりがなければ、デフォルトを指定します。
* Archetype に Liberty用の webapp-j2ee-liberty 違うアプリケーションサーバーを使っているような場合は、maven-arcehtype-webapp を選びます。
* Project名は以下のようにしました。

GropuId    : qiita.keniooi // ここのページ用という意味で、
ArtifactId : sampleWeb  // プロジェクト名として、
Version    : デフォルト
Package    : sample.web

![image.png](https://qiita-image-store.s3.amazonaws.com/0/262366/9ac1d55e-c941-a28a-87b1-80482da5564c.png)

Finishを押せば出来上がります。

#pom.xmlの編集
必要なライブラリをpom.xmlに記述して使えるようにします。ここではJSONのライブラリを追加します。

[JSON In Java](https://mvnrepository.com/artifact/org.json/json)
このサイトで 20180130 をクリックして、以下の部分からコピーします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/262366/261a47e0-fd60-2b94-9e36-f41d4ae1bda5.png)

コピーしたテキストを sampleWebプロジェクトにある pom.xml を開いて dependencies タグの中に追加します。

```xml:pom.xml
...
	<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 に追加されているのが確認できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/262366/38fa16ee-d4fe-65d8-1fcc-b86b31c0ea7c.png)


#サーブレット作成
JSON を POSTで受け取って処理するサーブレットを、作成していく予定なのですが、ここでは、サーブレット中でStringをJSONArray, JSONObject で処理するサーブレットを作ってみます。doPost()に書いてくので、テスト用の doGet()はそのまま doPost()を呼び出してあります。

```java:TestServlet.java
@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でアクセスすると以下のようになり、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/262366/54d15a23-bbc5-c268-0a5a-2f919844a36d.png)

Libertyのログには、

```console:stdout
123,Satoh Taro,taro@sample.com
124,Suzuki Hana,hana@sample.com
```

と出力されます。

#参考
[Eclipse+Maven という便利な開発環境をインストールからプロジェクト作成まで](https://qiita.com/daikuro/items/4d4d694ddb3cc620bee1)
[【Java】JSONデータを標準API、Jackson、JSON in Javaで扱う方法](https://www.sejuku.net/blog/39599)