- 1. Strutsの「Auto growth collection limit(Collectionの要素数が256を超えるとエラーになる)の回避方法
- 2. Gradleビルド実行後、何が行われるか?
- 3. Java Gold SE11対策 ネストしたクラスシリーズ①インナークラスについて
- 4. Spring Securityについて理解する②(ユーザ名とパスワードを使用した認証)
- 5. String型の空文字判定とNULL判定
- 6. MybatisのSQLで不等号を記載する方法
- 7. [Java]年齢を求める
- 8. Webアプリを作成して公開したい #3
- 9. 【O’Reilly】実践 Selenium WebDriverを読んで
- 10. Spring Securityについて理解する①(DelegatingFilterProxy、FilterChainProxy、SecurityFilterChain)
- 11. MySQL_BETWEEN演算子で特定の範囲のデータを取得する
- 12. Oracle Java Bronzeオンライン試験を受けました(2024/10/5)
- 13. Splash画像のみ変えたい時(Android)
- 14. Javaの実行の流れについて
- 15. 【備忘録】String.format の使い方
- 16. 資格学習やハンズオンを経て感じたこと、学んだこと
- 17. Javaの日付型 java.sql.Timestampについて
- 18. Webアプリを作成して公開したい #2
- 19. Webアプリを作成して公開したい #1
- 20. Javaオブジェクトと継承
Strutsの「Auto growth collection limit(Collectionの要素数が256を超えるとエラーになる)の回避方法
# 問題の事象
StrutsではDOS攻撃対策として要素数が256件を超えるCollection型の項目をPOSTするとエラーが発生する。“`java:HelloAction.java
public class HelloAction extends ActionSupport {
private Listaddresses; public List
getAddresses() {
return this.addresses;
}public setAddresses(List
addresses) {
this.addresses = addresses;
}public String execute() {
if (this.addresses.isEmpty()) {
for (int i = 0; i < 300; i++) { this.addresses.a
Gradleビルド実行後、何が行われるか?
Gradleでビルドを実行した際には、複数のタスクが自動的に処理され、最終的に成果物(アプリケーションやライブラリ)が生成されます。以下では、Gradleビルドの基本的な流れと、それぞれのステップで何が起きるのかを説明します。
### 1. **Gradleビルドの基本ステップ**
Gradleのビルドは、通常、以下の3つのフェーズを経て進行します。1. **Initialization(初期化)フェーズ**
2. **Configuration(設定)フェーズ**
3. **Execution(実行)フェーズ**—
### 1. **Initializationフェーズ(初期化フェーズ)**
このフェーズでは、Gradleがプロジェクトの設定を読み込み、どのプロジェクトがビルドに含まれるかを決定します。プロジェクトがシングルプロジェクトなのか、マルチプロジェクトなのかもここで判定されます。#### 主な処理:
– `settings.gradle` ファイルが読み込まれ、どのプロジェクトが参加するかが判断されます。
– マルチプロジェクト構成の場合は、すべてのプロ
Java Gold SE11対策 ネストしたクラスシリーズ①インナークラスについて
## はじめに
Java Goldの「クラスとインターフェイス」という単元では、
クラス内に定義したクラスを差す「ネストしたクラス」についての問題が出題される。試験で問われるネストしたクラスには下記の4つがある。
・インナークラス
・staticインナークラス
・ローカルクラス
・匿名クラス学習していてこれらがどうもごっちゃになり紛らわしい。
そこで、このシリーズではキチンと整理して理解するために、これらについてまとめていく。
現在の自分のようにJava Goldの学習をされる方のお役に立てると嬉しい。## インナークラスとはクラスの中に定義したクラス
まずは、インナークラスの例をみていただきたい。
“`Outer.java
public class Outer {
class Inner {
// 何らかの処理
}
}
“`Outerクラスの中にInnerというクラスが存在する。
このInnerクラスのように、クラスの中に定義したクラスを **「インナークラス」** と呼ぶ。このインナークラスに対して、「外側」にあたる
Spring Securityについて理解する②(ユーザ名とパスワードを使用した認証)
## ユーザ名とパスワードを使用した認証
以下の設定をSecurityConfig.javaに記載するだけで「ユーザー名」と「パスワード」を使用した基本的な認証ロジックを実装できる。>“`SecurityConfig.java
>@Configuration
>@EnableWebSecurity
>public class SecurityConfig {
>
> @Bean
> public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
> http
> .authorizeHttpRequests((authorize) -> authorize
> .anyRequest().authenticated()
> )
> .httpBasic(Customizer.withDefaults())
> .formLogin(Customizer.withDefaults());
>
> return http.build();
> }
>
>
String型の空文字判定とNULL判定
## 1.StringUtils.isEmpty()
isEmpty() は、null または空文字(長さが0)の場合に true を返します。“`java:
import org.apache.commons.lang3.StringUtils;public class StringCheck {
public static void main(String[] args) {
String str = null; // ここに対象の文字列をセットif (StringUtils.isEmpty(str)) {
System.out.println(“String is null or empty”);
} else {
System.out.println(“String is not null and not empty”);
}
}
}
“`
### 実行結果:
“`
String is null or empty
“`## 2.
MybatisのSQLで不等号を記載する方法
Mybatisを用いた開発の場合、基本的にMapperXMLにSQLを記載することになる。
しかし、XMLファイルでは、不等号を表すのに利用する“<``や``>“は特別な意味を持ち、タグの開始や終了として解釈されてしまう。## 改善策1.使用箇所をCDATAセクションで囲む
CDATAとは、「Character Data(文字データ)」の略で、CDATAセクション内の内容は通常のXMLパースルールを無視して、そのまま文字列として扱われる。例:価格が300円未満の商品を抽出する
“`xml:
“`
## 改善策2.SQL全体をCDATAセクションで囲む
“`xml:
Webアプリを作成して公開したい #3
続きです。
ローカルで変更した内容をGithubに上げて、変更をデプロイしてみました。
その前に、以下を修正しました。
>Spring Initializrを使用しているので
設置したディレクトリ階層が一段下になっています。
これが必要かどうかわかりませんがデプロイしたいので
Root Directoryにルートを一段下に指定して保存しました。ダウンロードした圧縮ファイルをそのままworkspaceに展開して利用していたので
階層が変になっていました。
これを作成しなおして不要な階層を削除しました。プロジェクトを作成しなおす際にJavaを21に設定してしまったのですが
Java21はサポート外だったのか、ローカルでは問題がなかったものの
Railway.appでビルドを行う際に以下のエラーが発生しました。:::note alert
[エラー] プロジェクト ywm で目標 org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) を実行できませんでした: コンパイル中に
【O’Reilly】実践 Selenium WebDriverを読んで
# 始めに
前の記事と同じく個人的な都合で自動テストに詳しくならないといけないので今回はSeleniumの本を読んでみました。
https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5-Selenium-WebDriver-Satya-Avasarala/dp/4873116953/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=37P91S19EZ6Z0&dib=eyJ2IjoiMSJ9.T7453pEbh63qvbQV2fHeJM50-H0yvoaLz439Y9ZOxb34p-qe3DY9Vjh0zDWviIC0Y5p91aiGvkwpx0VfYPWij3DZ4DCdyewcbzFRajIZTuqjUwWFt9IaXgmw2-A9rjwdhKYYmh_abkbJiENSXL5DX8B6uHz7OZAwMGFOA0l8dFPfOaqhYu_jwpdnP__MIacWrqywB7KgQXO-2Wgj-M2uLid1qb1wliuIVKQblDB3uuVgvbL8nCloZw
Spring Securityについて理解する①(DelegatingFilterProxy、FilterChainProxy、SecurityFilterChain)
## セキュリティーフィルターの流れ
以下のフィルターチェーンの流れが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