せいてきファイルをWebAppにて、候

せいてき→性的でなく、静的ですよ。

ふふ(●´ิ∀´ิ●)

 

イラッ、を誘ったところですが、

ベースプロジェクト作成最終回ですね。

DBつなぐところとかも含めるのはありですが、

いったんは、これで。

 

あくせく作ったspring webアプリですが、

css, js使いたいですね。

 

やり方はメインどころが2つあるかと思っています。

①web App内部に持っちゃう

②webサーバーをプロキシとして利用、そのhtdocsに入れちゃう

今回は①でいきましょう。

 

といって、簡単です。

既存のsrc/mainディレクトリ配下にwebappディレクトリを新設して

ファイルをぶち込めば、

相対パス(webappディレクトリまで省略可)を指定してファイルが読み込まれます。

 

・・・

 

おしまい。

 

さて、ここまで作ってきたベースサイトAppですが、

パッケージを落とせるURL貼っときます。

別に何利用(あきない含)でも使ってよいので、必要な方は。

https://github.com/akotadakura/SpringGradleProject

 

なんのひねりもなく、

ちゃんちゃん。

SpringのビューをThymeleafでつくるんだびゅー

Spring web appを作るうえで、MVCの各セクションでこだわりたいものですね。

今回はViewです。

Thymeleafというテンプレートエンジンを使います。

使えるファイル形式はhtmlです。

つまりデザイナーさんとの分業がしやすい、ということになります。

デザイナーさんたちとの協業を推し進める Thymeleaf | ヌーラボ

 

ちなみに呼び方はタイムリーフ、らしいです。

これを知ったころ、同期ともめました。

彼女:タイムリーフじゃない?

私:いやいやthだしスィでしょスィ、スィミリーフ

調べた別の同期:(カタカタ、カチッ)タイムリーフだって

私:Σ(°Д°υ)

彼女:(●´ิ∀´ิ●)

私:(*ノ▽ノ)<炎炎炎炎炎炎炎炎炎

 

Thymeleafの使用例が載っているページ、よくありますが、

ただ単にhtml(Tymeleafインポート入り)を作ればいいわけではないです。

html(Thymeleafでなくjspを使うときにはjsp)をマッピングするに必要なことがあるですよ。

 

考えてみれば、最初に作ったControllerメソッドのString戻り値が

そのまんま画面に出されていますね。

この戻り値がhtml属性ではなくhtmlファイル名に紐づくよう設定が必要です。

 

必要なことは3つあります。

①src/main/resources配下にtempletesフォルダ作成、その配下にhtml作成

②src/main/resources配下にapplication.propetiesファイルを配置

③Controllerの設定読み取りアノテーション追加

 

①src/main/resources配下にtempletesフォルダ作成、その配下にhtml作成

→まあ、出したいhtml作成ですね。

 中身はこちらをごらんあれ

 Spring BootでThymeleafを使う | Developers.IO

 

②src/main/resources配下にapplication.propetiesファイルを配置

→肝ですね。spring appのアプリセッティングファイルです。

 ここで、return値とhtmlファイルを結びつける設定をするのです。

 ファイルの中身を

-----↓

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html

-----↑

 

③Controllerの設定読み取りアノテーション追加

→さっきのファイルを追加しただけでは、javaは読んでくれぬものです。

 で、アノテーション"@EnableAutoConfiguration"を追加します。

 追加先は、Controllerクラスのクラス前に。

 一応、App起動クラスにも同様につけときましょうか。

 

起動、動作チェックして、終わり。

これで、ベース機能はできました。

thymeleafで使うjsやcssの静的ファイルは、

src/main/webapp配下に置けば、認識されます。

インポートする際のパスは、webappまでは省略し、以下のパスを記述します。

webapp/js/sample.jsであれば、src="js/sample.js"なんて感じです。

 

まあ、静的ファイルはapache サーバーをプロキシとして使ってしまえば、

htdocsにおいて終わりなのですが。

 

本ブログは、実は今回の記事に書く内容がおおきなきっかけだったりします。

thymeleafの使い方が、肝心な設定がまぁ、載っていない...

今後は時代に退行してmaven とかEJB とか書きだすかもしれませんので、

良ければお付き合いください。

近日中に、簡単なスケルトンプロジェクトを配布可能な形にします。

 

ここまで枠ができれば、まあ、みなさん好き好きにできるでしょう。

May you have an enjoyable coding lifeというかんじですねぇ。

 

