「Google App Engine(Java)」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==Google App Engine(Java)== *https://cloud.google.com/appengine/docs/standard/java/building-app/environment-setup?hl=JA *[https://qiita.com/yosukesuzuki/items/a347f6e89…」) |
|||
12行目: | 12行目: | ||
====デプロイ==== | ====デプロイ==== | ||
*pom.xml のディレクトリで | *pom.xml のディレクトリで | ||
− | + | > mvn appengine:deploy | |
*デプロイ後、ブラウザで開く | *デプロイ後、ブラウザで開く | ||
− | + | > gcloud app browse | |
===静的コンテンツ=== | ===静的コンテンツ=== | ||
*https://cloud.google.com/appengine/docs/standard/java/building-app/static-content?hl=JA | *https://cloud.google.com/appengine/docs/standard/java/building-app/static-content?hl=JA | ||
====静的ファイルの配置場所==== | ====静的ファイルの配置場所==== | ||
*webapp ディレクトリ内に置きます。フォルダも使用できますが、すべてのファイルパスと URI は webapp ディレクトリからの相対パスになります | *webapp ディレクトリ内に置きます。フォルダも使用できますが、すべてのファイルパスと URI は webapp ディレクトリからの相対パスになります | ||
− | *静的ファイルの場所を選択したら、その場所を appengine-web.xml ファイル内の | + | *静的ファイルの場所を選択したら、その場所を appengine-web.xml ファイル内の <static-files> 要素で定義する必要があります。 |
===フォームデータの処理=== | ===フォームデータの処理=== | ||
*https://cloud.google.com/appengine/docs/standard/java/building-app/handling-form-data?hl=JA | *https://cloud.google.com/appengine/docs/standard/java/building-app/handling-form-data?hl=JA | ||
====入力ページへのリンク==== | ====入力ページへのリンク==== | ||
− | + | <a href='/jsp/form'>Form</a></td> | |
====入力ページJsp==== | ====入力ページJsp==== | ||
− | + | <%@ page language="java" contentType="text/html; charset=UTF-8" | |
− | pageEncoding="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用ディスパッチャー==== | ||
*JSPをWEB-INF配下においてリダイレクトする | *JSPをWEB-INF配下においてリダイレクトする | ||
75行目: | 75行目: | ||
====結果表示==== | ====結果表示==== | ||
*JSP の escapeXml 機能を使用して、クロスサイト スクリプティング(XSS)攻撃に対する対抗措置をとる | *JSP の escapeXml 機能を使用して、クロスサイト スクリプティング(XSS)攻撃に対する対抗措置をとる | ||
− | + | <%@ page language="java" contentType="text/html; charset=UTF-8" | |
− | pageEncoding="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> | |
95行目: | 95行目: | ||
*https://qiita.com/tora470/items/1695a8614551b7500c2a | *https://qiita.com/tora470/items/1695a8614551b7500c2a | ||
− | [http://typea.info/blg/glob/2019/04/google-app-engine-java-standard-spring-boot.html Google App Engine Java Standard 環境で手っ取り早くSpring Boot アプリケーションを開発する] | + | [[http://typea.info/blg/glob/2019/04/google-app-engine-java-standard-spring-boot.html Google App Engine Java Standard 環境で手っ取り早くSpring Boot アプリケーションを開発する]] |
===Cloud Data Store=== | ===Cloud Data Store=== | ||
*https://cloud.google.com/appengine/docs/standard/java/building-app/cloud-datastore?hl=JA | *https://cloud.google.com/appengine/docs/standard/java/building-app/cloud-datastore?hl=JA |
2020年2月15日 (土) 08:02時点における版
目次
Google App Engine(Java)
- https://cloud.google.com/appengine/docs/standard/java/building-app/environment-setup?hl=JA
- 個人的に最強のPaaSプラットフォームGoogle App Engineの良い所を挙げてみる
==
Mavenのダウンロードとインストール
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
静的コンテンツ
静的ファイルの配置場所
- webapp ディレクトリ内に置きます。フォルダも使用できますが、すべてのファイルパスと URI は webapp ディレクトリからの相対パスになります
- 静的ファイルの場所を選択したら、その場所を appengine-web.xml ファイル内の <static-files> 要素で定義する必要があります。
フォームデータの処理
入力ページへのリンク
<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>
Spring Boot
- https://tosi-tech.net/2018/08/spring-boot-on-google-app-engine-standard/
- https://qiita.com/tora470/items/1695a8614551b7500c2a
[Google App Engine Java Standard 環境で手っ取り早くSpring Boot アプリケーションを開発する]
Cloud Data Store
© 2006 矢木浩人