JAVA関連のことを調べてみた2021年09月02日

JAVA関連のことを調べてみた2021年09月02日
目次

[Java基礎④] while処理/繰り返し回数もランダムにする Math.random

初めに

Java学習開始4日目です。
今回はwhile処理を学習しました。

While処理の基本形

“`java:コード
public class Main {
public static void main(String[] args) {
int i = 0; // カウンタ変数の初期化
while (i <= 5) { System.out.println(i); // 繰り返し処理 i += 1; // カウンタ変数の更新 } } } ```

繰り返しの回数をランダムにする

“`
public class Main {
public static void main(String[] args) {
int hp = 30;
int hit; // カウンタ変数の初期化
while (hp > 0) {

元記事を表示

Passing object as parameter into function

Please read following code.

“`Java
public class Test {

public static void main(String[] args) {
// Integer reference called “clz”
Integer clz = new Integer(1);
changeValue(clz);
System.out.println(“After called changeValue(): ” + clz.toString());
}

public static void changeValue(Integer input) {
System.out.println(“Start changeValue(): ” + input);
input = new Integer(2);
System.out.println(“Finish changeValue(): ” + input);
}

}
“`

The output is

“`
Start changeValue():

元記事を表示

JSTL の使用手順を易しく解説

# 自主学習エンジニアがJSTLを使用するにあたって
Eclipseとかもそうですが
パソコンに疎い人間にはインストール方法でさえ、英語多いし何かとめんどくさいことが多いと感じました…
今回、JSTLを導入するにあたって少し手間取ってしまいました。
#####図を用いた解説し、わかりやすい記載となるよう心掛けてますので、参考になれば幸いです。

## JSTLとは
JSTLは「JSP Standard Tag Library」の略で、JSP内でよく使われる機能をタグライブラリとしてまとめたもの

