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

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

GWTはなぜ最新のフロントを作れるのか?

# GWTはJavaをjavascriptに変換します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132663/b99ebc21-399a-f2ee-4068-b388f324a075.png)
その為、最新の状態でプログラムを更新する事が可能です。

# GWTのJava→javascript変換は、割と凄い
・最適化(サイズ縮小)
・難読化(セキュリティー向上)
・互換性(各ブラウザ別変換)

元記事を表示

Spring Bootで非同期でデータを取得する

## Controllerにメソッドを用意する

GETでも良いが、以下のようにPOSTを使ってFormで受け取ることができる

“`Java
@Controller
@RequestMapping(“/test”)
public class TestController {

@Autowired
private TestService testService;

@ResponseBody
@RequestMapping(“/getdata”)
public String getData(TestForm form) {
return testService.getData(form.getCd(), form.getName());
}
}
“`

## サーバで取得した値をHTMLに返す

“`JavaScript
$.ajax({
url: $(location).attr(“host”) + “/test/getdata”,
data: $(“#TestForm”).serialize(),
ty

元記事を表示

インデントは半角スペースの方がオススメ

# ソースコードのインデントは、タブよりも半角スペースの方がオススメ

# 理由
環境依存で見え方が変わってくるため。
(1タブをスペースいくつで表示するかによって、見え方が変わってしまう)

例:eclipseとかで「半角スペース何文字をタブに変換」とかの設定があり、各々の環境によって差異が生まれてしまう

以上より、タブは使わない方がいい。

**大体は半角スペース4文字を使うハズ!!**

(ただし、**既存のソースコードに合わせる** のが一般的なため、既存のコードを **要確認** だけど……)

# 参考サイト
https://s8a.jp/tab-space-or-space

元記事を表示

ABC340A~Fの解答[Java]

## はじめに
今回はコンテスト中にEまで、コンテスト後にFを解いたのでそれらを載せようと思います。

なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc340/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認下さい。
では、見ていきましょう。

## A – Arithmetic Progression
問題文は[こちら](https://atcoder.jp/contests/abc340/tasks/abc340_a)

$A$が$B$になるまでループを回しながら$D$だけ加算していけば目的の数列を構築できます。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static fin

元記事を表示

レーベンシュタイン距離(編集距離)の解説と実装

レーベンシュタイン距離(編集距離)とは、2つの文字列がどの程度異なっているかを示す数値です。

例えば「ちからうどん」を「からげんき」に編集するには以下の4手順が必要なため、編集距離は4となります。
※ 編集、削除、置換をそれぞれコスト1とした場合

1. 「ち」を削除 : 「からうどん」
1. 「う」を削除 : 「からどん」
1. 「ど」を「げ」に置換 : 「からげどん」
1. 「き」を挿入 : 「からげんき」

# ■処理

「ちから」を「くらげ」に編集するための距離を求めてみましょう。
※編集、削除、置換をそれぞれコスト1とします。

### 1. 二次元配列を用意する

x を `編集文字列(ちから)の文字数 + 1` 、 y を `目標文字列(くらげ)の文字数 + 1` とする二次元配列を用意します。

| | (x = 0) | ち (x = 1) | か (x = 2) | ら (x = 3) |
| — | — | — | — | — |
| (y=0) | | | | |
| く (y=1) | | | | |
| ら (y=

元記事を表示

文字列のメソッド まとめ

# Stringクラス
文字列に対するメソッドのまとめ

## equals()
2つのインスタンスの内容が同じかを比較する。同じであれば**true**、差異があれば**false**を返す単純にString型の文字列を比較する時はequals()メソッドを使用する。

“`java
//moji1とmoji2を比較して結果を表示させる
System.out.println(moji1.equals(moji2));
“`

## compareTo()
文字列と比較する文字列が等しい場合、**0を戻り値として返す**
比較元の文字列が比較先の文字列より大きい値の場合、**正の値**を返す
比較元の文字列が比較先の文字列より小さい値の場合、**負の値**を返す
“`java
System.out.println(比較元.compareTo(比較先));
“`
文字列を比較した場合、比較元が比較先より50音順が早ければ負の値。
比較元が比較先より50音順が遅ければ正の値。
文字列が同じなら0。
(比較元アイウエオは比較先カキクケコより50音順が遅れているからマイナ

元記事を表示

android studioフォルダ構成について

## はじめに
androidの学習を始めたので、プロジェクト内にある各フォルダの役割を確認しようと思います。
自分も初学者になりますので、初学者向けの記事になります。
※android studioでnew projectから「Empty Activity」を選択しております。

■環境情報
android studio:Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

■プロジェクトでの使用言語
Java

## manifests

“`AndroidManifest.xml

元記事を表示

コイン獲得ゲームをprocessingで制作した

# はじめに
こんばんは!ダンです。
Processingで「コイン獲得ゲーム」という名の2Dランゲームを作成したので共有します。
Github URL:https://github.com/tsuka1211/rungame

