- 1. 【SpringBoot】AmazonS3にファイルをアップロード&ダウンロードする方法
- 2. Javaで「引数に配列やクラスオブジェクトを渡す」の動作を確認してみた
- 3. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑨例外処理の実装-
- 4. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑧戻る機能の実装-
- 5. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑦削除機能の実装-
- 6. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑥変更機能の作成-
- 7. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑤新規登録機能の作成-
- 8. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-④一覧機能の作成-
- 9. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-③実装方針と環境構築-
- 10. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-②設計-
- 11. 【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-①イントロダクション-
- 12. 【Java/Spring Boot 】画面からコントローラに値を渡す方法
- 13. Spring IOCとDIの理解方法
- 14. No.11 変数・データ型
- 15. Javaにおけるガベージコレクションについて
- 16. HTMLのaタグを使ってPOST送信する方法。
- 17. Javaで「引数を使ってメソッドに値を渡す」の動作を確認してみた
- 18. 脱運用管理システム… xxを使わずに、Azureでアプリのログを監視する
- 19. Javaで equalsと hashCodeを使ってみた(+ HashMap)
- 20. SpringDIで生成されるオブジェクトを扱う際に注意すること
【SpringBoot】AmazonS3にファイルをアップロード&ダウンロードする方法
# 概要
Spring Bootを3系にアップデートすると`javax`→`jakarta`に置き換える必要があるため、`javax`が依存関係に含まれる`spring-cloud-starter-aws`[^1]が使えなくなる(と思ったのですが、手元の環境では普通に動きました…)。
念のため依存関係が`jakarta`になっている`io.awspring.cloud.spring-cloud-aws-starter`に変更したのですが、情報が少なかったのでサンプルを公開します。[^1]: `io.awspring.cloud`と`org.springframework.cloud`がありますがどちらでも一緒です
# 環境
– Java17
– SpringBoot
– spring-boot-starter-parent:3.2.6
– spring-cloud-aws-dependencies:3.1.1
– spring-cloud-aws-starter
– spring-cloud-aws-starter-s3# サンプル
ストレージクラスに
Javaで「引数に配列やクラスオブジェクトを渡す」の動作を確認してみた
# 概要
Javaで「引数に配列やクラスオブジェクトを渡す」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/method/index4.html
# 実装
以下のファイルを作成しました。
“`JSample4_1.java
class JSample4_1{
public static void main(String args[]){
int num = 8;
int array[] = {10, 4};System.out.println(“num = ” + num);
System.out.println(“array[0] = ” + array[0]);henkou(num, array);
System.out.println(“num = ” + num);
System.out.println(“array[0] = ” + array[0]);
}private static void henkou(i
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑨例外処理の実装-
例外処理について書いています。
# 共通的な例外処理を書いてみよう
まず、例外処理とは、プログラムの実行中に発生する予期しないエラーや問題(例外)を適切に処理するための仕組みです。例外が発生したときにプログラムがクラッシュするのを防ぎ、ユーザーに適切なエラーメッセージを表示したり、エラーの原因をログに記録したりすることができます。これにより、システムの安定性とユーザー体験を向上させることができます。
*
controllerパッケージの中にGlobalAdviceController.javaという名前のJavaファイルを作成します。
クラスに@ControllerAdviceというアノテーションを付与します。@ControllerAdviceは、アプリケーション全体で共通の例外処理を一箇所にまとめるための仕組みを提供します。
“`java
@ControllerAdvice
public class GlobalAdviceController {}
“`今回は、@ExceptionHandlerというアノテーションを使って、「データベースアクセスエラーが発生
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑧戻る機能の実装-
戻る機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
>1.画面遷移
一覧画面 ⇔ 登録画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
⇔ 変更画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
→削除確認画面 → 完了画面(→ 一覧画面)>URL設計
画面名: タスク確認画面からタスク変更画面
URL: /task/back
HTTPメソッド: GET*
画面遷移図にて両矢印(⇔)になっているところは、前の画面に戻ることができます。登録画面、確認画面周りで戻る処理を追加していきましょう。
# controllerクラスを書いてみよう
URL設計で検討したURLをもとにcontrollerクラスのメソッドを書いていきましょう。
確認画面から登録画面に戻る際は、入力した値がクリアされないようにしたいです。そのため、確認画面で表示した値をオブジェクトで引数として受け取り、画面に表示するようにします。
“`java
@GetMapping(“/task/back”)
public String bac
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑦削除機能の実装-
削除機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
> 機能一覧
4.タスクの削除
ユーザーが既存タスクを削除できる機能。物理削除。> 画面遷移
一覧画面 → 削除確認画面 → 完了画面(→ 一覧画面)>画面一覧
>- 完了画面
>- 削除確認画面>画面項目
>- 削除確認画面
タイトル 出力
説明 出力
期限 出力 yyyy/mm/dd
ステータス 出力 変更のときのみ
完了 ボタン 削除処理を実行し、完了画面に遷移
もどる ボタン 確認画面に遷移>- 完了画面
完了メッセージ 出力
“The data was successfully deleted.”削除したときのみ表示
go to list ボタン 一覧画面に遷移削除機能は、削除内容を確認して削除を実行します。画面のUIとしては、既存の画面イメージとよく似ているようです。
削除確認画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/605915/dcff528b-4670-f
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑥変更機能の作成-
変更機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
> 機能一覧
3.タスクの変更:
ユーザーが既存タスクを変更できる機能。タイトル、説明、期日、ステータスの変更が可能。> 画面遷移
> 一覧画面 ⇔ 変更画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)>画面一覧
>- 変更画面
>- 確認画面
>- 完了画面>画面項目
>- 変更画面
タイトル 入力/出力 100文字まで/必須
説明 入力/出力 200文字まで
期限 入力/出力 必須 yyyy/mm/dd
ステータス 入力/出力 必須 0~3までの範囲
確認 ボタン 確認画面に遷移
もどる ボタン 一覧画面に遷移>- 確認画面
タイトル 出力
説明 出力
期限 出力 yyyy/mm/dd
ステータス 出力 変更のときのみ
完了 ボタン 登録/変更処理を実行し、完了画面に遷移
もどる ボタン 確認画面に遷移>- 完了画面
完了メッセージ 出力
“The data was successfully updated.”変更したときのみ表示
go to list ボタン 一覧画面に遷移
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑤新規登録機能の作成-
新規登録機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
> 機能一覧
>1.タスクの登録:
ユーザーが新しいタスクを入力し、ToDoリストに追加できる機能。タスクの登録項目としては、タイトル、説明、期日がある。> 画面遷移
一覧画面 ⇔ 登録画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)> 画面一覧
> – 登録画面
> – 確認画面
> – 完了画面> 3.画面項目
>- 登録画面
タイトル 入力 100文字まで/必須
説明 入力 200文字まで
期限 入力 必須 yyyy/mm/dd
確認 ボタン 確認画面に遷移
もどる ボタン 一覧画面に遷移>- 確認画面
タイトル 出力
説明 出力
期限 出力 yyyy/mm/dd
ステータス 出力 変更のときのみ
完了 ボタン 登録/変更処理を実行し、完了画面に遷移
もどる ボタン 確認画面に遷移>- 完了画面
完了メッセージ 出力
“The data was successfully saved.”登録したときのみ表示
go to list ボタン 一覧画面に遷移> 4.バリデ
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-④一覧機能の作成-
一覧機能を作成していきましょう。
# 2.設計で検討した一覧機能をおさらい
> 機能一覧
2.タスクの一覧表示:
ユーザーがToDoリスト内の全てのタスクを閲覧できる機能。タスクのタイトル、説明、期日、ステータスを表示。
ステータスは、未着手、作業中、完了> 画面遷移
一覧画面 ⇔ 登録画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
⇔ 変更画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
→削除確認画面 → 完了画面(→ 一覧画面)> 画面一覧
>- 一覧画面> 画面項目
>- 一覧画面
新規登録 ボタン 新規登録画面に遷移する
タイトル 出力 繰り返しあり
説明 出力 繰り返しあり
期限 出力 繰り返しあり yyyy/mm/dd
変更 ボタン 変更画面に遷移・繰り返しありここまでみていくと、一覧画面が一覧機能をつかさどっていることがわかります。登録済のタスクが一覧で並んでいて、登録画面や変更画面、削除確認画面へも遷移することができます。また、ユーザーが最初に遷移する画面にもなっていますので、今回のTODOアプリケーションの肝になる画面
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-③実装方針と環境構築-
本稿では、TODOアプリケーションのファイル構成や環境構築について記載をしていきます。また、実装する上で知っておいた方がよい知識もまとめてみました。
実装は次の投稿からはじまり、本稿は知識を入れるための読み物の位置づけです。# 今回TODOアプリケーションを実装するファイル構成
今回のTODOアプリケーションのファイル構成は以下の通りです。“`
ファイル構成
tutorialTodoApplication
|-src/main/java
|-com.example.demo
|-ServletInitializer.java
|-TutorialTodoApplication.java
|-com.example.demo.common
|-Constants.java
|-com.example.demo.controller
|-TaskController.java
|-GlobalAdviceController.java
|-com.example.demo.entity
|-Task.java
|-c
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-②設計-
todoアプリケーションの設計をしていきます。
# はじめに
設計とは、アプリケーションの要件に基づいて、アプリケーション全体の構造や動作を計画するプロセスです。良い設計は、アプリケーションの拡張性、保守性を高め、開発プロセス全体の効率性を向上させることを期待されます。
難しく書きましたが、要するに、要件をもとにシステムに実装する機能を明確化、具体化していくプロセスです。エンジニアはこの設計(How)の部分で価値を発揮することを期待されます。
設計では、主に「画面・機能・データ」 を検討します。この単位だとまだ大雑把なので、もう少し検討しやすい形に整えます。設計する単位まで落とし込むと、今回は以下の4つを検討しTODOアプリケーションを設計していきます。実際の案件では、もっとたくさんの仕様書を作成することもあるかもしれませんが、今回では最低限必要なものだけピックアップしてしました。
TODOアプリケーションの作成プロセスを、「仕様を考える」と「仕様をコーディングする」とわけたときに、「仕様を考える」に該当する最低限必要なものを設計として扱うことにします。例えば、コードを書くと
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-①イントロダクション-
JavaのフレームワークであるSpring Bootを使ってToDoアプリケーションを作成していきます。ToDoアプリケーションの作成を通じて、Javaアプリケーション全体で使う基本知識を整理していきます。
「Javaやhtml、SQLの基礎学習を1周終え、小規模なアプリケーションを作ってみたい人」や「Javaを扱うエンジニアとして少し経験を積んできたが知識の抜け漏れを確認したい人」が本稿をみたときに基本知識を理解できるような記載を意識し、必要な知識の言語化を図っていきます。
画面が遷移したり、登録してみたり動くものを作成してわくわくした体験をかけたらいいなと思います。さらに、動いたものを作って終わりでなく、例外処理や楽観ロックなどエラーを想定したコードも書いていきます。
# 何をするのか/しないのか
Todoアプリケーションの作成を行い、主にJavaを書くところに注力します。設計から実装までを対象範囲とします。ただしJunitの実装はスキップします。また、webやJavaの基礎知識は触れません(基礎知識から記述すると膨大な量になってしまうので)。あくまでも、Todoアプリケ
【Java/Spring Boot 】画面からコントローラに値を渡す方法
Java の Spring Boot を使用して、画面からコントローラ(Controller)に値を渡す方法はいくつかあります。以下に、主な方法を整理しました。
## 1. リクエストパラメータを使用する(@RequestParam)
クエリパラメータとして値を渡し、コントローラで`@RequestParam`アノテーションを使って取得する方法です。
例:
URL: `/users?name=John`“`java:UserController
@Controller
public class UserController {@GetMapping(value = “/users”)
public String getUsersByName(@RequestParam(“name”) String name) {
System.out.print(“name:”+name);// Expected output: name:John
return “index”;
}
}“`
## 2. URL パス変数を使用
Spring IOCとDIの理解方法
**制御反転(Inversion of Control)** を理解するには、まずソフトウェア設計の重要な思想である**依存性逆転原則(Dependency Inversion Principle)** を理解することが必要だと思います。
**依存性逆転原則(Dependency Inversion Principle)** とは何でしょうか?例えば、車を設計するとします。最初に車輪を設計し、その車輪の大きさに基づいてシャーシを設計します。その後、シャーシに基づいて車体を設計し、最後は車体に基づいて車全体を設計します。ここで「依存関係」が発生しています:車は車体に依存し、車体はシャーシに依存し、シャーシは車輪に依存しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809422/b0d8463a-f67e-c802-bf76-0352e35860f9.png)
このような設計は一見問題なさそうですが、メンテナビリティが非常に低いです。例えば、設計が完了した後、上司が市場の
No.11 変数・データ型
【動画URL】 https://youtu.be/SKcj2QjdqNI?feature=shared
◆かごの様なイメージ
◆ある手段(後述)を取らないと1つのかごに1つの商品しか入らない
◆かごに名前をつけたものを変数名という
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680113/72d4b3b7-8b5f-578f-e449-a55fadeaf74d.png)—
【動画URL】 https://youtu.be/ur83kCFPnE8?feature=shared変数(かご)にどの様な値(もの)が入るか指定しないといけない
基本型(プリミティブ型)
boolean true or false
char 1文字を扱う、シングルクォーテーションでくくる(‘あ’)
byte 8ビット整数 -128~127
short 16ビット整数 -32,768~32,767
int 32ビット整数 -2,147,483,648~2,147,483,647
long 64ビ
Javaにおけるガベージコレクションについて
## はじめに
Java Silverの学習を進めている際、ガベージコレクション(GC)という言葉が出てきました。
基本情報技術者試験の勉強の際、なんかメモリを掃除してくれる機能、というような認識程度で詳しくは知らなかったので、Javaにおけるガーベジコレクションについてまとめてみようと思います。
※誤りありましたら、ご指摘いただけますと幸いです。
## 想定読者
初学者の方
普段Javaを使用している方## ガベージコレクション(GC)とは
日本語にすると「ゴミ回収」となるように、自動的に不要なメモリ領域を解放するプロセスのことを指します。Javaプロセスを開始する際、メモリの割り当てが行われるわけですが、主に使われる領域のことを**ヒープ領域**と呼びます。
ちなみに、JavaはGCを自動で行ってくれますが、CやC++といった言語では、プログラムが使用するメモリ領域の割り当てやメモリ領域の解放を、明示的に指示する必要があります。
そのため、普段実装していてこの辺りはそこまで意識することはないかと思います。
HTMLのaタグを使ってPOST送信する方法。
## はじめに
Spring Securityを用いてログイン・ログアウト機能を実装していた際、POSTリクエストを送りたいところ、aタグではGETリクエストが送られてしまうため、下記実装を行いました。formタグでpostにしてダイレクトに送ってもいいんですが、aタグを使用して送りたいケースも仕様によっては考えうるケースかと思います。
この辺に疎いので一つひとつ実装解説も併せて、備忘録という形で残したいと思います。
※誤りありましたら、ご指摘いただけますと幸いです。
## 想定読者
初学者の方
フロントも頑張りたい方## 実装の中身
#### html
“`
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた