6月29日

プロジェクト SpringMyApp を作成して動かすまで

プロジェクトを作成する

以下の手順でプロジェクトを作成する。(テキストp.39~)

  1. メニューから[新規]-[その他]を選択する。
  2. 「ウィザードを選択」のダイアログで[Spring]-[Srpingプロジェクト]を選択して「次へ」をクリック。
  3. プロジェクト名に「SpringMyApp」を入力する。
  4. テンプレートは「Simple Spring Web Maven」を選択して「完了」をクリック。

プロジェクトを更新する

パッケージエクスプローラで作成したプロジェクトを右クリックし、メニューで[Maven]-[プロジェクトの更新]を選択する。
Eclipse画面の右下でビルド中の表示が消えれば完了。

Maven installを実行する

パッケージエクスプローラで作成したプロジェクトを右クリックし、メニューで[実行]-[Maven install]を選択する。
コンソールに以下のように出力されれば完了。

[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.169 s
[INFO] Finished at: 2015-06-29T10:02:49+09:00
[INFO] Final Memory: 12M/220M

Tomcat7サーバーに追加

以下の手順で作成したプロジェクトをTomcat7サーバーに追加する。

  1. Eclipseのサーバータブで、Tomcat7サーバーを右クリック。
  2. メニューで「追加および除去」を選択。
  3. 作成したプロジェクトを選択し「追加」をクリックして右の枠に移動させる。
  4. 「完了」をクリック。
  5. http://localhost:8080/ProjectName にアクセスする。
  6. click to enter と表示されればOK。

コントローラを作成する

プロジェクト配下の特定のURLにアクセスされたときの処理を記述するには、コントローラを作成する必要がある。
以下の手順でコントローラを作成する。(テキストp.160~)

  1. パッケージエクスプローラで作成したプロジェクトを展開する。
  2. 「Javaリソース」を展開する。
  3. 「src/main/java」を右クリックし[新規]-[クラス]を選択する。
  4. パッケージ名に「jp.abc」を入力。
  5. クラス名に「MyAppController」を入力。
  6. 「完了」をクリック。
  7. MyAppController.java のエディタが開く。

MyAppController.javaのコードを編集する。テキストp.163のリスト3-3とほぼ同じ。パッケージ名だけは異なるので注意すること。

MyAppController.java

package jp.abc;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class MyAppController {

	@RequestMapping(value = "/helo", method = RequestMethod.GET)
	public String helo(Model model) {
		model.addAttribute("message", "this is sample. ok?");
		return "showMessage";
	}
}

mvc-config.xmlを設定する

パッケージエクスプローラで プロジェクト名 > src > main > webapp > WEB-INF の下にある mvc-config.xml を開く。
以下の部分を書き換える。

mvc-config.xml

    <!-- Uncomment and your base-package here:
         <context:component-scan
            base-package="org.springframework.samples.web"/>  -->

書き換え後は以下のとおり。

mvc-config.xml

    <context:component-scan base-package="jp.abc"/>

設定ファイルを変更したので、Tomcat7サーバーを再起動する。
http://localhost:8080/(ProjectName)/helo にアクセスすると、「this is sample. ok?」と表示される。

入力フォームを追加する

SpringMVCで入力フォームを作るには、データをやり取りするためのオブジェクトを作成する必要がある。
jp.abc パッケージにFormModelクラスを作成する。

「src/main/java」の下の「jp.abc」を右クリックして[新規]-[クラス]を選択する。
名前に「FormModel」と入力して完了をクリック。
以下のコードを入力する。

FormModel.java

package jp.abc;

public class FormModel {
	private String input1;

	public String getInput1() {
		return input1;
	}

	public void setInput1(String input1) {
		this.input1 = input1;
	}
}

次にJSPを編集する。
「src > main > webapp > WEB-INF > view」の下にある showMessage.jsp を開き、以下のようにコードを追加する。2行目の taglib ディレクティブを忘れないように!

showMessage.jsp

<!DOCTYPE html>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<html>
	<head>
		<meta charset="utf-8">
		<title>Welcome</title>
	</head>
	<body>
		<h2>${message}</h2>
		<form:form modelAttribute="formModel">
			<form:input path="input1"/>
			<input type="submit">
		</form:form>
	</body>
</html>

MyAppController を編集する。
GETメソッドで呼ばれたときに、FormModelを渡すようにコードを追加する。
また、POSTメソッドで呼ばれたときに、渡された文字列を message に渡すようにする。

MyAppController.java

package jp.abc;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class MyAppController {

	@RequestMapping(value = "/helo", method = RequestMethod.GET)
	public String helo(Model model) {
		FormModel fm = new FormModel();
		fm.setInput1("ここに書く");
		model.addAttribute("formModel", fm);
		model.addAttribute("message", "何か書いてください。");
		return "showMessage";
	}

	@RequestMapping(value = "/helo", method = RequestMethod.POST)
	public String form(@ModelAttribute FormModel fm, Model model) {
		model.addAttribute("message", "you typed: " + fm.getInput1());
		return "showMessage";
	}
}

文字化けの対策

日本語文字列を入力して送信すると文字化けが発生する。
フィルターを設定して文字化け対策をする。

「src > main > webapp > WEB-INF」にある web.xml を開き、ソースタブを選択してフィルターの設定を追加する。

最後の </web-app> タグの直前に追加する。

	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です