アフィリエイト広告を利用しています


スキル無しのシステムインストラクターから、システムエンジニアへの転身日記。
◇◆◇ 2013年取得資格
LPICレベル1
LPICレベル2
LPICレベル3 Core
LPICレベル3 Speciality 302
LPICレベル3 Speciality 303
LPICレベル3 Speciality 304

Cisco CCENT
Cisco CCNA

Java SE 7 Silver
Java SE 7 GOLD

OSS-DB Silver

◇◆◇ 2014年取得資格
HTML5 Professional レベル1

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

Webアプリケーションを作りましょう! その5 データベース環境の準備

Webアプリケーションといえば、データベース。これは切っても切れない関係です。
Javaからデータベースに接続するためには、Java側としては「JDBC API」というAPIを利用して接続を行います。
そして、接続先のDBも自分で準備します。
好きなものでいいと思いますが、私自身がMySQLを勉強したいので今回はMySQLを利用します。
APIについては、DB環境を作成してから説明しましょう。

1.データベースのインストール

MySQL.com http://www.mysql.com/

MySQL Community Serverから
MySQL Installer 5.6.15をダウンロードします。
OracleIDとパスワードが必要です。
登録して、入力し MySQL Database 5.6.15 ZIP for Windows x86 (64bit) を取得しました。
(この辺の下り、手順が多くて面倒ですよね。)

そしてインストールします。
とりあえず、全てデフォルトでインストールしてしまいます。

そして、Java環境とDBの接続に使用するJDBCドライバも、
同じページでダウンロードできますが、Msi形式のインストーラーでダウンロードしたら、
MySQL ConnectorsからConnector/Jも一緒にインストールしてくれました。

Windows8環境ですが、MySQL Serverは、
C:\ProgramData\MySQL\MySQL Server 5.6に保存されたようです。

2.データベースの作成

Msiファイルでインストールするメリットとして、
MySQL WorkbenchというGUIでデータベースを操作できるツールもインストールしてくれます。

インストール時のアカウントやサーバの情報が既に設定されてインストールされているので、
パスワードの入力のみでサーバにログインできます。

webappというデータベースを作成します。

CREATE DATABASE webapp;
作ったwebappというデータベースに接続します。
use webapp;
テスト用のテーブルを作ります。
CREATE TABLE TESTACCOUNT (
USERID INT PRIMARY KEY,
USERNAME VARCHAR(30),
USERPASS VARCHAR(30)
);

テーブルの中身を入れていきます。

insert into testaccount values (1,'shade','001');
insert into testaccount values (2,'taro','002');
insert into testaccount values (3,'jiro','003');

テーブルの中身を確認します。

SELECT * FROM TESTACCOUNT;

WCP_04.jpg

これでデータベースの作成と、その中身を作成することができました。

3.JDBCドライバの配置

MySQLをダウンロードするときに、一緒にインストールされた
「Connector/J」をEclipseで立ち上げた「TestWeb」プロヘクトのWEB-INF/libディレクトリにコピーします。
デフォルトでインストールしたなら、C:\Program Files (x86)\MySQL\Connector J 5.1.27にあるはずです。
ファイル名は、「mysql-connector-java-5.1.27-bin.jar」です。

WCP_05.jpg

コピーが完了したら、ビルドパスに追加します。Connectorのjaraファイルを右クリックして、
ビルド・パス→ビルド・パスの追加を実行します。

これでデータベース環境を使う準備ができました。
次回、プログラムからデータベースに接続し、jspからデータベースの値を取得してみましょう。
接続の構文は、一個一個理解すれば、そんなには難しくないです。
一回接続のクラスを作ってしまえば、あとはそのクラスを読み込んで使うだけです。

うーん、Java楽しいな。

Webアプリケーションを作りましょう! その4 JSPとサーブレットでWEBアプリ入門!後編


昨日、JSPを体験していただきましたが、JSPは、やはり手軽です。
HTMLと似た感覚で書けますので、ウェブデザイナーが動的ページを作る際に、
JSPでウェブページを作成し、本格的な処理はプログラマがサーブレットに処理を書く
といった分担ができるわけですね。

3.サーブレットを作成する

では、サーブレットのクラスを作成します。
サーブレットはプログラムなので、WEB-INF/srcに配置します。
上記を右クリックし、新規→クラス→名前に「TestServlet」としました。

ここでは詳しく触れませんが、Servletを動かすには、javax.servlet〜のAPIのimport文を記述します。
(しなくてかけないというわけではありません)
という私も、APIに関しては知識が浅く、たいして語れる知識も持ち合わせていません。

