ページ

2014年12月30日火曜日

GAEと戯れる 12 - Slim3 ControllerとJSP -

ControllerとJSPを見てみる

前回Antで作成したControllerとJSPがどんな風になっているのか確認。

・IndexController.java
public class IndexController extends Controller {

    @Override
    public Navigation run() throws Exception {
        return forward("index.jsp");
    }

}

・index.jsp
<%@page pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@taglib prefix="f" uri="http://www.slim3.org/functions"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Index</title>
</head>
<body>
<p>Hello Index !!!</p>
</body>

</html>

ControllerはSAStrutsでいう所のActionクラスっぽい。戻り値としてパスを含んだ
Navigationクラスを返却している。
JSP側はいつも通りっぽい。ただ至ってシンプルなのでデフォルトで配置されている
CSSを読み込む。

war/css/global.cssを読み込むようにjspを修正。
<%@page pageEncoding="UTF-8" isELIgnored="false" session="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@taglib prefix="f" uri="http://www.slim3.org/functions"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="/css/global.css" />
<title>Index</title>
</head>
<body>
<h1>Hello Index !!!</h1>
<p>page sample.</p>
</body>

</html>

↓実行結果







変わった変わった^^
次にControllerとViewの連携をやってみる。それぞれ以下に修正。

・IndexController.java
public class IndexController extends Controller {

    @Override
    public Navigation run() throws Exception {
        request.setAttribute("msg", "this is write in run function!!");
        return forward("index.jsp");
    }

}

・index.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="/css/global.css" />
<title>Index</title>
</head>
<body>
<h1>Hello Index !!!</h1>
<p>${msg}</p>
</body>

</html>

継承元のControllerにHttpServletRequest requestが定義されている為使用できる。
index.jspではEL式でmsgを表示している。

↓実行結果





連携できている^^

ここまでをGAE側へデプロイしてみる

1. まずはGAE側でアプリケーションの登録を行う。
     以下へアクセス
     https://appengine.google.com









2. 「Create Application」を選択し作成画面へ遷移

















3. Application IdentifierとApplication Titleを入力し作成。

     ・Application Identifier ・・・GAE内でユニークとなるもの、サブドメインになる。
                                                         ※右となりのチェックボタンで一意かチェックできる

     ・Application Title        ・・・好きなタイトルを付けれる

















↓作成完了












4. 「appengine-web.xml」の編集
<application></application>タグにGAE側で作成したプロジェクトの「Application Identifier」を設定する












5. プロジェクトをデプロイ
「GDT pulldown」メニューから「Deploy to  App Engine...」を選択
























実行!!






























↓コンソールのログ
------------ Deploying frontend ------------

Preparing to deploy:
Created staging directory at: '/var/folders/6b/7v871n_x0273ts_v950blc8m0000gn/T/appcfg3099164888655695181.tmp'
Scanning for jsp files.
Compiling jsp files.
Scanning files on local disk.
Initiating update.
Cloning 34 static files.
Cloning 60 application files.

Deploying:
Uploading 7 files.
Uploaded 1 files.
Uploaded 2 files.
Uploaded 3 files.
Uploaded 4 files.
Uploaded 5 files.
Uploaded 6 files.
Uploaded 7 files.
Initializing precompilation...
Sending batch containing 7 file(s) totaling 16KB.
Deploying new version.
Closing update: new version is ready to start serving.
Uploading index definitions.
Uploading task queues.


Deployment completed successfully

↓ちゃんとデプロイできました^^














0 件のコメント:

コメントを投稿