eclipse で Gradle プロジェクトの Spring 環境をつくる(part 1)
こんにちわ、最近平和な日々を過ごすほげPGです。
今回、eclipse上でGradleプロジェクトを作り、springの環境を作りたいと思います。
各モジュールのバージョンは以下の通り
eclipse 4.6.2
gradle 2.14.1
spring 4.3.7.RELEASE
jdk 1.8
tomcat 8.0
フォルダ構成
src main java resources webapp resources WEB-INF views
1、Gradleプロジェクトの作成
eclipse の新規プロジェクトからGradleプロジェクトを選択し、次へ押下
プロジェクト名を指定し、完了押下
しばらくすると、プロジェクトが作成される
2、必要なフォルダを作成し、Gradleリフレッシュ
フォルダ作成:src/main/webapp、src/main/resources
src/main/webapp配下にindex.jspを作成
<html> <body> Hoge </body> </html>
build.gradle を修正
apply plugin: 'java' apply plugin: 'war' sourceCompatibility = 1.8 targetCompatibility = 1.8 repositories { jcenter() } dependencies { compile 'org.springframework:spring-webmvc:4.3.7.RELEASE' compile 'org.slf4j:slf4j-api:1.7.21' compile 'org.slf4j:slf4j-log4j12:1.7.21' providedCompile 'javax.servlet:javax.servlet-api:3.0.1' providedCompile 'javax.servlet:jsp-api:2.0' testCompile 'junit:junit:4.12' }
Gradleリフレッシュ
4、プロジェクトの設定
プロジェクトのファセットをjava1.8、動的Webモジュール3.0に設定
Webデプロイメント・アセンブリーを設定
/WebContentを削除し、/src/main/webappを追加
コンテキストパスを変更
ほげる(tomcatに追加し起動確認)
5、各種設定とコントローラなど作成
src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <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> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-context.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
src/main/webapp/WEB-INF/spring-context.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <mvc:annotation-driven /> <context:component-scan base-package="jp.co.ois.hoge" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> <mvc:resources mapping="/resources/**" location="/resources/" /> </beans>
src/main/java/jp/co/ois/hoge/HogeController.java
package jp.co.ois.hoge; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HogeController { private static final Logger log = LoggerFactory.getLogger(HogeController.class); @ModelAttribute("hogeForm") public HogeForm createForm() { log.debug("called."); return new HogeForm(); } @RequestMapping("/top") public String top(Model model) { log.debug("called."); return "hoge"; } @RequestMapping("/names") public String names(HogeForm form, BindingResult result, Model model) { log.debug("called. {}", result.getErrorCount()); String s = form.getName1() + form.getName2(); log.debug("s = [{}]", s); model.addAttribute("result", s); return "hoge"; } }
src/main/java/jp/co/ois/hoge/HogeForm.java
package jp.co.ois.hoge; public class HogeForm { private String name1; private String name2; public String getName1() { return name1; } public void setName1(String name1) { this.name1 = name1; } public String getName2() { return name2; } public void setName2(String name2) { this.name2 = name2; } }
src/main/webapp/WEB-INF/views/hoge.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Are you hoge?</title> </head> <body> <form:form modelAttribute="hogeForm" servletRelativeAction="/names" method="POST"> 名前1 <br/> <form:input path="name1" /> <br/> 名前2: <br/> <form:input path="name2" /> <br/> <input type="submit" value="ほげ" /> </form:form> <hr> ${result} </body> </html>
src/main/resources/log4j.properties
log4j.rootLogger = INFO, Console log4j.logger.jp.co.ois.hoge = DEBUG log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%-5p (%F:%L) %M() - %m%n
ほげる(tomcat起動確認)
ほげ!(good)
プロジェクト一式は以下に置きました。
http://www.ois-yokohama.co.jp/oisblog2018/file/Hogedle.zip
今回はここまで。次回は Eclipse上で設定したことをbuild.gradle に記載してEclipseプロジェクトを作成したいと思います。では。