ちゃんちゃん。

 

 

Spring + Gradleの環境づくり -環境作って動かん今日-

「環境」っていう言葉は、難しい( ̄ω ̄;)

なんの事かと、気づかなければそれに越したことはありませんよ。

 

とりあえず、プロジェクトをつくる前の下準備をまとめようかと。

以下ρ(..*)

 

jdk インストー

いわずもがな、java開発の必要条件といえるjdk

一応言っときますが、これがないとeclipse 動きませんぜ。

まさかここでjavaが何たるかを言おうか、なんてことはしません。

必要ないですよね?

一応リンク

ダウンロードページ

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

インストール解説ページ

www.javadrive.jp

※忘れるなかれ、Path開通

 

②Gradle インストー

さて肝の1つですよ。

Gradle、それは自動化ツール

Gradle、それはjavaプロジェクトビルドツール

Gradle、それはGroovy由来の次世代ツール

 

・・・くどいヽ( ・∀・)ノ┌┛

まだ私も理解しきっているわけではないのですが、

設定をコミコミにすれば、1つのコマンド実行だけで

javaプロジェクトビルド -> サーバーにデプロイ -> アプリrun

まで行ってくれるそうです。

ぐれーどるなにそれおいしいの?など言っていられないですね。

 

肝心のインストールですが、

配布ページはこちら

https://gradle.org/releases

英語読めない~ღゝ◡╹)ノ♡という者どもには鉄槌を

解説ページはこちらにいいページ

qiita.com

Gradle のダウンロードパッケージ、binary-only と complete 2種類があるようですが、

Anything will do どっちでもよかと、らしいです。

 

STS

開発環境はこれです。正体はeclipse(以下、食)。

もう持っていて余計にいれたくないよ~という方は、

マーケットプレイスからspringプラグインを入れる、

というのでもいいと思います。

まあ、よほど容量ヤバスという方でない限り、

複数のを管理しといて損もないと思います。

配布ページはこちら

https://spring.io/tools/sts/all

英語読めない~ღゝ◡╹)ノ♡という者どもの部屋にはゴ〇ブリを

解説ページはこちらもいいページ

qiita.com

勿れ不適切なパッケージダウンロード

 でないと起動時に!!(۳˚Д˚)۳ なエラー出ますよ。

Win/mac/linux、32/64bit でOSは選べますからね。

せっかくなので、iniファイルいじりますか。

heapサイズ上げて動作快適にしたり、

ソースのデフォルト文字コードUTF-8にしたり。

 

STS()にGradleプラグイン突っ込む

STS(食)は、標準でmaven対応ですが、Gradleはデフォ非対応です。

IntelliJ(賢J?)はデフォ対応らしいですね。高いけど...

STS(食)のマーケットプレイスでGradleと調べると、わらわら出てきます(笑)。

・・・

オールインワンなこいつ入れちゃいましょ。

f:id:lebendleid:20170527200017p:plain

入れると警告出ますが、まあ、お気になさらず。

 

 

下準備は完了です。

あとはGradleコマンドでプロジェクト生成し、STSでインポートです。

なぜコマンドか...それはかっこいいからIDEに依存しないプロジェクトのため。

会社準備のChefやらでほぼ自動的に環境が出来上がるのでなく、

地味に環境つくってプロジェクトつくるのって

悦なんですねぇ~(*´﹃`*)

 

ちゃんちゃん。

Gradleプロジェクトをeclipseにimport -コマンド打たないと、困んど(●´ิ∀´ิ●)-

たまに、しれっと、冷房効果のある言の葉を入れ込みます。

決定事項です。

 

いやね、コマンドが必要なんですよ。

eclipse先生にプロジェクトを認識してもらうために。

 

話は簡単、こんな感じです。

 ①cdコマンド でプロジェクト直下に移動

 ②"gradle eclipse"実行

で、いけます。

これでプロジェクトインポートしたいとき、eclipseはプロジェクトを認識できます。

 

ついでに便利なコマンド、打っときましょうか。

コマンドプロンプトを開いたまま、"gradle wrapper"と打ってみます。

何か走ります...

 

そもGradleのメリットの1つに、

インストールしていないユーザーもGradleは使えるんだぜ、というのがあります。

正直、インストールは面倒くさい...

あとGradleのバージョンがチームでばらつく...

という問題を回避できますね。

これで、パッケージをGitやらSVNやらで落としてきた人は、

Gradleをインストールすることなく、

cdコマンドでプロジェクト直下に移動し、"gradlew build"を唱えるだけでビルド!!

(人´Å`)素敵*。.・゜+。

 

