原理を知れば核心が見える!
キム・ヨンハンのスプリングMVC活用編 👨💻
- 本講義は、Javaスプリング完全征服シリーズの5番目の講義です。ウーワ・ブラザーズ(Woowa Brothers)最年少技術理事、キム・ヨンハンのスプリング完全征服ロードマップをまずご確認ください。(ショートカット)
最も人気のあるウェブフレームワーク
現代のアプリケーションは、そのほとんどがウェブ環境で動作するウェブアプリケーションです。Javaバックエンド開発者は、このようなウェブアプリケーションを開発する際、そのほとんどでスプリングMVCを使用します。スプリングMVCは、複雑なウェブアプリケーションを簡単かつ迅速に開発できるようサポートする、最も人気のあるウェブフレームワークです。
バックエンドWeb技術の学習が難しい理由
Javaバックエンド(Java Backend)のWeb技術は非常に膨大で、学習量も多いです。特にSpring MVCは提供する機能も多く、構造も複雑です。このようなWeb技術を正しく学習するためには、Spring MVCの核心的な原理と構造をまず理解し、その基盤の上に膨大なWeb活用技術を一つずつ攻略していく必要があります。
✅ 前提知識を確認してください。
前回の講義である<スプリング MVC 1編>を通じて、Web開発に必要なスプリング MVCの核心的な原理と構造を理解しているか確認してください。
1. Javaウェブ技術の始まりから最新の実務技術まで
2. MVCフレームワークを直接コードで開発
講義の目標
これまでJavaバックエンドおよびスプリングMVCの基盤技術を学習してきました。今回の講義では、これまでに学習した基盤の上に実務に不可欠な活用技術を学びます。
<スプリングMVC 2編> 講義では
スプリングMVC 2編では、1編で学習したスプリングMVCの基盤の上に、実務に不可欠なビューテンプレート、メッセージ、国際化、バリデーション、クッキー、セッション、フィルタ、インターセプタ、例外処理、型コンバータ、ファイルアップロードといった膨大なウェブ活用技術を、例題を通じて完全に習得することができます。
スプリングMVCの核心原理と構造の上に、膨大なウェブ活用技術を実戦例題コードを通じて完成させ、より深みのあるバックエンドウェブ開発者へと成長できるようお手伝いいたします。
- 目標: 実務のバックエンドWebアプリケーションを開発する際に必要な、すべてのWeb技術を完成させることがこの講義の目標です。
- ウェブの基礎から実務まで: 実務開発のための内容が多いですが、ウェブアプリケーションの開発経験がない開発者でも適応できるように段階的に構成しました。(スプリングMVC 1編を先に受講してから2編を学習する必要があります。)
- 概念から活用まで: 単に技術の使い方を説明するのではなく、その技術がなぜ必要で、どのようにして生まれたのかという核心的な原理と活用方法を併せて説明します。
- 実務例題中心: 実務でSpringを使用してウェブアプリケーションを開発する際に必要なすべての過程を、例題を通じて自然に学習し、実務のベストプラクティスを伝授します。
- 簡潔さ: 実務で使用されない古いSpring MVCの機能は思い切って除外しました。最新の実務で主に使用される内容を中心に説明します。
おすすめの学習者
スプリングMVCを
初めて接する開発者
バックエンド開発者
就職準備生
Spring MVCを深く
理解したい現役の開発者
スプリングでウェブアプリを
作りたい開発者
扱う内容
タイムリーフ
タイムリーフ(Thymeleaf)は、バックエンド開発者のためのサーバーサイドビュー(Server-Side View)テンプレートです。タイムリーフを使用すれば、別途フロントエンド開発者がいなくても、バックエンド開発者だけで簡単かつ迅速に動的なHTMLを作成することができます。
講義では、タイムリーフの基本機能から、Springとの統合、チェックボックス、ラジオボタン、セレクトボックスのような複雑なフォーム管理機能まで、すべてを例題を通して作りながら学習します。
メッセージ、国際化
ウェブアプリケーションが大きく複雑になるほど、使用する多様なメッセージを一貫性を持って一箇所で管理する必要があります。例えば、「商品名」という単語を「商品名前」という単語に直すには、数多くのファイルのソースコードを修正しなければなりません。スプリングが提供するメッセージ機能を使用すれば、このようなことを一括で管理し、修正することができます。
国際化は、英語を使用する人にはサイトが英語で表示され、韓国語を使用する人にはサイトが韓国語で表示される機能です。スプリングはすでにこのような国際化機能を提供しています。講義では、スプリングが提供するメッセージと国際化機能を、実際の例を通じて段階的に学習します。
検証(Validation)
顧客が会員登録をする際、入力フォームに誤った値を入力してサーバーに送信した場合、サーバーはその値を検証し、顧客に再び入力フォームを表示しながら、どの部分が誤って入力されたのかを親切に案内しなければなりません。このような方式は、すべてのウェブサービスにおいて不可欠な機能です。
講義では、まずこのような検証機能を直接開発してみます。そして、Springが提供する検証機能も使用してみて、さらにはアノテーション(Annotation)一つで非常に便利に検証機能を実行するBean Validation機能まで、例題を通じて段階的に学習します。
クッキー、セッション
HTTPはステートレスなプロトコルです。したがって、ログイン機能を維持するにはクッキーやセッションといった概念が必要になります。講義では、まずクッキーだけでログイン機能を作ってみます。そして、どのようなセキュリティ上の問題があるかを確認した後に、セッションを直接作成して適用してみます。
このようにセッションを直接作る過程を通じて、クッキーとセッションの動作方式を深く理解することができます。そして追加で、サーブレットが提供するセッションを学習し、適用してみます。
フィルター、インターセプター
サーブレットが提供するフィルター(Filter)と、スプリングが提供するインターセプター(Interceptor)を、例題を通じて学習します。
まず、最も単純なすべてのHTTPリクエストをログに残す機能をフィルタとインターセプターで作成し、その後、認証処理のための機能もフィルタとインターセプターで作成してみます。このように両方を一緒に使用してみることで、それぞれの長所と短所を明確に理解することができます。
例外処理
Webアプリケーションを学習する際、最も理解しにくい部分がまさにこの例外処理(Exception Handling)です。なぜなら、サーブレットコンテナ(WAS)とSpring MVCがそれぞれ独自の例外処理方法を提供しているからです。そして実際には、これら二つが混ざり合って複雑に例外処理メカニズムが動作します。そのため、コントローラーで例外が発生したときに、Springとサーブレットコンテナがそれぞれ内部でどのように動作するのかを開発者が正確に理解して使用することは非常に困難です。
講義では、サーブレットコンテナの例外処理からSpring MVCの例外処理まで、一つずつ段階的に紐解いて説明します。そのため、講義を終えた後には、実際に例外が発生した際にサーバー内部でどのように動作し、どの部分を変更すべきかを明確に理解できるようになります。さらに、APIを使用する際の例外処理についても併せて説明します。
スプリングタイプコンバーター
文字を数値に変換したり、逆に数値を文字に変換しなければならない時のように、アプリケーションを開発していると型を変換しなければならないケースが多くあります。例えば、HTTPリクエストで文字の "10" が渡されても、スプリングでは @RequestParam を使って Integer 型の数値 10 として受け取ることができます。スプリングは型コンバーターという機能を提供し、一貫性のある型変換をサポートしています。
型コンバーターはスプリングを学習すると頻繁に言及される内容ですが、実際にどのように動作するのかを深く理解するのは容易ではありません。講義を通じて、型コンバーターの基本から活用まで、例題を用いて段階的に理解することができます。
ファイルアップロード
インターネットには数多くのファイルアップロードの例があります。講義では、単にファイルアップロードの機能を説明するにとどまらず、ファイルアップロードのために使用するプロトコルを深く解説し、どのような原理でHTTPでのファイルアップロードが可能なのかを説明します。そして、ファイルアップロード機能をサーブレットから始めて、スプリングが提供する便利な方式のファイルアップロードまで、例題を通じて段階的に学習します。
Spring MVC 講義の構成
スプリングMVC講義は2編に分かれています。
本講義はスプリングMVC 2編 -
バックエンドWeb開発活用技術です。
Javaウェブ技術とスプリングMVCの核心概念を固め、スプリングMVCの基本機能を理解します。
1編では、まずJavaバックエンドウェブ技術を紹介し、サーブレット、JSP、MVCパターン、MVCフレームワークまでウェブ技術全般を学習します。このようにウェブ技術の背景を理解した上で、スプリングMVCの核心概念をしっかりと固めます。その後、スプリングMVCの基本機能を学習し、スプリングMVCを使用して基本的なCRUDが可能なウェブページも開発します。
スプリングMVCの多様な活用技術を学習します。
2編では、タイムリーフ、メッセージ、国際化、検証(Validation)、クッキー、セッション、フィルタ、インターセプター、例外処理と共通機能、拡張ポイントなど、一つの例題を段階的に発展させながら、スプリングMVCの多様な活用技術をコードで学習します。
これから続く
スプリング完全征服シリーズ
スプリングを完全にマスターできるシリーズを準備しています。実際の現場で使用する核心的なスプリング機能を中心に、実務で使われないものや古い機能は思い切って省略した実務ノウハウを伝授する予定です。
講義の順序
関連ロードマップ