LoginSignup
1
1

More than 5 years have passed since last update.

Play Framework勉強めも

Last updated at Posted at 2018-03-17

(参考)勉強してる書籍
https://www.amazon.co.jp/Play-Framework-2%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80-Java%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%ABWeb%E9%96%8B%E7%99%BA-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798133922/ref=cm_cr_srp_d_product_top?ie=UTF8

MVCアーキテクチャとは

アプリケーションを「Model」「View」「Controller」の組み合わせとして構築するもの。
「Controller」によって、「Model」「View」を制御する。

Model

・データ管理を行う
・アプリケーションで使用する、データの処理を引き受ける

View

・画面の表示に関する部分を引き受ける

Controller

・アプリケーション全体を制御するもの

Controllerクラスについて

(例)画面作成の処理


package controllers;

import play.*;
import play.mvc.*;

import views.html.*;

public class Application extends Controller {

    public static Result index() {
        return ok(index.render("Your new application is ready."));
/*
①indexインスタンスのrenderメソッドでHTMLクラスのインスタンスを取得。
②okメソッドで、Result型のインスタンスを返す。
*/
    }
}

・renderメソッド:render(引数)
引数を元にwebページのテンプレートをレンダリングするもの。返値はHTMLインスタンス。

アクションとは

アクションとは画面作成するメソッドみたいなもの。
Play アプリケーションが受け取ったリクエストのほとんどは、Action によって処理される。
アクションは play.mvc.Result 型の値を返し、これはクライアントへ送信される HTTP レスポンスを表す。

viewクラスについて

ページの外観を作るクラス。今回は大きく以下2つに分かれている。
main.scala.html
 →ページ全体のレイアウト
index.scala.html
 →indexのActionでコンテンツを表示する

イメージは、indexのActionが呼び出されるとmain.scala.htmlの中にindex.scala.htmlのコンテンツがはめこまれた状態で、レンタリングされる。
ページ全体のレイアウトをmain.scala.html、部分的なデザインをindex.scala.htmlに分けることにより、共通するレイアウトの中で、コンテンツだけ出力出来る。

main.scala.html


@(title: String)(content: Html)//変数の宣言

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">//cssの読み込み
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">//ファビコンの読み込み
        <script src="@routes.Assets.at("javascripts/jquery-1.9.0.min.js")" type="text/javascript"></script>//javascriptの読み込み
    </head>
    <body>
        @content//headで読み込んだ内容をbodyで出力する様にしている
    </body>
</html>

・頭文字に@をつけることで、scalaのメソッドを記述出来る。
・Playアプリケーションでは、ファイルはそれぞれ独自に設定されたアドレスで公開される。
 @routes.Assets.atでそれらを読み取る。
(参考)
・linkダグとは:https://saruwakakun.com/html-css/basic/link-rel
・ファビコンとは:http://www.htmq.com/tutorial/28_9.shtml
・viewフォルダにcssファイルを作成すると、テンプレート時にscalaオブジェクトとして自動生成される。

index.scala.html


@(message: String)

@main("Welcome to Play") {//引数はmain.scala.htmlのtitleに入る

    @play20.welcome(message, style = "Java")//main.scala.htmlのbodyに入る

}

@mainは、main.scala.htmlを呼び出すためのもの
・main("Welcome to Play")の"Welcome to Play"は、main.scala.htmlのtitleに入る。
・{}内は、(content: Html)に入る。
・@play20.welcomeはwelcomeページというページを生成するためのもの

routeクラスについて

動作の処理順を記載したファイル。


# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET     /                           controllers.Application.index()
//GETでルートが呼び出された場合は、indexアクションが呼び出される
# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)
//GETでpubliフォルダ内の、どれかのファイルが呼び出された場合は、Assets.atメソッドが呼び出される

・#で始まる文はコメント文

・[Get アドレス 呼び出すメソッド]で、メソッドを呼び出している。

・新しくActionやメソッドを追加した場合は、必ずここに記載する。

処理の流れ

1.Webサーバに対して、getが呼ばれる
2.conf/routesファイルより、Getの"/"についてはAplication.javaのindex()を呼べば良いことがわかる 3.Aplication.javaのindex()が呼ばれる
4.Aplication.javaのindex()で、index.renderが返却される
5.つまり、views/index.scala.htmlが返却される
6.index.scala.htmlは必ずmain.scala.htmlが参照される

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1