コマンド話は置いといて、hello world 出しましょう。

まず、あくせく作ったプロジェクトをSTSにimportしましょう。

f:id:lebendleid:20170604172137p:plain

Gradleプラグインを入れていれば、こんな選択肢がでるはずですねぇ。つぎつぎ!

 

f:id:lebendleid:20170604172727p:plain

プロジェクトが出ている場合、出ていない場合、

あると思いますが、赤枠ボタンを押してビルドを押します。

からのFinish。importできました。

プロジェクト名変わっているの、察してください...orz

 

webアプリの起動クラス、作りましょうか。

必要なのは、

①Controllerクラス(Servletと役割が共通するものですね)

②Spring app起動クラス(これをrunすると、web appが立ち上がります)

 

参考になったのはこちらのページです↓

blog.okazuki.jp

ここでの、App.javaとHelloController.javaを作りましょう、ということです。

f:id:lebendleid:20170604181841p:plain

作ってから、App.classを起動します。

Run as  -> spring boot Appですね。

ちなみに、AppクラスとControllerクラスは、

同一パッケージにいれなければ、Controllerのアドレスはバインドされません。

つまり、起動してもアクセスできませんよ。

 

起動したら、RequestMappingで指定したパスをwebブラウザからみましょう。

こんな風に"localhost:8080/<指定パス>"

無事見れるはずですね。

 

ちゃんちゃん。

Gradleプロジェクト管理 -そこにgradle.buildがあるから-

タイトルきめぇ(´Д`)

今回はあれですgradle.buildです。

Javaやらhtmlやらなんやらのソースファイルをパッケージとしてまとめる肝のGradle。

そのGradleの肝となるgradle.build、これはGradleの挙動(?)を決めるやーつです。

Mavenにおけるpom.xmlっすね~。

gradle.buildを極める即ちGradleを極める也。

ちなみに、「きめぇ」と「肝」をかけてます。

...、はい次。

 

んじゃ、編集しましょうか。

バックアップはとるんやで~と耳たこですがね。

 

で、その修正後の用例を残したいのですが、

はてぶ初心者でソースコードの貼り方わからないorz...

ん~気が向いたら後で修正しますか。

 

build.gradle

こっから↓

 

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.2.RELEASE")
  }
}

// webアプリケーションパッケージなので。
// buildすると、warパッケージができるのです

//ちな、もともとの"apply plugin:java"は、warプラグインによりオワコン
apply plugin: "war"

 

//これ、持っとくと開発時に便利です
apply plugin: "spring-boot"

 

//eclipseで開発したい故
apply plugin: "eclipse"

 

// 入れるライブラリのバージョン管理はこちらで
ext {
  v_springBoot = '1.4.2.RELEASE'
  v_thymeleaf = '2.1.4.RELEASE'
  v_slf4j = '1.7.7'
  v_logback = '1.2.3'
  v_jnit = '4.12'
}

eclipse {
  classpath {
    containers "org.springsource.ide.eclipse.gradle.classpathcontainer"
  }
}

jar {
  baseName = "sprint-boot"
  version = "0.0.1-SNAPSHOT"
}

repositories {
  mavenCentral()
}

//ライブラリっす~
dependencies {
  compile("org.springframework.boot:spring-boot-starter-web:${v_springBoot}")
  compile("org.thymeleaf:thymeleaf-spring4:${v_thymeleaf}")
  compile("org.slf4j:slf4j-api:${v_slf4j}")
  compile("ch.qos.logback:logback-classic:${v_logback}")

  testCompile("junit:junit:${v_jnit}")
}

 

ここまで↑

 

gradleはgroovyで動作するので、コメントはじめ、javaライクに書けるのです(`ー´)

つまり、なぜそうなっているのかは、必要あれば詳細を後日記入しますが、

ざっとの説明はコメント見てくださいと。

じゃ、ビルドしましょうか。

 →コマンドプロンプトにて"cd プロジェクト"で移動した後"gradle build"

 

・・・

 

落とし穴┌(┌՞ਊ՞)┐キェァァァェェェェァァァ

gradle.buildいじっくって ルルルン♪ルンルン ビルドかけると、失敗します。

その対策を、以下に。

 

前回の記事で、gradleをつくってプロジェクトをつくると、

