EclipseのMavenとは何か?

Mavenは[méivən]と発音する。メイベンにちかい。

※話が脱線しますが、むかし「熱海」をネッカイとずっと読んでいて、はじめてアタミと聞いた時には、あまりにもかけ離れていて動揺しました。それ以来、発音を確認する時には熱海が頭をよぎります。

Mavenとは?

Mavenとはプロジェクトのビルド、テスト、ドキュメンテーション、成果物など、プロジェクトのライフサイクル全体を管理するもの。

これだけではよくわかりません。Javaをbuildするツールで、Gradleと同じようなものらしいです。Android StudioのGradleをイメージするとわかりやすいかもしれません。

-mvn deployでローカルからリモートリポジトリにデプロイできる。
-作成したjarファイルをリモートにデプロイするにはpom.xmlにリモートの情報を記載する必要がある

Eclipseで.warファイルを作成・配置する方法

ローカルのeclipseで作成したservletを開発環境、STG、本番環境にデプロイしたい場面があるとします。その場合に、どのような手順で.warファイルを作成、配置するのか、考えたいと思います。

.warファイルとは
javaの設定ファイル、jsp、html、jar形式のライブラリなどがまとめられているアーカイブ。これをtomcat配布すると、それを元にデプロイされる

1. eclipseでアプリケーションを開発する
ここではサンプルとして、TodoServletというアプリケーションを開発しているとします。

2. 画面左ペインProject Explorerのプロジェクトで右クリック
Project Explorerのプロジェクトフォルダで右クリックするとexport -> war fileと出てきます。

3. war fileをexport
export -> war fileを選択すると、ポップアップがひらくので、destinationでwar fileのexport先を指定し、展開します。

すると、指定したディレクトリに ${projectName}.warfile というファイルが生成されます。

このwarファイルをtomcatのwebappに配置すれば完了です。

yum search openjdk

yum search openjdkでjavaのリスト一覧を出します。

jdkをインストールします。
sudo yum install java-1.8.0-openjdk

[vagrant@localhost app]$ java -version
openjdk version “1.8.0_191”
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

ぎゃあああああああああああああああああああああああああああ

index.jspを作成する

index.jspファイルをつくります。なんだこれ、さすがに *.jsp は初めでだぞ。
つーか、なんだこれ、charsetがcharset=ISO-8859-1で、html4だ。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hello, Java World!</title>
</head>
<body>
	<%= new java.util.Date() %>
</body>
</html>

JSPファイルはWebサーバ(ホームページのファイルを置くサーバ)上でお仕事をするJavaのプログラムで、HTMLファイルとJavaのプログラムが合体したもの

java server page そのままやんけ。
JSPファイルは基本的にはHTMLファイル
ただし、その中に、好きなようにJavaのコードを埋め込むことができる。

なるほど。
Java Servletが普通のJavaっぽい書き方になるのに対し、JSPファイルはPHPっぽい書き方になる。

なるほど、なるほど。

JSPファイルはjava servletに変換されるのね。

JSP Servletを動かそう

http://localhost:8080/TodoServlet3/HelloServlet

package todo.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloServlet
 */
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

とりあえず、apache tomcatで動いています。
tomcatはJava Servletを動かすときに必要なソフト(サーブレットコンテナ)
chromeでも同じように動きます。

jdbc

JDBC (Java Database Connectivity) は、MySQLやPostgreSQLといった数々のSQLデータベース、あるいはスプレッドシートなどのデータファイルにJavaからアクセスするためのAPI。
アクセス先ごとに専用のドライバが提供されているため、事前にインストールしておく必要がある。

本家のサイトからMySQL Connectorsを押下する。

eclipseでweb開発をする

helpから行きます。

これでいいのかな?

入りました!!

servletの作成

run on servlet
tomcatが起動する。localhost:8080は404

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello, World!</title>
</head>
<body>
    <%= new java.util.Date() %>
</body>
</html>

何故だ?ようわからん。。

Eclipseを使おう

txtファイルのエンコーディングを設定します。

Caluclation.java


package myPackage.calc;

public class Calculation {
protected int value = 0;
protected int result = 0;

/*
* 計算に使用する値を取得します。
* @return
*/
public int getValue() {
return value;
}
/*
* 計算に使用する値を設定します。
* @param value計算に使用する値
*/

public void setValue(int value) {
this.value = value;
}
/**
* 計算結果をコンソールに出力します。
*/

public void output(){
System.out.println(this.result);
}

}
[/java]

package myPackage.calc;

public class Square extends Calculation {
	
	/*
	 * 値を二乗します。
	 */
	public void calculate(){
		this.result = this.value * this.value;
		this.output();
	}

}
package myPackage.main;

import myPackage.calc.Square;

public class Program {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Square square = new Square();
		
		square.setValue(Integer.parseInt(args[0]));
		square.calculate();

	}

}

