トップ 一覧 ping 検索 ヘルプ RSS ログイン

Google App Engineの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!Google App Engine (Python)
!!!環境
![[SDKのインストール|Google App Engine SDKのインストール]]
!!Hello World
*[[Hello World|Google App Engine Hello World]]
!!!フレームワーク
!!フレームワーク
![[webapp フレームワーク|Google App Engine webapp フレームワーク]]
![[Http Formパラメータの取得|Google App Engine Http Formパラメータの取得]]
![[開発環境での管理画面|Google App Engine 開発環境での管理画面]]
!!ユーザーサービス
![[ユーザーサービス|Google App Engine webapp ユーザーサービス]]
!!データストア
![[データストアの利用|Google App Engine データストアの利用]]
![[型とプロパティクラス|Google App Engine 型とプロパティクラス]]
!!テンプレート
![[テンプレート|Google App Engine テンプレート]]
!!Django
![[Djangoを利用する|Google App Engine で Djangoを利用する]]
!!!Tips

!静的ファイル
*http://webapp-improved.appspot.com/tutorials/gettingstarted/staticfiles.html?highlight=static
*app.yaml を編集
 application: helloworld
 version: 1
 runtime: python27
 api_version: 1
 threadsafe: true
 
 handlers:
 - url: /stylesheets
   static_dir: stylesheets 
 
 - url: /.*
   script: helloworld.app


![[GAE アーカイブからインポート]]
![[GAE Google Docsを利用する]]
![[GAE favicon.ico を設置する]]
![Google App Engine で Excel を作成しダウンロードさせる|http://typea.info/blg/glob/2010/03/google_app_engine_excel.html]
![Android (実機) と GAE を連携させるためのデバッグ環境を Windows7 に構築する|http://typea.info/blg/glob/2010/08/android_gae_windows7.html]
!GAE No module named _multiprocessing エラーが発生する

!ブレークポイントで止まらない
*http://typea.info/blg/glob/2013/04/pydev-gae.html

!Python2.7にマイグレーション
*http://typea.info/blg/glob/2013/07/gae-python27.html
!!!Google App Engine(Java)
*https://cloud.google.com/appengine/docs/standard/java/building-app/environment-setup?hl=JA
*[個人的に最強のPaaSプラットフォームGoogle App Engineの良い所を挙げてみる|https://qiita.com/yosukesuzuki/items/a347f6e89d7624d6f977]
!!
*https://cloud.google.com/appengine/docs/standard/java/tools/uploadinganapp?hl=JA
!Mavenのダウンロードとインストール
*http://maven.apache.org/
!Mavenプロジェクト作成
*https://cloud.google.com/appengine/docs/standard/java/tools/using-maven?hl=JA
*appengine-skeleton-archetype を使用
 mvn archetype:generate -Dappengine-version=1.9.59 -Dapplication-id=[YOUR-PROJECT-ID] -Dfilter=com.google.appengine.archetypes:
!デプロイ
*pom.xml のディレクトリで 
 > mvn appengine:deploy
*デプロイ後、ブラウザで開く
 > gcloud app browse
!!静的コンテンツ
*https://cloud.google.com/appengine/docs/standard/java/building-app/static-content?hl=JA
!静的ファイルの配置場所
*webapp ディレクトリ内に置きます。フォルダも使用できますが、すべてのファイルパスと URI は webapp ディレクトリからの相対パスになります
*静的ファイルの場所を選択したら、その場所を appengine-web.xml ファイル内の <static-files> 要素で定義する必要があります。
!!フォームデータの処理
*https://cloud.google.com/appengine/docs/standard/java/building-app/handling-form-data?hl=JA

!入力ページへのリンク
 <a href='/jsp/form'>Form</a></td>
!入力ページJsp
 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>    
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="UTF-8">
 <title>HTTP Form</title>
 </head>
 <body>
   <form method="POST" action="/form/save">
     <label for="save_content">内容:</label>
     <textarea name="save_content" rows="3" cols="50">保存内容</textarea>  
     <button type="submit">保存</button>
   </form>
 </body>
 </html>
!JSP用ディスパッチャー
*JSPをWEB-INF配下においてリダイレクトする
 @WebServlet(
     name = "JspDispatcher",
     urlPatterns = {"/jsp/*"}
 )
 public class JspDispatcher extends HttpServlet{
   private static final String JSP_PATH_PATTERN = "/WEB-INF%s.jsp";
   
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     req.getRequestDispatcher(
         String.format(JSP_PATH_PATTERN, req.getRequestURI())).forward(req, resp);
   }
 }
!主処理
 @WebServlet(
     name = "FormController",
     urlPatterns = {"/form/*"}
 )
 public class FormController extends HttpServlet {
   private static final long serialVersionUID = 1L;
 
   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     req.setAttribute("content", req.getParameter("save_content"));
     req.getRequestDispatcher("/WEB-INF/jsp/result.jsp").forward(req, resp);
   }
 }
!結果表示
*JSP の escapeXml 機能を使用して、クロスサイト スクリプティング(XSS)攻撃に対する対抗措置をとる
 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>    
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="UTF-8">
 <title>Insert title here</title>
 </head>
 <body>
   <p>${fn:escapeXml(content)}</p>
 </body>
 </html>
*Google App Engine(Java)