↓ゲーム中の画面
スクリーンショット 2024-02-14 16 02 41

## タイトル画面
タイトル画面には「プレイボタン」と「説明書ボタン」を設置しました。
プレイボタンを押すとニックネーム入力画面に移動、
説明書ボタンを押すと説明書画面に移動します。
スクリーンショット 2024-02-14 16 20 28Javaの演算子、new

# new演算子とは
new演算子とは、配列の宣言、インスタンスの生成等で用いられる演算子です。

Javaでは、変数名と変数の型宣言だけでは変数を使用できない場合があります。
オブジェクト指向のJavaはコードの再利用が出来るようになっている為です。

new演算子はクラスなどの枠組みからコードで使用する実体を呼び出す為に必要となります。

その為、クラスを扱う際に、宣言した変数がクラスなのか、インスタンスなのかを書き手が把握していないとエラーが発生してしまいます。

元記事を表示

コレクションとは

## コレクション
* コレクションは、主に要素数が決まっていない場合に使う
(配列は予め要素数が決まっている場合に使う。)
* 配列とは異なり、要素数を自由に増減させられる
* コレクションには種類がある

| 種類 | 特徴 |
|:-:|:-:|
| List | 要素が順序付けられて保持される |
| Map | キーと値を紐づけて要素が保持される |
| Set | 要素が重複しない、要素が順序付けられていない |

##### ジェネリクス
「クラス名<型指定>」の書式でクラスの型を指定することをジェネリクスという。

##### ArrayListコレクションについて
Listの派生。要素が順序付けられて保持される

ArrayListの要素の追加と取得
“`java
// 宣言
<リストの型> 変数 = new ArrayList<リストの型>();

// コレクションに要素を追加
変数.add(引数);

//要素を取得
変数.get(取得したい要素の番号);
//要素の取得と表示
System.out.println(変数.get(要素の番号));

元記事を表示

クラスの継承とは

## 継承
* クラスが持っているメンバ(フィールドやメソッド)を別のクラスに引き継がせる。
* 継承元のクラスをスーパークラス(または親クラス)、引き継いだクラスをサブクラス(または子クラス)
(継承を使用しない例と使用する例のコードも記載されていてわかりやすかった[参照元URL](https://medium-company.com/java-%E7%B6%99%E6%89%BF/#google_vignette))

“`Java
// 継承の書き方