Android studioにやや似ているから助かってるが、これどーしろっていうんだろう。。

Hash set

import java.util.*;

public class MyApp {

	public static void main(String[] args){
		// HashSet
		HashSet<Integer> sales = new HashSet<>();

		sales.add(10);
		sales.add(20);
		sales.add(30);
		sales.add(10);

		System.out.println(sales.size());

		for(Integer sale: sales){
			System.out.println(sale);
		}

		sales.remove(30);

		for(Integer sale: sales){
			System.out.println(sale);
		}
	}
}

[vagrant@localhost java]$ javac MyApp.java
[vagrant@localhost java]$ java MyApp
3
20
10
30
20
10

import java.util.*;

public class MyApp {

	public static void main(String[] args){
		
		// HashMap<String, Integer> sales = new HashMap<>();
		Map<String, Integer> sales = new HashMap<>();

		sales.put("tom", 10);
		sales.put("bob", 20);
		sales.put("steve", 30);

		System.out.println(sales.get("tom"));
		System.out.println(sales.size());

		for (Map.Entry<String, Integer> sale: sales.entrySet()){
			System.out.println(sale.getKey() + ":" + sale.getValue());
		}

		sales.put("tom", 100);
		sales.remove("steve");

		for (Map.Entry<String, Integer> sale : sales.entrySet()){
			System.out.println(sale.getKey() + ":" + sale.getValue());
		}
	}
}
import java.util.*;

public class MyApp {

	public static void main(String[] args){
		
		List<Integer> sales = new ArrayList<>(Arrays.asList(12, 30, 22, 4, 9));
		sales
			.stream()
			.filter(e -> e % 3 == 0)
			.map(e -> "(" + e + ")")
			.forEach(System.out::println);

		System.out.println();
	}
}
import java.time.*;
import java.time.format.DateTimeFormatter;

public class MyApp {

	public static void main(String[] args){
		LocalDateTime d = LocalDateTime.now();
		System.out.println(d.getYear());
		System.out.println(d.getMonth());
		System.out.println(d.getMonth().getValue());
		System.out.println(d.plusMonths(2).minusDays(3));
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy!MM!dd!");
		System.out.println(d.format(dtf));
	}
}

[vagrant@localhost java]$ javac MyApp.java
[vagrant@localhost java]$ java MyApp
2018
SEPTEMBER
9
2018-11-13T23:12:54.812
2018!09!16!

スレッド


class MyRunnable implements Runnable{
@Override
public void run(){
for (int i = 0; i < 500; i++){ System.out.print('*'); } } } public class MyApp { public static void main(String[] args){ MyRunnable r = new MyRunnable(); Thread t = new Thread(r); t.start(); for (int i = 0; i < 500; i++){ System.out.print('.'); } } } [/java] [vagrant@localhost java]$ java MyApp ..............................................................................................................................................******************************************************************************...................................................................................................................................................**********************************************************************************************************************************************************************************************************************************************...................................................................................................................................................................................................................**************************************************************************************************************************************************************************************** String class [java] public class MyApp { public static void main(String[] args){ String s = "abcdef"; System.out.println(s.length()); System.out.println(s.substring(2, 5)); System.out.println(s.replaceAll("ab", "AB")); String s1 = "ab"; String s2 = "ab"; if (s1.equals(s2)){ System.out.println("same!"); } String ss1 = new String("ab"); String ss2 = new String("ab"); if(ss1 == ss2){ System.out.println("same!same!same!"); } } } [/java] [java] public class MyApp { public static void main(String[] args){ int score = 50; double height = 165.8; String name = "yokoi"; System.out.printf("name: %s, score: %d, height: %f\n", name, score, height); System.out.printf("name: %-10s, score: %10d, height: %5.2f\n", name, score, height); } } [/java] [java] public class MyApp { public static void main(String[] args){ double d = 53.234; System.out.println(Math.ceil(d)); System.out.println(Math.floor(d)); System.out.println(Math.round(d)); System.out.println(Math.PI); } } [/java] [vagrant@localhost java]$ javac MyApp.java [vagrant@localhost java]$ java MyApp 54.0 53.0 53 3.141592653589793 Random処理 [java] Random r = new Random(); System.out.println(r.nextDouble()); System.out.println(r.nextInt(100)); System.out.println(r.nextBoolean()); [/java] [java] import java.util.*; public class MyApp { public static void main(String[] args){ // ArrayList sales = new ArrayList<>();
List sales = new ArrayList<>();

sales.add(10);
sales.add(20);
sales.add(30);

for(int i = 0; i < sales.size(); i++){ System.out.println(sales.get(i)); } sales.set(0, 100); sales.remove(2); for(Integer sale : sales){ System.out.println(sale); } } } [/java] [vagrant@localhost java]$ javac MyApp.java [vagrant@localhost java]$ java MyApp 10 20 30 100 20