6月2日

SpringMVCでWebアプリを作ってみる。

「Click to enter」が表示されている前提。

自作のJavaクラスをSpringMVCに読み込んでもらうための設定を行うため、src/main/webapp/WEB-INF/mvc-config.xml を開く。

1行だけ書き換える。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

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


    <mvc:annotation-driven />

	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	        <!-- Example: a logical view name of 'showMessage' is mapped to '/WEB-INF/jsp/showMessage.jsp' -->
	        <property name="prefix" value="/WEB-INF/view/"/>
	        <property name="suffix" value=".jsp"/>
	</bean>

</beans>

Controller を作成する。

Javaリソースの src/main/java を右クリックし、[新規]-[クラス]を選択する。

パッケージ名は jp.abc
クラス名は MyAppController

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";
	}
}

tomcat を起動して http://localhost:8080/SpringMyApp/helo にアクセスすると、「this is sample.ok?」のメッセージが表示される。

フォームを使ってデータを送信する
shoeMessage.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>

SpringMVCでは、フォームデータをやりとりするためにクラスを使用する。
そのためのクラス FormModel を作成する。

package jp.abc;

public class FormModel {
	private String input1;

	public String getInput1() {
		return input1;
	}

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

コントローラにフォームデータをやり取りするための処理を追加する。

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";
	}
}

データを送信できるようになるが、文字化けが発生する。
次回は文字化けの対策から。

コメントを残す

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