[Spring]第3週-Mustace構成画面を使用
Spring BootとAWSが単独で実施するWebサービス-04章
指定したテンプレートフォーム+データを統合してHTMLドキュメントを出力するソフトウェア
Webサイトの画面を作成するためのフォームサーバテンプレートエンジン:JSP、Freemakerなど サーバ上でJavaコードを使用して文字列を作成し、HTMLに変換してブラウザ に転送する.
クライアントテンプレートエンジン:react、Vueなど の単一ページアプリケーションを使用してブラウザに 画面を作成サーバjsonまたはxml形式のデータのみを転送->クライアント組立 スプリングガイドを使用してサーバ側でJavaScriptを提示することは容易ではない .
最も簡単なテンプレートエンジンは、 JavaScript、Python、phpなどの多くの言語をサポートします.
テンプレートエンジン は、 JSPなどのHTMLテンプレートを作成する Javaで使用する場合はサーバ、JavaScriptで使用する場合はクライアントテンプレートエンジン Javaで使用されるサーバテンプレートエンジン(JSP、Velocity、Freemaker、Thymeleafなど)の利点と比較 単純構文 論理コードX->を使用して、ビューをサーバから明示的に分離する .すべてのクライアント/サーバテンプレート に使用できる構文は、インテリジェントコミュニティのバージョンとして も提供しています.
ファイルの場所:src/main/resources/templates
ロール:最初のページ
htmlドキュメントの簡単な作成
ロール:URLをマストリッチにマップ Masterの役割:コントローラが文字列を返すと、前のパス( が自動的に指定されます.
先週PostsApiコントローラを使ってAPIを実現しましたガイドバー、jQuery(フロントエンドライブラリ)利用:外部CDN利用 レイアウト(共通領域を個別のファイルに分割して必要な場所に書き込む)、 を追加します. cssをヘッダーに、JavaScriptをフッターに、ページのロード速度を速める ブートストラップとjクエリーの関係(ブートストラップを実行できるのはjクエリーのみ)
の文書登録ボタンを押して「/posts/save」(API呼び出しが挿入されていないJavaScriptコード) に移動します.
✔src/main/resources/staticの静的ファイル(JavaScript、CSS、画像など)URLに/(絶対パス)
データベースに正常に保存されます.
index.ひげにMusthech文法を使う {#posts}:postsという名前のリスト巡回 {変数名}:リストから抽出するオブジェクトを使用するフィールド Posts Repositoryインタフェースにクエリー を追加 PostsListResponseDtoクラス を作成 PostsServiceクラスにコードを追加
マッピングによりPostsListResponseDtoを>ListのPostsListに変換
IndexControllerクラスの変更 モデル:ストレージサーバテンプレートエンジンで使用可能なオブジェクト postsService.findAllDesc()をインポートした結果をpostsとしてインデックスします.ヒゲに伝える
テンプレートエンジン
指定したテンプレートフォーム+データを統合してHTMLドキュメントを出力するソフトウェア
Webサイトの画面を作成するためのフォーム
麝香草
最も簡単なテンプレートエンジンは、
テンプレートエンジン
ファイルの場所:src/main/resources/templates
index.ひげが生える
ロール:最初のページ
htmlドキュメントの簡単な作成
Web/Index Controlクラスの作成
ロール:URLをマストリッチにマップ
/src/main/resources/templates
)と後のファイル拡張子(.mustache
)@GetMapping("/")
public String index() {
return "index";
}
/src/main/resources/templates/index.Muscacheに切り替え、URLリクエストの結果を渡すためにタイプと値を指定する管理者によって処理されます.テスト
投稿登録画面の実装
先週PostsApiコントローラを使ってAPIを実現しました
{{>layout/header}}
<h1>스프링 부트로 시작하는 웹 서비스</h1>
<div class="col-md-12">
<div class="row">
<div class="col-md-6">
<a href="/posts/save" role="button" class="btn btn-primary">글 등록</a>
</div>
</div>
</div>
{{>layout/footer}}
IndexControllerクラスに追加
...
@GetMapping("/posts/save")
public String postsSave() {
return "posts-save";
}
...
posts-save.ひげを作成してサーバーを実行
登録投稿のAPIの追加
✔src/main/resources/staticの静的ファイル(JavaScript、CSS、画像など)URLに/(絶対パス)
データベースに正常に保存されます.
完全なクエリー機能の実現
public interface PostsRepository extends JpaRepository<Posts, Long> {
@Query("SELECT p FROM Posts p ORDER BY p.id DESC")
List<Posts> findAllDesc();
}
マッピングによりPostsListResponseDtoを>ListのPostsListに変換
@RequiredArgsConstructor
@Service
public class PostsService {
private final PostsRepository postsRepository;
...
@Transactional(readOnly = true)
public List<PostsListResponseDto> findallDesc() {
return postsRepository.findAllDesc().stream()
.map(PostsListResponseDto::new)
.collect(Collectors.toList());
}
}
private final PostsService postsService;
@GetMapping("/")
public String index(Model model) { // 서버 템플릿 엔진에서 사용할 수 있는 객체를 저장
model.addAttribute("posts", postsService.findAllDesc());
return "index";
}
Reference
この問題について([Spring]第3週-Mustace構成画面を使用), 我々は、より多くの情報をここで見つけました https://velog.io/@smjan27/Spring-Study-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol