【動的なメッセージってどうやるの?】Thymeleaf (メッセージ式)

なんの記事?

Spring でよく使われるテンプレートエンジンの Thymeleaf についての記事です。
${} で記述することが多いと思いますがたまに見る #{} の使い方の基本的な説明です。


使い方

例えば index.html で以下のようなコードにします。

...
<body>
  <h1 th:text="#{content.msg}">Hello</h1>
</body>

それでは本題なのですが・・・

#{content.msg} ってなんなんだ??となりました。調べてみたら

resources フォルダの中に *.properties ファイルがありました。その中身に

content.msg="Top Page"

完全にこれですね(笑)


最後に

properties ファイルの意味がよくわかってないけれども他人のソースを見てこのメッセージ式というものを初めて知りました。

 

今度は properties ファイルに入る内容もまとめようかなぁと思います。

早く初心者を脱出したいなぁ~

【Java で Webアプリ開発入門】Spring Boot で MySQL に接続する方法

何の記事?

Spring Boot で MySQL にアクセスすることがあったので、覚え書きにとまとめます


MySQL
データベースとユーザーを作成

mysql -u root -p

CREATE でテーブルを作成して、下記コマンドでユーザーを作成

CREATE USER 'your name'@'localhost' IDENTIFIED BY 'your password';

最後に、作成したユーザーにデータベースの操作権限を付与します。

GRANT ALL PRIVILEGES ON 'database name'.* TO 'your name'@'localhost';

設定を反映します。

FLUSH PRIVILEGES;


application.yml ファイル

spring の resources フォルダに config フォルダを作成し、application.yml ファイルに以下を書きます。: の後に スペース忘れたとかでえ怒られることがあるので気をつけてください。

spring:

 datasource:

  url: jdbc:mysql://localhost/使いたいデータベース名?useSSL=false

  username: 名前

  password: パスワード

  driverClassName: com.mysql.jdbc.Driver


依存性

Jpa, Web, MySQL と Thymeleaf を選択してください。


エンティティの作成

コントローラーを置いている箇所にエンティティを作成します。

@Entity

@Table(name="使うテーブル名")

・・・

  @Id

  private String name;

・・・

@Id が付いているものは主キーであることを示します。


レポジトリーの作成

public interface Repository extends JpaRepository<Entityで作ったクラス,主キーの型>{

}


コントローラー

@Autowired

Repository repository

上記のようにレポジトリーのインスタンス Iterable<Entityで作ったクラス> data のように作って findAll() などでいれてあげると使えるようになります。

Thymeleaf 側では、th:each="${d:data}" のようにやれば使いやすいかと思います。


最後に

時間がなくまとまらない説明になってしまいました・・・いつか訂正したいなぁ

【Java で Webアプリ開発入門】Spring Boot の Controller でリクエストを処理しよう

何の記事?

Java で開発しなければならなく、ほぼ初心者の私が Spring Boot について勉強しているので、覚え書きにと・・・
今回は、コントローラーのアノテーションについてサラッとまとめていきます。


対象者

Java 上級者や、Spring Boot 中級者以上の対象ではないです(そんなに知識がないので笑)
どちらかというと、Rais とか他のフレームワークはやった事あるけど Java は初心者だし、もちろん Javaフレームワークも初めて・・・
という人向けです。一緒に勉強していくぐらいのつもりでお願いします笑


本題
@Controller

一般的なコントローラを作成する際につけるアノテーションです。
テンプレートを利用して HTML をレンダリングし、表示するという操作を行うページに用いられます。


@RestController

いわゆる RESTコントローラです。REST は、Representation State Transfer の略で分散システムのを実現するアプリケーションなどで 用いるアーキテクチャです。以下の4原則を守る事がポイントです。

  • アドレス可能性
  • ステートレス性
  • 接続性
  • 統一インターフェース

今回は、詳述しませんが(僕も良くわかっていないので笑)いつかまとめた記事を友達に作ってもらおうかと思います←人任せ
ただ簡単に言うと、外部からアクセスして必要な情報を取り出すシステムのこと?です。


@RequestMapping(value=アドレス,method=メソッド)

メソッドにつけるアノテーションでリクエストマッピングという機能を実現します。
アクセスするアドレスと実行するメソッドを結びつけるメソッドです。Rais では、ルーティングは別ファイルで指定しますね。
引数 method には、リクエストのメソッドを指定するのですが、例えば以下のようにします。必ず RequestMethod クラスのものを指定する必要があります。

@RequestMapping(value="/",method=RequestMethod.GET)

また、パス変数を用いる事も可能です。この場合は、@PathVariable アノテーションをつける事で参照します。

@RequestMapping("/{hoge}")

public String foo(@PathVariable int num){・・・}

こうした、このアドレス→このメソッドみたいに実行されるメソッドをリクエストハンドラと呼びます。


@ResponseBody

メソッドにつけるアノテーションで、サーバーからクライアントへの返答内容を意味するレスポンスをオブジェクトで設定できるようにします。オブジェクトを返す事で、それを元にページ内容が生成されます。
レスポンスとして返せるクラスのもっとも一般的なものは ModelAndView クラスだと思います。名前通り、データを管理するモデルと画面表示に関するビューの両方を扱います。メソッド定義の際に引数に入れてしまう事が多いです。


@RequestParam

これは、メソッド定義の際の引数の前につけられる事があり、パラメータの値を意味するアノテーションです。
@RequestParam("hoge")String str と引数を書いた場合、hoge という名前フォームから送られてきたパラメータを変数 str に自動的に渡されます。