またまたぶっ飛びますが、Javaの重要な技術「継承」もひつようになります。
この「TestServlet」クラスは、親クラスとして「HttpServlet」クラスを継承しています。
継承をすると、親が持っている値やメソッドを自分が定義したように使えるようなイメージです。
例えば、人クラスが鳥クラスを継承すると、空を飛べる。みたいなイメージです。
下記に示すdoGetというメソッドは、「HttpServlet」のメソッドを継承しています。

throwsという表現も出てきますね。
ここでは例外が発生する可能性があるものを書いていると思ってください。

恐らくいないと思いますが、このサイトで1からJavaをやってみた人には、
いきなりぶっ飛んだ記述になってますが、お許しください。


package testWeb;

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

@WebServlet (name="testsrv" ,urlPatterns= "/testsrv")
public class TestServlet extends HttpServlet{
protected void doGet(HttpServletRequest req,HttpServletResponse resp)
throws IOException,ServletException{
resp.setContentType( "text/html;charset=UTF-8" );
PrintWriter out = resp.getWriter();
String msg = "Servlet動くかなぁ・・・" ;
out.println( "<!DOCTYPE html><html><head><meta charset='UTF-8' />" );
out.println( "<title>Servletで作る動的ページ</title>" );
out.println( "</head><body>" );
out.println(msg);
out.println( "</body></html>" );
}
}

コードの前に書いた補足を読み取れば、何とかコードは読み取れるレベルかな。
タグを打つにも、print文の中に入れなければなりません。
あとは、やたらimportしなければいけませんね。
補足してないところで言うと、
import javax.servlet.annotation.WebServlet;
を使うことで、サーブレットの場所を指定しています。

実行結果は、下記です。

WCP_03.jpg

昨日の記事と比較すればわかるように、ただ単に、ウェブページの内容を表示したいだけなら
JSPで作った方が楽です。逆にコードが多くなるなら、サーブレットのほうが楽ですね。
結局、JSPもサーブレットなのです。JSPは実行されるときに、サーブレットソースに変換されてから
コンパイルされて実行しているのに過ぎないのです。
だから、昔の人はJSPなんてなかったから、全部サーブレットで書いていたんだぞ!なんて話をこの間、聞きました。

この技術を応用すれば、ウェブ上で動的ページを作ることが可能なわけです。
意外と簡単でしょう。ウェブアプリ。
ただこれをセキュリティ面、処理速度、I/O、データストアなど、
商用レベルで設計、構築しなければならないと考えると難しくなるのですね。

次は、データベースと連携させてみましょうか。
これができれば、データの受け渡しができるようになるので、
さらにアプリケーションっぽくなりますね。

Webアプリケーションを作りましょう! その3 JSPとサーブレットでWEBアプリ入門!前編

こう記事を書いていると気づくことがあります。
Webアプリケーションのプログラマを目指して転職したくせに、
結局インフラに配備され、すっごい遠回りしているというのが表面にはありますが、
今のインフラの知識は、開発をするうえで重要なものであることも事実です。

Webアプリケーションは、プログラムだけで完結するようなものではありません。
データベースは、ほぼ必須でしょうし、処理の一部は既存のアプリケーションを
活用することもあるかもしれません。
Tomcatを使うにしても、設定ファイルのどこをどういじると、
プログラムに影響が出るのかなど、挙げればきりがありません。
その辺を理解したプログラマは、やはり強いんじゃないかと思います。
やっぱり、いろいろ吸収したうえで、目指していかないとなぁ。。。

と、前置きが長くなりました。
今日は、jspとサーブレットをTomcat上で動かしていきます。
今まで、JavaEEの前に…シリーズで、クラスファイルをEclipse上で実行してきましたが、
サーブレットやTomcatのようなアプリケーションサーバがあって初めて起動します。
なので、練習するにも環境づくりは必須なのです。

jspとサーブレットって何?ってところから触れると、
この記事がそれだけで終わってしまいますので、簡単に。

サーブレット…HTMLの出力
JSP…HTMLに埋め込み

わかりそうでわからないような書き方ですが、
javaプログラムの中に、print文としてHTMLタグを入力するのがサーブレット。
HTML記述の中に、javaのコードを埋め込むのがjsp。

プログラムよりか、HTMLよりかといった感じで考えるとわかりやすいかもしれません。

1.プロジェクトを立てる

EClipse ファイル→新規→その他→Tomcatプロジェクト

プロジェクト名:testWeb
コンテキスト名:/testWeb

これで、testWebというプロジェクトが作成されて、
http://localhost/testWeb
というアドレスが作成されました。