子クラス extend 親クラス
“`

##### 実例
作成クラス3つ。

1. Keisyo_Human1.java:人を表す親クラス
1. Keisyo_Takada1.java:親クラスを継承する子クラス
1. Keisyo_Main1.java:実行クラス

` Keisyo_Human1.java`
“`Java
public class Keisyo_Human1 {

// フィールドの宣言
double weight; // 体重
double height; // 身長

// BMI計

元記事を表示

GWTでwebアプリを開発すると長く使える

# 実はワイGWTを2007年ごろからずっと使っている
おいおい、簡便してくれよ、いつの話だよ・・
いいかい学生さん、いつでも・・とんかつを・・とんかつを食える・・
いいや、ずっと昔からでも、互換性が担保されているんだよ

# GWTは最初からSPA(Single Page Application)
webアプリが面倒な、原因の一つが、ページ遷移の制御
だから、MVCフレームワークとかいう、くそわかりづらい物が生まれた

# フロントとバックは同じJava言語だけで書ける
あのさ、フロントはJavaScriptにして、バックはPHPとかそんな分ける必要なんてない

# フロントとバックの通信はJavaだけでできる
jsonとかXMLとかそんなものは覚える必要がない

# 結論
だから、GWTを使ってwebアプリを開発すると、長く使えます

元記事を表示

HttpServletRequestのヘッダをMapに変換

“`java
import javax.servlet.http.HttpServletRequest;
import java.util.Collections;
import java.util.HashMap
import java.util.Map;
import java.util.stream.Collectors;

public class Utils {

public static Map getHeaderMap(HttpServletRequest request) {

return new HashMap() {{
Collections.list(request.getHeaderNames())
.stream()
.forEach(key -> {
put(key, request.getHeader(key));
});

元記事を表示

2024年でGWTを利用する意味

Webアプリ開発と言えば、フロントとバックで言語を分ける事が一般的のようですが、
GWTというツールを使えば、一つの言語だけで、Webアプリが開発可能です。

しかもSPA(Single Page Application)としてページ遷移することなく、アプリを動作させることができます。

通信も、Javaだけで行うことができ、JsonやXMLなどを意識する必要がありません。

 その為、開発も柔軟で速く行う事が可能です。

https://www.gwtproject.org/

元記事を表示

Javaの配列

# 配列とは
配列は1種類のデータ型を複数個管理する際に使用されます。

Javaでは配列の要素を0から表記するので、配列の一番目の要素は
配列名[0]となります。

宣言の際には、要素の型と配列の変数名の他に、newが必要です。

~~~:配列宣言の例
要素の型[] 配列変数名 = new 要素の型[要素数];
~~~

元記事を表示

JSP・サーブレット 備忘録

## formタグ
action属性
送信先のプログラムのURLパターンを指定します。(『 / 』は不要)

method属性
起動するリクエストメソッドを指定します。「get」と書けばdoGetメソッド、「post」と書けばdoPostメソッドが起動されます。
method属性を書かない場合は自動でdoGetメソッドが起動されます。

“`jsp:jsp

“`

### リンクタグ
href属性
送信先のプログラムのURLパターンを指定します。(『 / 』は不要)
aタグで囲われた文字列にリンクとしての機能が付与されます。
“`jsp:jsp
画面02へ
“`

### Web.xml
XML形式で記述された、Webアプリケーションを動作させるための設定ファイルです。

### doGetとdoPostの違い
・doGet :主に画面を表示させるリクエストを出す際に使用する
・doPost:主にサーバーに顧客の入

元記事を表示

VSCode×DevContainerでDockerコンテナ内にJava開発環境を作る

## 書いた背景
– 最近実務でJavaを使い始めた。
– Javaに関する開発等はEclipceで行う風潮があるが、Eclipceが使いやすいと思わない。少なくともプライベートではVSCodeで書きたい。
– EclipceのAll-in-OneにはJava実行環境等が含まれていたが、VSCodeではそれがないためローカルマシンに実行環境をインストールする必要がある。が、それをやりたくない。
– VSCode × DockerでJavaの開発環境を作ろう。それを手軽に実現してくれるのがDevContainerというプラグインらしい。

## 前提

– VSCodeのDevContainerにはそれ専用のDockerイメージがそれなりに用意されているので、手元にDockerfileを用意しなくてもすぐ始められるため、今回はその方法で進める。
– Dev Container向けに用意されているDockerイメージはLTS版が中心でJava21まで対応されている。
– ビルドツールにはgradleを使用し、バージョンは8.4.4
– 書いた人はJavaど素人なので、正直gradleの

元記事を表示

JDBC 備忘録

### DAO
データベースにアクセスする機能をまとめたデータベースアクセス
専用のクラスのことをDAO(Data Access Object)と言います。

DAOはテーブル単位で定義することが一般的です。
現場によっても違ってくるので必ずチームメンバーに確認しましょう)

### DTO
クラスやメソッド間で複数のデータをまとめて受け渡す際に使用されるクラスをDTO (Data Transfer Object)と言います。基本的にDTOはそのクラスブロック内にフィールドとgetter/setterのみしか持ちません。

DTOは主にテーブルの1レコード分のデータを格納する目的で定義されます。そのため、1つのテーブルにつき1つDTOを定義することが一般的です。

“`java:Java
//ResultSetオブジェクトから1レコード分のデータをDTOに格納
if(rs.next()){
dto = new Sample4_02_1_Common_DTO();
dto.setId ( rs.getInt( “id” ) )

元記事を表示

カプセル化、アクセス修飾子

## カプセル化とは
カプセル化とは、クラス内のフィールドやメソッドに対するアクセスを制限するJavaの仕組み。
例えば、個人情報を扱うクラスがあり、このフィールドが外部から書き変えれたり情報を保護できないプログラムは危険。
カプセル化はこのような外部からのアクセスからオブジェクトを守る役目がある。

## アクセス修飾子
カプセル化では、アクセス修飾子のprivateとpublicを使いアクセス制限を行うため、下記の設定を覚えておく。
| アクセス修飾子 | 機能 |
|:-:|:-:|
| private | 自分のクラス内でのみアクセス可能 |
| アクセス修飾子なし(package private) | 同じパッケージ内であればアクセス可能 |
| protected | 継承した子クラス及び自分と同じパッケージからアクセスできる |
| public | 自分のクラス以外からでもアクセス可能 |

“`Java
package text.section_16;

public class Capsule_Tanaka1 {

// id フィールド

元記事を表示

SpringBootでJWT生成と検証

今回、JWTを用いた認証について学習したので、あわせてブログにまとめてみました。

本記事では、ログイン認証後のユーザーの各要求に対して、ログインユーザーと作業者が同一であるかをチェックするためにJWTを用いた処理を紹介します。

# **JWT(ジョット)**

JWTとは、Json Web Tokenの略で、関係者間で情報を安全に送信するためのJsonオブジェクトです。

ディジタル署名されているため、検証及び信頼ができるトークンとなっています。

様々なアルゴリズムを使用した公開/秘密鍵のペアを使用して署名することができます。

# **用途**

– **認証**
ユーザーログイン成功時にトークンを生成します。
(シングルサインオンやセッション認証で使用)
– **情報交換**
公開鍵/秘密鍵のペアを用いて、コンテンツの改ざん等がされていないことを検証できます。

# **JWTの構造**

JWTは、ヘッダ、ペイロード、サインで構成されており、それぞれ以下の情報を保持しています。

`xxxxxxx(ヘッダ).yyyyyyy(ペイロード).zzzzzzz(サイン)`

– *

元記事を表示

OTHERカテゴリの最新記事