JDBC

JDBCって何? MySQL接続する為のドライバだった記憶があるが。。

JDBC is, in word, “a standard Java API for accessing relational dattabases (and almost any tabular data). JDBC is said to be short for “Java Database Connectivity” but it is not actually specified in the JDBC specification.

Critical data in an enterprise is often stored in a relational database. As such, JDBC is one of the key APIs underlying Java-based enterprise applications.

Portable database applications can be built by using JDBC drives that absorb differences between databases and JDBC APIs that are standard APIs that do not depend on specific vendors. Not only for the platform of the execution environment, but also for the connected database, it is possible to realize WORA(Write Once, Run Anywhere), which is one of the outstanding features of Java, at a higher level.

JDBC can be used from various Java components such as:
– Regular Java classes and JavaBeans
– Java application that runs on the client
– Java Applet that runs on a web client(web browser)
– Servlets and JSPs that run on a web container(J2EE server)
– Session Bean or Entity Bean that runs on EJB container(J2EE server)

ああああああああ、Javaでアプリケーション作らないといけない、という課題が露呈してしまった。あかん。

Connection reset by peers

Connection reset by peers って何?
Oracleのページを覗く
https://docs.oracle.com/cd/E19455-01/806-2720/msgs-1171/index.html

ピアにより接続が強制的にクローズされました。通常は、タイムアウトや再起動によるリモートホスト接続の切断が原因です。

ピアって何??
AWTとピア
AWT(Abstract Window Toolkit)はJavaでGUI建築をサポートするパッケージ
GUI建築にはAWTの知識が必要
GUIのボタンやスクロールなどのオブジェクトをコンポーネントと呼ぶ
AWTはプラットフォーム依存のウィンドウ操作やAPIを意識することなく建築できる
AWTが提供するコンポーネント・クラス群のことをピアと呼ぶ
JavaプログラムがAWTコンポーネントを生成し、さらにそのコンポーネントがピアを生成する

Java.peerパッケージ
awtの各コンポーネントが、各ウィンドウシステムで実現される際に、システムレベルに対応したクラスに実装すべき機能を提供するインターフェイスの集まり

内部的に使われているのかーーーーーーーー
Java勉強しないとなー

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>

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