このプロジェクトは以下のWEB-INF配下にJSPやサーブレットを作成していきます。

2.JSPファイルを作成する

Eclipseのパッケージ・エクスプローラから、testWebプロジェクトを右クリックして、
新規→ファイル→「test.jsp」と入力して完了。

すると、WEB-INFの下にjspファイルが作成されます。

では、jspの中身を書いていきます。

test.jsp

<%@ page contentType= "text/html;charset=UTF-8" %>
<%! String msg ="こんにちは。" ;%>

< html>
< head>
< meta charset= "UTF-8" />
< title> <%= msg %> ようこそ!私のホームページへ!

< body>
<%
for (int i=1;i<4;i++){
out.println(msg + i + "回目のあいさつ
" );
}
%>



今までのJavaEEの前に…で書いた内容+@の内容です。
恐らく、<% %>で囲まれたところがわからないだけで、
他はHTMLのタグと、一般的なJavaのコードだというのがわかると思います。

では、http://localhost/testWeb/test.jspにアクセスします。
Tomcatを立ち上げていなかった場合は、昨日設定したEclipseのメニューバーにある
Tomcatプラグインから起動させてください。

WCP_02.jpg

こういう感じで表示されました。jspが動きました。
ウェブページとプログラムがコラボしています。ちょっとウェブアプリっぽさが出ますね。

まずは、JSPを体験していただきました。
環境さえ構築してしまえば、バンバンJSPが書けるようになります。
そして、サーブレットに続きたいところですが、
ページの容量の関係上、サーブレット編は翌日に持ち越します。

Webアプリケーションを作りましょう! その2 開発環境を整える。

このブログで過去にTomcat入れたことあったかな…。
まぁ、いいや。Tomcatはいろんな入れ方がありますが、とてもシンプルに行きます。
それ以前に、Eclipseはインストールしてある前提ですよ。
入れ方は過去記事を参照ください。

まず、自分のローカル環境でテストが必要なので、そのテスト用のTomcatですね。

1.ローカル環境にTomcatをインストールする

Apache Tomcat http://tomcat.apache.org/

こちらのサイドバーから、Download→Tomcat7.0と選択し、ローカル環境へダウンロード!自分の環境のファイルをダウンロードしてくださいね。
(8.0でもよいですが、このあと紹介するプラグインが対応していません)
私の場合は、64-bit Windows zip (pgp, md5)こちらですね。
ダウンロードが終わったら解凍して、任意の場所へ配置してください。

Tomcatの開始プログラムは、ダウンロードしてきたフォルダのbinフォルダにあります「start.bat」です。これをダブルクリックをすればTomcatが起動します。

コマンドプロンプトが開いて、

25-Jan-2014 18:19:09.776 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]
25-Jan-2014 18:19:09.776 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-apr-8009"]
25-Jan-2014 18:19:09.776 INFO [main] org.apache.catalina.startup.Catalina.start
Server startup in 1253 ms


こんな画面が開いたらTomcatが起動しています。

確認としては、

http://localhost:8080/

をたたいて、Tomcatの画面が見れれば成功です。

もし、startup.batを実行しても、コマンドプロンプトが瞬時に閉じてしまって
なにもおきない場合は、失敗です。
恐らく、環境変数の設定ができていません。

システム変数に、
変数名 JAVA_HOME
変数地 JDKの場所(デフォルトだと、C:\Program files\Java\jdk○○とかかな)

そして既存のシステム変数のPathにも、
%JAVA_HOME%\bin;
これを追記してあげてください。前のPathを消さないように注意してください。

これで、コマンドプロンプトで、
path
set JAVA_HOME
などをたたいても登録した変数が表示されなければ再起動。

これでいけなければ、apache_tomcatのフォルダ自体のアクセス権を疑ってください。

トラブルシューティングまで書いてたら、文字数が膨れ上がってきた・・・。
今日はまだまだ行きますからね。



2.EclipseにTomcatプラグインをインストール

プラグインはなくても、何とかなった気がしますが、
あると便利だと評判の、「Sysdeo Tomcat」を入れてみます。
これがあると、Eclipse上でTomcatの起動・停止・デバッグが行えるそうです。

Eclipseのプラグインはヘルプ→Eclipseマーケットプレイスからも入れられますが、
最新版が表示されなかったので、URLからダウンロードします。

Sysdeo Tomcatプラグイン
http://www.eclipsetotale.com/tomcatPlugin.html


画面をちょっと下に下げると、「Download」という画面が出てきます。
tomcatPluginV33.zip
こちらをダウンロードしました。そして解凍をしたら、EclipseのDropins
というフォルダに放り込んでください。