## インストール手順
JSTLをインストールするには、2つの異なるJARをダウンロードします。
・Maven RepositoryのJSTL-APIダウンロード先
https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api/1.2
![pic2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556334/9914e709-5045

元記事を表示

JAVAでオンラインチャット(チャットボット)実現

# 目標

顧客があるサービスのオンラインヘルプに問い合わせすると想定し、チャット機能をjavaで実装する。
機能だけ実装し、UI部分は無し。

# TODO整理

目標を実現するのに必要なのは以下が考えられます。

* UDP通信

UDP通信特徴
①リアリティ性が求められない
②かつクライアントとサーバーか、クライアントとクライアントとの通信にこだわらない

今回の実装にUDP通信を使います。

* スレッド

メッセージ受け取るにも送るのにも同時に行う必要があるのため、スレッドを実装すると考えらる。

# 実装

* メッセージ送信処理

UDP通信はクラス[DatagramSocket](https://www.techscore.com/tech/Java/JavaSE/Network/4-2/)を使う

“`SendThread.java
package com.maekawa.onlineChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStrea

元記事を表示

よくやるNullPointerExceptionまとめ

基本的すぎることですがよくやるのでメモ

# 定数.equals(変数)で変数がnull
“`java:
final String nullStr = null;

// ぬるぽにならない
System.out.println(“a”.equals(nullStr));
// ぬるぽになる
System.out.println(nullStr.equals(“a”));
“`

# if文がnull
“`java:
final String nullStr = null;
// ぬるぽ
if (nullStr) {}
“`

元記事を表示

【STS初学者必見】STS(Spring Tool Suite)とH2(簡単に使えるDBMS)を使用してSQL文を発行したかった際に起きた、しょうもない記録

##某プログラミングスクール卒業生の備忘録(今回は本気の備忘録)

お久しぶりです!本日は、ほんとにただの備忘録なので、参考程度にだけ覚えておいてください。

※内容がしょうもなさすぎて(笑)

##使用環境

__・Mac OS__
__・Java 11__
__・STS(SpringToolSuite) 2.5.4__

##参考書籍

__はじめてのSpring Boot[改訂版]__

##STSでSQLファイルを作成する際、MySQLWorkBenchが開く

ということで。

JDBCを使用してSQL文でデータを引っ張ってこようっていう、本の演習をしていたんですけど、

springプロジェクト内の「src/main/resources」の配下に

__・schema.sql__
__・data.sql__

の二つを作成しようとしたんですよね。

作成した瞬間、別のテキストでダウンロードした、MySQLの操作ツール「MySQL WorkBench」ってやつが起動したんです。

これは違うと思い、ひたすらSQLファイルの作成方法

今回使用するH2データベースの接続方法を

元記事を表示

暗号化スイート(AES-GCM)でTLSの安全性を強化する方法

TLS1.2で暗号化スイートを利用して安全性を強化する方法について、紹介させていただきます。

## 1.暗号化スイートとは
SSL/TLS にてデータを暗号化して通信を行うには、自分自身と通信相手の両方が利用可能なアルゴリズムを使う必要があります。
不特定の相手と両者が利用可能なアルゴリズムを確認しあうために使われるのが 暗号スイート(cipher suite) となります。

## 2.Tomcatで暗号化スイートの設定について
### 2.1との暗号化スイートを使います?
JAVAで指定できる暗号化スイートは以下のサイトを参照してください
https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1234182/3c6d16e1-d03a-7099-0703-727d507a3a07.png)

例えば、AES-GCMを利用する場

元記事を表示

Java Word文書でハイパーリンクの挿入・読み取り

ハイパーリンクを挿入することで、ワード内の文字列や図形に別の場所の情報をリンクさせることができます。今回は、Spire.Doc for Javaという使いやすいライブラリを活用して、Word文書にハイパーリンクを挿入、そしてWord文書内のハイパーリンクを読み取る方法を紹介していきます。

1.E-iceblueの公式サイトからFree Spire.doc for Java無料版をダウンロードしてください。

f:id:lendoris:20210901151710p:plain

元記事を表示

java エンコーディングMS932にマップできません エラー解消しよう (記録)

##Java日本語のコンパイルエラー解消
以下のコードをコンパイルしようとしてエラーが発生

“`MyApp.java
import java.io.*;

class MyApp{
public static void main(String[] args) throws IOException
{
System.out.println(“文字を入力してください”);

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(str + “が入力されました。”);

}
}

“`
↓コンパイル実行

“` terminal
javac MyApp.java
“`

↓エラー発生

“`
MyApp.java:11: エラー: この文字は、エンコーディングMS932にマップできません

元記事を表示

【対処法】protocol is disabled or cipher suites are inappropriate エラーが出た

#目次
[現象の説明](#現象の説明)
[解決手順](#解決手順)
[参考](#参考)

# 現象の説明
docker-compose up でコンテナを起動します。
その後、ローカル環境でアプリケーションにアクセスしようとしたら以下のエラーが出ました。

“`
com.microsoft.sqlserver.jdbc.SQLServerException:
The driver could not establish a secure connection to the server.
Reason: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
“`

# 解決手順
ポイント:java.security ファイルを修正するだけ

* docker-compose up した後、まずコンテナに入ります。
`docker exec -it [コンテナ名] /bin/bash`

* java.security ファイルのあるディレクトリまで移動します

元記事を表示

[Java基礎③]データの変換(キャストする)整数→実数 文字列→整数

初めに

Java学習3日目です。今回は、データ型の変換について学びました。

データ型の変換をデータのキャストと言うそうです。

小数点あり→整数型

double型の3.14と定義した値を3と表示します。

“`java:コード
public class Main {
public static void main(String[] args) {
double number1 = 3.14;
System.out.println((int)number1);
}
}
“`

整数を小数点ありに変換

“`java:コード
public class Main {
public static void main(String[] args) {
double number1 = 3;
System.out.println((double)number1);
}
}
“`

文字列を数値に変換

“`java:コード
public class M

元記事を表示

== operator for String object in Java

First please read [this](https://qiita.com/saladlam/items/c867416f9b0db83b5e1d) if you don’t sure how to use == operator for object.

# Example from The Java® Language Specification

Got from [here](https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.5).

“`Java
package testPackage;
class Test {
public static void main(String[] args) {
String hello = “Hello”, lo = “lo”;
System.out.print((hello == “Hello”) + ” “); // (1)
System.out.print((Other.hell

元記事を表示

消費税

TAX_RATE =0.8;

元記事を表示

== operator for object in Java

In past I don’t understand why code in inner block doesn’t run.

“`Java
if (new Integer(1) == new Integer(1)) {
doImportantJob();
};
“`

Since “==” operator for object means if both objects point to the same memory location. The code above means two Integer(1) object is created, of course two sides must point to different memory location.

元記事を表示

Salesforceアプリを起動して取引先情報を表示する方法(for Android)

ところで、Androd開発では、別のアプリを起動する処理を書くことが多いですね。

公式ドキュメントの[別のアクティビティを開始する](https://developer.android.com/training/basics/firstapp/starting-activity?hl=ja)を一読すれば、コード自体は簡単に書くことができます。

“`java:Javaで別アプリを起動する処理
Uri intentUri = Uri.parth(“[Intentに渡すための文字列]”);
String packageName = “[起動するアプリのpackage名]”;
String className = “[起動するアプリのClass名]”;
intent.setClassName(packageName,className);
Intent intent = new Intent(Intent.ACTION_VIEW, intentUri);
startActivity(intent);
“`

“`kotlin:Kotli

元記事を表示

Java PDFファイルにパスワードを設定とそれを解除

機密情報を扱ったりする方は、セキュリティ保護に気をつかわなくてはならないでしょう?それに時々、PDFをパスワードで保護しよう!ってこと結構ありますよね。従って、今からfree Spire.PDF for Javaという無料のライブラリを使ってPDFファイルにパスワードを設定、そしてパスワードを解除する方法を紹介いたします。

下準備

1.E-iceblueの公式サイトからSpire.PDF for Javaをダウンロードしてください。

f:id:lendoris:2021</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Java</div>
<div class='tag-cloud-link'>PDF</div>
<div class='tag-cloud-link'>設定</div>
<div class='tag-cloud-link'>パスワード</div>
<div class='tag-cloud-link'>解除</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/iceblue/items/9301fd1a48580a368997'>元記事を表示</a></div>
<h3 id=JavaでTCP通信によるデータ送受信

# TCP通信特徴

* [3ウェイハンドシェイク](https://www.infraexpert.com/study/tcpip9.html)
* クライアントとサーバーでの通信

# データー送信側(クライアント)

Socket クラスでデータ送受信を行う。
`Socket sock = new Socket(IPアドレスまたはホスト名,ポート番号);`

“`Client.java
package com.maekawa.base;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class Client {
public static void main(String[] args) throws IOException {
Socket socket = null;
OutputStream os = null;
try {

元記事を表示

SpringBootAppricationをWarファイル化してサーバーのTomcatにデプロイする方法

##SpringBootAppricationをwarファイル化
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto.traditional-deployment.war

|順番|結果|
|—-|—-|
|extends△△ implements◆◆◆|〇|
|implements◆◆◆ extends△△|コンパイルエラー|

“`:コンパイルエラー
public class CmsApplication implements WebMvcConfigurer extends SpringBootServletInitializer {
}
“`
“`:正解
public class CmsApplication extends SpringBootServletInitializer implements WebMvcConfigurer {
}
“`
##ポイント
* extends SpringBootServletInitializer
* configur

元記事を表示

【JPA】JPQL徹底入門

JPQL (Java Persistence Query Language) は JPA で利用できる SQL ライクなクエリ言語です。JPA を採用したプロジェクトでの検索処理は

– Spring Data JPA の Specification
– Query DSL
– Criteria API

などを利用することも多いですが、これらのライブラリ・API の動作を深く理解するには JPQL の理解が必須です。JPQL では Update / Delete を行うこともできますが、この記事では 利用頻度の高い検索処理に限って解説していきたいと思います。

## 前提

この記事で解説するコードとサンプルデータは [GitHub](https://github.com/sooogle/jpademo) に push してあります。

### サンプルコード

– サンプルコードは、Spring Boot のテストコードとして Java11 で実装しています。パッケージは [こちら](https://github.com/sooogle/jpademo/tree/main/src/

元記事を表示

[Java基礎②]西暦から平成を出す 自動的に現在の年を取得(import java.util.Calendar)

初めに

Java学習開始2日目です。
今回は、西暦から平成を出すプログラムを作成しました。

“`
public class Main {
public static void main(String[] args) {
int seireki = 2015;
System.out.print(“西暦” + seireki + “年は”);
int heisei = seireki – 1988;
System.out.print(“平成” + heisei + “年です”);
}
}
“`
「system.out.print」で改行されないようにしています。

自動的に現在の年を取得

以下のCalendarの使用方法については理解できていませんが、
以下のように記述することで、自動的に現在の年を取得できるそうです。

“`
import java.util.Calendar;
public class Main {
public static void main(Stri

元記事を表示

OTHERカテゴリの最新記事