配下にLibrary.javaなるものができます。

これ、材料です。

 

gradle先生のおっしゃるところビルド失敗の理由は

javaソースん中にmainメソッドねーよ(メФ益Ф*)」と。

じゃあLibrary.javaの中にmainメソッド定義しちゃいますね。

まあ、普通にシスアウトでhello worldやっときましょうか。

※本来は、webアプリの起動クラスを作っちゃったほうが手っ取り早いですが、

まあ、長くなるので、今回(Library.java)はこれで。

 

Library.javaにmainメソッドを書いたら、ビルド実行!!

 →cd プロジェクトで移動した後"gradle build"

 

ちゃんとプロジェクト配下にbuildディレクトリができて、そのなかにwarもできてますぜ(;´▼ω▼)

ちゃんちゃん。

 

参考:

http://qiita.com/toruuetani/items/290d22a42c33c73831da

http://azuki-milk.hatenablog.com/entry/2015/01/19/031453

 

 

Gradleプロジェクトをコマンド生成してGithubにup

Githubにてリポジトリ作ったった(●´ิ∀´ิ●)

そのうちGitやらGithubやらも書き足すやもですが、暫定スルーで。

クローンして、ローカルにできたディレクトリにちゃくちゃくしたいのです。

 

...まじ蛸猫かわいい(p萌q♡ω♡+*)

 

クローンしてきました~

f:id:lebendleid:20170513200557p:plain

MyProjectいうのが、さっき作ったリポジトリに対応します。

Projectて( ̄ω ̄;) 命名やっちまった気がしなくもない

 

さて、ここからは、ちゃんと環境ができていることが前提です!!

つまり、

 ①Gradleはインストールされています

 ②STS(Springプラグイン入りeclipse可)起動します

 ③Gitはインストールされています(今更orz)

ってことになっているべきですねですね。

 

Gradleを使ってプロジェクトをつくりま~す(ง `ω´)ง

いうて、そんな大したことじゃないです。

手順は以下

  1. コマンドプロンプト立ち上げ

  2. cdコマンドでチェックアウトしているディレクトリの中に

  3. Gradleのプロジェクト作成コマンド実行

  →"gradle init --type java-library" (実行時はダブルクウォート抜いてちょ)

f:id:lebendleid:20170513202611p:plain

うっう~何かいろいろできました(๑•̀ㅂ•́)

 

ここに対して、今後どんどんちゃくちゃくしていきますよ~

まぁ、ここで、いったん、切りましょか。

End!!

 

p.s. 「うっう」って顔文字だわ → (;うっう)「あし、そんなこと言われても」的な

・・・

 

ちゃんちゃん。

SpringとGradleでwebアプリ、つくりたい(`・ω・´)ノ

ん~、お仕事ではレガシー技術ばっかりなのです~

ゆえ!brand new 技術使いたい!!という動機のもと、何か作ります(*´∀`)

せっかくなのでびぼーろく的にアップしながら、役立つ人には役立てばいいかと。

 

・・・

どーすんべ...

 

お金ないので支出管理アプリでも作りましょうかね。

 

技術はざっとこんな感じ

Spring × Gradle × Github = WepApp

ほかにAngularJS(最近4がでたらしい)とか、周辺的に触りましょうかね。

 

アフィリエイト目的でないため、

デザインはそれほどいじくったりすることはなくいきます。

ゆる~くお付き合いお願いしま~す< (´・ω・´) >

 

 

(追記)

だんだん記事できてきたので、索引作ります。

下に行くほど工程は、後です。

 

Spring + Gradleの環境づくり -環境作って動かん今日- - ねんりん(仮)

  -> 開発環境作りましょうぜ旦那、的な

Gradleプロジェクトをコマンド生成してGithubにup - ねんりん(仮)

 -> 格好いい便利なのでGradleコマンドでJava Project作りましょうぜ旦那、的な

Gradleプロジェクト管理 -そこにgradle.buildがあるから- - ねんりん(仮)

 -> 折角のProjectにブツ、突っ込みやしょうぜ旦那、的な

Gradleプロジェクトをeclipseにimport -コマンド打たないと、困んど(●´ิ∀´ิ●)- - ねんりん(仮)

 -> eclipseにぶちこむなら、これ必要ですぜ旦那、的な

 

 

p.s. 背景はぱお~ん、そういえばぱお~んがロゴに含まれる奴らありますね。

Gradleやらhadoopやら