そして、Eclipseを起動すると、下の画像のように
Tomcatの起動・停止ができるメニューが追加されました。うーん、シンプル。

WCP_01.jpg

そしたら、プラグインの設定をしてあげましょう。
Eclipseのウィンドウ→設定からTomcatというメニューを選択します。

Tomcatのバージョンを、ダウンロードしてきたバージョンに。
(管理人は、8をダウンロードしてきてしまったため、バージョン7までしかないので、
7で登録をしています)

Tomcatホームを、Tomcatを保存したフォルダに設定。

とりあえず、これでTomcatプロジェクトというプロジェクトを使って開発できる環境が整いました。

お疲れ様でした。今日はここまで。
Webアプリケーションですので、サーバ上で動かします。
なので、最終的には、ローカル環境以外にサーバにTomcatをインストールして
アプリケーションをその上に配備するという作業があります。
なので、自分でWebアプリケーションを動作させるには、サーバ知識0ではいけないのですね。

そういう意味では、AWSは開発者にも、割とわかりやすい環境で、
ネットワーク知識や、Linuxサーバの立ち上げなどの作業は、省いてサーバを立てられるので、合わせてAWSも覚えていければ、今後楽なのかもしれません。

これは、まさに私のことをさしていて、サーバ知識は多少ありますが、
オンプレミス環境で一から立ち上げしたことはないので、AWSを通して
サーバ構築ってどういう感じで行われるのかを実感しています。

私は、ソースコードが読めるインフラエンジニアではない。
インフラ環境を組めるプラグラマーになるのです!

え?今はどっちかって? 前者よりですね・・・。

Webアプリケーションを作りましょう! その1 え?もう脱線なの?

JavaEEの前に復習をしてみるシリーズを中断しまして(また戻ります)
Webアプリケーション開発についても並行して進めていきます。

Webアプリとして、Todoリストだったり、掲示板やショッピングサイトなどが
これにあたり、ブラウザを通してサーバとDBの処理が絡んでデータを返す
といった仕組みです。

私は、これをメインでやりたくて、今の会社に入社しましたが、
Webアプリを乗せて動かすサーバサイドの仕事を主にさせられています。
勿論、この辺の知識があるのとないのでは、雲泥の差…。
DBやインフラを理解せずして、設計はもちろんコーディングも難しくなります。
そこに向けて、LinuxやOSS-DBを学習してきた。CCNAもね。

しかし、今インフラメインでWEBに携わっていますが、OSS-DBのSILVERを持っていても
DBが違えば、何の役にも立たなかった…ということ。
MySQLやOracleを使っていたら、障害対応とか、すごいパニクってしまう。
というか、PostgreSQLだったとしてもそうだ。全然役立ててないな…。
MySQLも資格試験あるんですよ。でも、ねぇ…。といった感じでしょうか。
MySQLは恐らく、衰退する一方だと思います。この業界が詳しい人は理由はわかると思います。それでも、PostgreSQL!PostgreSQL!とはなっていない気もします・・・。
どうしたもんですかね。

さて、Webアプリケーションは、

ブラウザ ←→ アプリケーションサーバ ←→ データストア

という関係で、リクエストとレスポンスで成り立っております。


具体的には、

アプリケーションサーバは、Tomcatやglassfishなど。
データベースは、MySQL,PostgreSQL,Oracleなどでしょうか。

この環境があって、初めて動くのでサーバサイド、データベースの知識もあるにこしたことはないです。プロジェクト単位で動いているので、役割がしっかり分かれていて、
サーブレットだけかければいいという場合もあると思います。
しかし、パーツパーツによっては、画面側なのか、DBの処理を主に扱うのか、
または他サーバサイドの技術に近いのかで、持つべき知識は複雑に絡み合ってきます。

大丈夫です。今あげたところを一通り独学で触ってきた私も、
実務になれば、全然わかりません。お手上げです。(大丈夫じゃないだろw)


とにかく、勉強もいいけど練習も必須ということで、
簡単なWebアプリケーションも作っていきましょう。

おいおい、JavaEEの前に・・・シリーズ途中だろ!とお思いのあなた。
大丈夫です。技術的には、そこまでぶっ飛んできません。
今まで覚えた知識に、TOMCATとサーブレットをちょこっと絡める程度から始めます。
複雑になってきたら、戻りましょう!!

では、前置きが長くなったので、また次回に続きましょう。
<< 前へ     >>次へ

先頭に戻る

×

この広告は30日以上新しい記事の更新がないブログに表示されております。