JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

Spring Securityについて理解する

## セキュリティーフィルターの流れ
以下のフィルターチェーンの流れがSpring Securityの基本的な認証・認可処理のベースとなっている。
またこの「フィルターチェーンを通じて、セキュリティチェックが順番に実行され、最終的にリクエストがサーブレットに届く流れ」を`ダウンストリーム`という。

①クライアントからリクエストが送られてくる
②フィルターチェーン(Filter0,Filter1,Filter2)を通る
③サーブレット(Javaアプリケーション)に到達
④サーブレットがレスポンスを作成し、クライアントに返却
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790294/df6424dd-e0c0-816a-fd3e-555273fa0462.png)
>[Architecture](https://docs.spring.io/spring-security/reference/servlet/architecture.html)

## DelegatingFilt

元記事を表示

MySQL_BETWEEN演算子で特定の範囲のデータを取得する

BETWEEN 演算子は、MySQLなどのSQLデータベースで、特定の範囲内にある値を検索するために使用されます。この演算子は、数値、日付、文字列などのデータ型に対して使用できます。

## 数値に対して BETWEEN を使う例
例えば、価格(price)が100から300の範囲にある商品を取得する場合:
“`sql:
SELECT *
FROM products
WHERE price BETWEEN 100 AND 300;
“`
このクエリは、価格が100以上300以下の全ての商品を返します。

## 日付に対して BETWEEN を使う例

日付範囲に対しても BETWEEN を使うことができます。例えば、2024年1月1日から2024年1月31日までに注文されたすべての注文を取得するには:
“`sql
SELECT *
FROM orders
WHERE order_date BETWEEN ‘2024-01-01’ AND ‘2024-01-31’;
“`
このクエリは、2024年1月1日から2024年1月31日までに行われた全ての注文を返します。

## 文字列

元記事を表示

Oracle Java Bronzeオンライン試験を受けました(2024/10/5)

見出しの通り、JavaのBronzeをオンラインで受けました。
いやー、疲れました。

というのも、事前情報(でも2024年6月とかもあった)で、
– メモ用紙をテーブルにおけない
– カメラテスト等事前準備が大変
– 上半身を常にカメラ内に収めないといけない
– オンラインといえど受けられる日時が決まっている

などなどを見ていたので、
焦って受けられるか確認しておかなければ、
とぽちったところ、
始まってしまって後戻りができず急いで受けたためです。

## 受験理由
会社の業績評価目標に、Bronze取得を記載したため。
技術スキルあげたいといいつつ、
まぁJavaかけるかなぁ読めるかなぁ
という程度だったので、
まずはOracle認定受けようかなと思いました。

## 経歴
新卒入社16年目
えっ、もうベテランレベルなのにBronze
ごもっともで何も言えないです。。。
開発をほとんどやらないSIerでゆるゆる育ってしまいました。

## 資格取得
– 基本情報技術者
– Oracle Master 12c Gold
– AWS Certified Cloud Practitio

元記事を表示

Splash画像のみ変えたい時(Android)

通常の設定だとSplash画像にはアプリアイコンの画像がそのまま表示されます。
Splash画像のみ変更したい場合、どのようにするのかを共有します。

## 1. Splash用の画像ファイルを用意する

まず、Splash画面に表示したい画像を drawable フォルダに追加します。例えば、**ic_splash.png** という名前の画像ファイルを使うとします。
そして更に drwaableフォルダにxmlファイルを追加。例えば **background_splash** という名前にします。
“`kotlin:xml


元記事を表示

Javaの実行の流れについて

Javaの実行の流れについて、コンパイルや機械語、メモリ管理、JDK、JREの役割などをわかりやすく説明します。初心者の方でも理解しやすいように、各ステップを順を追って解説します。

## 1. Javaの基本的な実行の流れ

## Javaプログラムを実行するためには、次のいくつかの大事なステップがあります:

1. **ソースコードの作成**: 開発者が`.java`ファイルにJavaのソースコードを記述します。ソースコードとは、人間が理解できる形式でプログラムの動作を指示するために書かれたコードのことです。例えば、料理のレシピのように、どの手順で何をするかを詳細に書き表したものです。
2. **コンパイル**: `javac`コンパイラを使用して、ソースコードをバイトコード(`.class`ファイル)にコンパイルします。コンパイルとは、人間が読めるソースコードを、コンピュータが理解できる形式であるバイトコードに変換することです。例えば、英語の文章を他の人が理解できる言語に翻訳するようなものです。**.classファイル**は、コンパイルされたバイトコードが保存されているファイルで

元記事を表示

【備忘録】String.format の使い方

String.formatのメソッドについてのメモ書き。

## 文字列
文字列を扱う場合は、`%s` を使う。
“`java:Sample.java
public class Sample {
public static void main(String[] args) {
String place = “動物園”;
String str = String.format(“明日は、%sに行きます。”, place);

System.out.println(str); // 明日は、動物園に行きます。
}
}
“`

## 整数
整数を扱う場合は、`%d` を使う。
“`java:Sample.java
public class Sample {
public static void main(String[] args) {
int age = 30;
String str = String.format(“私は%d歳です。”, age);

System.out.println(str); // 私は30歳

元記事を表示

資格学習やハンズオンを経て感じたこと、学んだこと

# 目次
1.はじめに
2.資格関連について
3.ハンズオンについて
4.まとめ

# 1.はじめに
入社して約6か月、現在は自社業務として資格勉強やハンズオンにて学習していてなかで学んだこと、感じたことについて紹介したいと思います。

# 2.資格関連について
最初に資格勉強したのがJavaBronzeでした。もともとJava自体は専門で学んでいたのでそこまで苦労しないで取れると思っていました。

感じたこと:
・普段聞かない用語に戸惑う
 問題の中でも「データ隠蔽」「情報隠蔽」「ポリモーフィズム」という用語が出てきます。
専門学校でもこの用語自体あまり聞いたことがなかったので「え、なにこれ?」と思いました。
データ隠蔽と情報隠蔽って何が違う?ポリモーフィズムって継承とどう違うの?と疑問だらけでした。
 
・コンパイルエラーと例外スローの違いってなんだ?
 問題の選択肢にいつもいるこの二つ。
最初はあまり違いだったりどういうときに起こるのか曖昧でした。
問題を解くなかで、コンパイルエラーが起こると思っていたのが例外スローになったり判別自体が難しかったです。

学んだこと:
 とに

元記事を表示

Javaの日付型 java.sql.Timestampについて

# はじめに
日付の入力値を検証する際、**java.sql.Timestamp型** を使用すると
BindingResultでは意図しない影響を及ぼす事が判明したので備忘録として記載。
>入力値を受け取るフォーム
>“`java:DateMoldForm.java
>@Data
>@NoArgsConstructor
>public class DateMoldForm {
> private Timestamp timestampMold;
> private LocalDateTime datetimeMold;
>
> public DateMoldForm(VerificationDateMold entity) {
> this.timestampMold = entity.getTimestamp_mold();
> this.datetimeMold = entity.getDatetime_mold();
> }
>“`
# 影響について
必須入力ではない、日付を空文字で登録した場合Timestamp型ではエラ

元記事を表示

Webアプリを作成して公開したい #2

続きです。

Railway.appを使用してデプロイを試みます。

3.デプロイする(続き)

アプリのアカウント作成 → Githubの連携と
基本的には以下の通りに進めました。
https://zenn.dev/gibjapan/articles/881d1e3a1241f1

前回も記載した通り、DB接続は後回しです。
なので環境変数は何も追加していません。

が、Githubを連携して「Deploy Now」しても
ビルドが開始されず アドレスを叩いてもNotFoundのままです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3901612/93fb0bea-1081-33e3-162d-9f2ae119cda4.png)

何が原因かわかりません。
今回はデモアプリを使用していて
インデックスページを用意していないのでルートのアドレスにアクセスしてもエラーになるのは把握済み、なのでアクセスしたのは以下になります。

>アプリ名.up.railway.app/add?a=

元記事を表示

Webアプリを作成して公開したい #1

初めての投稿になります。
記事は主に自己学習の備忘のために投稿していきます。


◆目的
 WEBアプリを作成して公開したい。

◆環境
・Tomcat9
・Java17(Sprong Boot)
・Maven
・SQL(どれを使うかは未定)
・Eclipse

◆考えていること
・ローカルだけでなくWEB公開したい
・仕事の業務に活用したいためセキュリティについても考慮したい
・ローカルと本番で環境毎にDBを変えて管理したい
・一旦は極力お金をかけずに運用したい(=無料を目指したい)


身内から「こんなんつくれない?」と言われました。
仕事で4年ほど様々な機能の保守や開発を行っていきましたが
すでに環境が出来上がっている所に改修や追加開発を行ってきたため
インフラや基盤の知識はあまりありません。
スキルアップも兼ねてひとまずはミニマムでトライしたいと思います。
ミニマムのため、一旦は諸々無料の機能を活用していく方向で進めます。

おおまかな流れは以下なのかなと思っています。

1.ローカルでアプリケーションを作成する
2.Githubに開発したプログラ

元記事を表示

Javaオブジェクトと継承

今回はjavaのオブジェクトと継承について記事にしたいと思います。

1. オブジェクトとは?
オブジェクトとは、**データ(プロパティ)と、そのデータに対する動作(メソッド)**を持つものです。例えば、現実世界の「車」をプログラム内で表現すると、オブジェクトに「色」「メーカー」「速度」などのデータ(プロパティ)を持たせ、さらに「加速する」「ブレーキをかける」などの動作(メソッド)を持たせることができます。

オブジェクトはクラスという設計図を基にして作られます。クラスを定義し、そのクラスからインスタンス(実体)としてオブジェクトを作成します。

オブジェクトの例(クラスとインスタンス):
“`java
class Car {
// プロパティ(フィールド)
String color;
String brand;
int speed;

// メソッド(動作)
void accelerate() {
speed += 10;
System.out.println(“Speed is now: ” + sp

元記事を表示

JavaでAWSのS3ストレージからファイルをダウンロードする方法

こんにちは、東です。
前回はJavaを利用してS3ストレージからファイルをアップロードする方法を
まとめましたので、今回はダウンロードについてです。

前回:[JavaでAWSのS3ストレージからファイルをアップロードする方法](https://qiita.com/pesysyon/items/25c5580fec3df92ee38f)

# 必要なことは?
以下のものが必要になります。
・__「ユーザーID」__ →IAMユーザーのユーザーID
・__「シークレットアクセスキー」__ →IAMユーザーのシークレットアクセスキー
・__「リージョン名」__ →S3コンテナが配置されている地域のリージョン名
・__「ファイルパス」__ →アップロードされたファイルの格納パス文字列
となります。

流れとしては
1.認証情報を用意

2.S3へアクセスするクライアントを作成。

3.ファイルをダウンロードする。

4.ブラウザへ書き出す。

という流れになります。
では、詳しく見ていきましょう。

# 手順
### 1.認証情報を用意
前回同様、AWSのS3ストレージへアクセスするた

元記事を表示

【Java Silver11】勉強方法

## ⓪はじめに
(対象:Java Silverの受験を悩んでいる方、受験が決まっている方)
 

先日、Java Silver11に合格いたしました!

今回は、試験内容に関わる勉強方法や所感などを残します。他の資格試験でも参考にできる部分があるかもしれません。

(前回は受験体験記を書きました。)

https://qiita.com/moncoeur_00/items/5a20b8f40a10302f5c67

 
今回、受験するにあたり、黒本([徹底攻略Java SE 11 Silver問題集[1Z0-815]対応](https://book.impress.co.jp/books/1118101186#:~:text=%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E7%A4%BE%E3%81%AE%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93))を用いて学習しました。

## ①勉強期間
(私は今年の4月に未経験で入社しました。)
A:5月に黒本を購入し、特に受験日を決めることもせず気が向いたときに取り

元記事を表示

springのWebClientでXMLレスポンスを受信

# サンプルコード

“`gradle:build.gradle
plugins {
id ‘java’
id ‘org.springframework.boot’ version ‘3.3.4’
id ‘io.spring.dependency-management’ version ‘1.1.6’
}

group = ‘com.example’
version = ‘0.0.1-SNAPSHOT’

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-web’
implementation ‘org.springfr

元記事を表示

[Spring]thymeleafでプロパティを受け取る

## はじめに
controllerの引数@PathVariableでURLから受けとったプロパティを、
thymeleafで表示させる際の挙動について備忘録
※間違い等あればご指摘いただけますと幸いです。

## 環境
・JavaSE 17
・springframework 3.3.1
・PostgreSQL 12.17
・MacOS 13.1

## 本題
idとnameからなる「カテゴリー」を登録・更新するformを作成する。
今回は更新の場合について注目。
カテゴリーの一覧画面から編集ボタンを押し、更新formを表示する流れを想定。
更新formには初期値として更新対象のid(readonly)とnameをinputエリアに表示させる。
※controllerとhtml部分のみ抜粋。

**CategoryController.java**
“`
@Controller
@RequestMapping(“/category”)
public class CategoryController {

@Autowired
CategoryService categoryS

元記事を表示

springbootを使った一般ユーザーと管理者ユーザーのDBの作成

今回はデータベースの作成で一般ユーザーと管理者ユーザーの作成を記事にしたいと思います。

ステップ 1: ユーザーテーブルの作成
まず、ユーザーテーブルを作成します。このテーブルには、一般ユーザーと管理者ユーザーを区別するために「role」カラムを追加します。

テーブルの構造(例: MySQL)
“`sql
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
role ENUM(‘user’, ‘admin’) DEFAULT ‘user’,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
“`
id: ユーザーの一意のIDです。
username: ユーザーの名前です。
email: メールアドレス(重複不可)。
passwo

元記事を表示

Windows11,Eclipse,Tomcat10 で古いJavaservletを動かす環境設定

# 業務忘備録

## インストール
eclipse C:\pleiades
tomcat10 C:\tomcat10
Java 21 C:\Program Files\Eclipse Adoptium\jdk-21.0.3.9-hotspot
Java 11 C:\Program Files\Eclipse Adoptium\jdk-11.0.23.9-hotspot

## 開発環境(本番環境)
Java 11
Tomcat 10

## Eclipse 設定
3. 新規立ち上げ
3. 新規フォルダ作成 C:\pleiades\workspace_
3. C:\pleiades\workspace_ 選択
3. パッケージ ⇒「動的 Web プロジェクトを作成します」選択
3. 任意のプロジェクト名入力「n00a」
3. ターゲット・ランタイム、新規ランタイム、Apache、Apache Tomcat v10.1、新規ローカル・サーバーの作成(選択)、次へ、Tomcat インストール・ディレクトリー⇒参照、C:\tomcat10(選択)、JRE⇒インストール済みのJRE⇒追加⇒標準

元記事を表示

JacksonのJsonNodeの使い方

# はじめに
たまに使おうとすると忘れるのでメモ
インストール方法や基本的な説明はしないのでそれが目的の人は他をあたって欲しい。

# 静的なクラス定義を使わない
Jackson を使う際、静的なクラス定義を使う場合と使わない場合で使い方が大きく異なる。
JSON表記に慣れると、Java のクラスなんていちいち書いていられない。
ここでは、**使わない方法だけ**を説明する。
アノテーション(@)も使わない。

# サンプルプログラム

要点は、**ObjectMapper** と **JsonNode** を使う。
例示したほうが、理解が早い

“`java
import java.util.Iterator;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fas

元記事を表示

JPAの Persistence Cascade

### JPAにおける永続性の伝播(Cascade)

JPAでは、親エンティティ(`Order`)と子エンティティ(`OrderProduct`)、および関連するエンティティ(`Product`)の関係において、**永続性の伝播(Cascade)** は、親エンティティと一緒に子エンティティが自動的に保存、更新、削除されるようにするために使用されます。もし永続性の伝播が設定されていないと、関連するエンティティを手動でそれぞれ保存する必要があり、問題が発生することがあります。

### 永続性の伝播(Cascade)に関する主な原則

1. **Cascade設定**:親エンティティと子エンティティ間の関係で永続性の伝播(Cascade)を設定し、親エンティティが保存される際に子エンティティも自動的に保存されるようにします。`CascadeType.PERSIST` や `CascadeType.ALL` を使用することで、親エンティティが保存される際に子エンティティも自動的に保存されます。

2. **リレーションの設定**:適切に一方向または双方向の関連関係を設定し、関連するエンテ

元記事を表示

Java基礎文法Part9

今回はスコープについて記事にしたいと思います。

スコープとは、プログラミングにおいて、変数やオブジェクトがどの範囲で有効(アクセス可能)かを示す概念のことです。スコープを理解することで、プログラムの中でどこで変数が使えるのか、またどこで使えないのかがわかり、効率的にコードを書くことができます。特にWeb開発やJSPのようなサーバーサイド開発では、スコープの管理が重要です。

1. スコープの基本的な考え方
スコープは、どこで変数やオブジェクトが生きているか(有効か)を指します。スコープの範囲外では、その変数やオブジェクトは使えなくなります。これにより、プログラムの中で変数の寿命やアクセスの範囲を制御できます。

2. JSPにおけるスコープの種類
JSP(Java Server Pages)やサーブレットでは、スコープの概念が非常に重要で、データをどの範囲で使うかを決める4つのスコープが存在します。それぞれ、データをどれくらいの期間、どこで使用できるかを決定します。

3. JSPのスコープの種類
ページスコープ(Page Scope)

有効範囲: JSPページ内だけで有効です。

元記事を表示

OTHERカテゴリの最新記事