スラスラ読めるJavaふりがなプログラミング
posted with ヨメレバ
谷本心/リブロワークス インプレス 2020年03月
書籍「Javaふりがなプログラミング」のまとめ。
点数
60点
感想
初心者向けの内容だった。
ただし、エディタにInteliJ IDEAを使っている、フレームワークとしてSpring Bootを使っている、など初心者向けとは思えない内容も含まれていた。
IntelliJ IDEAでの入力補完
- psvm⇒public static void main
- sout⇒System.out.println();
- command + N(Macの場合)⇒ゲッター/セッター、コンストラクタ、メソッドのオーバーライド、などを自動生成。
※Windowsの場合はAlt + Insert
Scannerクラス
ScannerクラスのnextLineメソッドで、入力データをStringで取得することができる。
import java.util.Scanner;
〜省略〜
Scanner scanner = new Scanner(System.in);
String inputText = scanner.nextLine();
ScannerクラスのhasNextIntメソッドはint変換できる場合にtrueを返す、nextIntメソッドはintとして入力データを取得する。
if (!scanner.hasNextInt()) {
System.out.println("整数を入力してください。\n");
} else {
int num = scanner.nextInt();
}
配列の初期化
String[] strings = {"aaa", "bbb"};
拡張for文
配列、ArrayList、HashSetなどをループさせる。
for (String str: strings) {
コンストラクタにはvoidを付けない
public class Util {
private String msg= "";
public Util(String msg) {
this.msg = msg;
}
}
ArrayList
import java.util.ArrayList;
〜省略〜
ArrayList<String> stringList = new ArrayList<String>();
stringList.add("text1");
stringList.add("text2");
stringList.add("text3");
System.out.println("stringList.get(0)=" + stringList.get(0)); // text1
stringList.remove(0); // 削除するとインデックスが振りなおされる
System.out.println("stringList.get(0)=" + stringList.get(0)); // text2
// 拡張for文にArrayListを使う
for (String str : stringList) {
System.out.println("拡張for文:" + str);
}
Spring Boot
Spring Bootの特徴
- 複雑な設定が不要
- アノテーションで機能を実装できる
- Tomcarが内包されているため動作確認が容易
Spring Bootプロジェクトの作成
Spring Initializr(https://start.spring.io/)というWebアプリを利用する。
設定内容
- Project:Maven Project
- Language:Java
- Spring Boot:初期選択のまま
- Artifct:プロジェクト名やパッケージ名に使われる文字列
- Dependencies:ThymeleafとSpring Webを追加
手順
- Generateボタンをクリックするとプロジェクトファイルがダウンロードされる。
- IntelliJ IDEAのワークスペースに、解凍したフォルダを移動。
- Import Projectでフォルダ内のpom.xmlを選択⇒Mavenによるライブラリダウンロードが行われる。
Spring Bootプロジェクトの中身
src/main/java/パッケージ名/XxxApplication.java
@SpringBootApplication
public class FuriganaJavaSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(FuriganaJavaSpringBootApplication.class, args);
}
}
@SpringBootApplicationアノテーションをmainメソッドを持つクラスに付与することで、Spring Bootアプリとして実行できる状態になる。
Hello World!
- src/main/java/パッケージ名/にcontrollerパッケージを作成する。
- src/main/java/パッケージ名/controller/にHelloController.Javaを作成する。
package info.ageo_soft.FuriganaJavaSpringBoot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
- 先頭行のpackage文は、ファイル生成時にIntelliJ IDEAによって自動的に追加される。
- クラスの@Controllerアノテーションとメソッドの@GetMapping(“/hello”)アノテーションにより、/helloへのリクエストでhelloメソッドが呼び出されるようになる。
- @Controllerや@GetMappingを入力すると、IntelliJ IDEAによって自動的にimport文が追加される。
- 呼び出されたメソッドでは、htmlファイルの名前をreturnする。
- src/main/resources/templates/にhello.htmlを作成する。
- src/main/java/パッケージ名/XxxApplication.javaのmainメソッドを実行する。
モデルを使ったフォーム処理の作成
- src/main/java/パッケージ名/にmodelパッケージを作成する。
- 以下のようなモデルクラスを作成する。
package info.ageo_soft.FuriganaJavaSpringBoot.model;
public class FDat {
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getNum2() {
return num2;
}
public void setNum2(int num2) {
this.num2 = num2;
}
public String getOpe() {
return ope;
}
public void setOpe(String ope) {
this.ope = ope;
}
public double getAns() {
return ans;
}
public void setAns(double ans) {
this.ans = ans;
}
private int num1 = 0;
private int num2 = 0;
private String ope = "";
private double ans = 0;
}
- Thymeleafを使ってhtmlを作成する。
Thymeleafを使うと、HTMLにモデルを埋め込むことができる。
<html xmlns:th="http://www.thymeleaf.org">
<!-- 省略 -->
<form th:action="@{/result}" th:object="${fdat}" method="post">
<input type="number" th:field="*{num1}" />
<select th:field="*{ope}">
<option value="+">+</option>
<option value="-">-</option>
<option value="×">×</option>
<option value="÷">÷</option>
</select>
<input type="number" th:field="*{num2}" />
<input type="submit"value="計算"/>
</form>
<html xmlns:th="http://www.thymeleaf.org">
<!-- 省略 -->
<p th:text="'答えは、' + ${fdat.getAns()}" />
- コントローラーに処理を定義する。
- フォーム画面では、引数で受け取ったModelのaddAttributeメソッドにモデルを渡す。
- 結果画面では、@ModelAttributeアノテーションを付けた引数でモデルを受け取る。
@GetMapping("/form")
public String form(Model model) {
model.addAttribute("fdat", new FDat());
return "form";
}
@PostMapping("/result")
public String result(@ModelAttribute FDat fdat, Model model){
calculate(fdat);
model.addAttribute("fdat", fdat);
return "result";
}