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


スキル無しのシステムインストラクターから、システムエンジニアへの転身日記。
◇◆◇ 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

JavaEEの前に復習をしてみる その15 文字列のフォーマット指定

文字列処理って深いな…。そろそろ飽きてきたかもしれませんね。
私じゃないですよ。見てる人がww

今回は、文字列を表のように出力するときにどのように記述すればいいのか
を考えてみたいと思います。

以下にコードを記載します。
shade,shake,shakoといった3名がいまして(playerName*)、
それぞれ職業をもっています(playerJobs*)。
そして所持金をランダムで表示します。

package test;

public class StringFormatTest1 {

public static void main(String [] args){
final String playerName0 = "[Name]" ;
final String playerName1 = "shade" ;
final String playerName2 = "shake" ;
final String playerName3 = "shako" ;
final String playerJobs0 = "[Jobs]" ;
final String playerJobs1 = "proglammer" ;
final String playerJobs2 = "fish" ;
final String playerJobs3 = "shrimp" ;
final String playerMoney = "[Money]" ;

StringFormatTest1 sft = new StringFormatTest1();

System. out.println(playerName0+playerJobs0+playerMoney);
System. out.println(playerName1+playerJobs1+sft.PlayerMoneySet());
System. out.println(playerName2+playerJobs2+sft.PlayerMoneySet());
System. out.println(playerName3+playerJobs3+sft.PlayerMoneySet());

}

public int PlayerMoneySet(){
int playerMoney = (int)(Math.random ()*100000);
return playerMoney ;
}

}


結果は、
[Name][Jobs][Money]
shadeproglammer1445
shakefish60882
shakoshrimp39569


となります。

全部くっついて、わけが分からなくなりましたw

かといって、
System. out.println(playerName1+" "+playerJobs1+" "+sft.PlayerMoneySet());
といってスペースで誤魔化すのも、なんかプログラミングじゃないですよね。

そこで、コードを書き換えてみます。

package test;

public class StringFormatTest1 {

public static void main(String [] args){
final String playerName0 = "[Name]" ;
final String playerName1 = "shade" ;
final String playerName2 = "shake" ;
final String playerName3 = "shako" ;
final String playerJobs0 = "[Jobs]" ;
final String playerJobs1 = "proglammer" ;
final String playerJobs2 = "fish" ;
final String playerJobs3 = "shrimp" ;
final String playerMoney = "[Money]" ;
final String Format0 = "%6s %10s %7s" ;
final String Format1 = "%6s %10s %d6" ;

StringFormatTest1 sft = new StringFormatTest1();

System. out .println(String.format(Format0,playerName0,playerJobs0,playerMoney));
System. out .println(String.format(Format1,playerName1,playerJobs1,+sft.PlayerMoneySet()));
System. out .println(String.format(Format1,playerName2,playerJobs2,+sft.PlayerMoneySet()));
System. out .println(String.format(Format1,playerName3,playerJobs3,+sft.PlayerMoneySet()));
}

public int PlayerMoneySet(){
int playerMoney = ( int)(Math.random ()*100000);
return playerMoney ;
}

}


結果は、

[Name] [Jobs]     [Money]
shade  proglammer 88,037
shake  fish       74,024
shako  shrimp     60,585



このように見やすくなりました!
何が起きたのでしょうか。

まず、変数に加わった
final String Format0 = "%-6s %-10s %7s" ;
final String Format1 = "%-6s %-10s %,d" ;

を見てみましょう。

ここで言う
%s … 文字列
%d … 数字
- … 左詰
, … 3桁ごとにカンマ
数字 … 文字列の数


といった正規表現とはまた違ったフォーマット指定ができます。
(こういうのがあるから正規表現をいつまでも覚えられないのだがww)

System. out .println(String.format(Format1,playerName1,playerJobs1,+sft.PlayerMoneySet()));

あとは出力の仕方ですが、
String.formatを使って、自分で作った定型FormatのFormat1を指定して成形します。

文字列1つ成形するのにも、クラスを一個成形用に作らないといけないですね。
文字列深いなぁ。きっちり覚えないとな。
この辺を当たり前に使えるか使えないかで、一日にコードをかける時間が変わってくるのです。
オライリー使った時に、この辺って出てこなかった気がするな・・・。
それとも、あまりの分厚さに失念したのか・・・。

SEばっかりやっているから、JavaEEの技術をまた忘れてきた。脳みそよ。もっと頑張れ!!

JavaEEの前に復習をしてみる その14 文字列の切り出しと正規表現

前回の続きですね。文字列関連です。
あ、何気に、この辺、Java SE 7 Gold の文字列処理の試験範囲ですので。
取得を目指している人は、さらっと読めるようになってないとピンチかも。

オラクル認定資格教科書 Javaプログラマ Gold SE 7 (EXAMPRESS)

新品価格
¥4,410から
(2014/3/8 21:24時点)




オラクル認定資格教科書 Javaプログラマ Gold SE 7 スピードマスター問題集 (EXAMPRESS)

新品価格
¥3,780から
(2014/3/8 21:25時点)




あれ??スピードマスターでも出るんかい!!おじさん、びっくりしたわぁ。
同じ翔泳社でつぶし合うのですね。でも、スピードマスターは問題集だからな。
ササッと受かりたい人は、問題集でもいいかもね。
参考書そろってきたなぁ・・・でも、Java SEは、もう8だしな。ついてけないわー。

1.文字列の切り出し

public class JavaString3 {

public static void main(String [] args){
String st4 = "アサイー飲んで運動して健康な生活を送る" ;

System. out.print(st4.substring(0,1)+st4.substring(2,3)+st4.substring(9,11)+st4.substring(18));

}
}


st4.substring(int index,int endIndex)
ということで、文字列の最初の切り出しと、切り出しの終わり位置を指定して文字を切り出します。
endIndexを指定しないと、切り出し位置から最後の位置までを表示します。

結果は、ちょっとしたクイズ。クイズでも何でもないですね。

あとで、別記事で紹介しますが、この切り出し技術があれば他サイトの更新情報をまるっと抜き取ることができます。
あくまで個人で楽しむだけになりますが、成形して自分で分かりやすいように使ったりできると思います。

2.正規表現

あまり得意ではない。正規表現です。
正規表現の書き方って、言語依存な仕様になっていたりするので、
Rubyだったり、シェルスクリプトだったり、Javaだったりで分からなくなります。

勿論、今回は、Javaの正規表現です。

例えば、プログラムに使うユーザー名は、最初の文字は数字が禁止で
6文字のユーザー名で指定しなければならない場合のプログラムを作ります。


public class JavaString4 {

public static void main(String [] args){

String userName1 = "2man001";
String userName2 = "tw0Man";
String userName3 = "shadeday0" ;

System. out.println(userName1.matches("[a-zA-Z][a-zA-Z0-9]{5}" ));
System. out.println(userName2.matches("[a-zA-Z][a-zA-Z0-9]{5}" ));
System.out.println(userName3.matches( "[a-zA-Z][a-zA-Z0-9]{5}" ));
}
}



結果は、

false
true
false


です。

正規表現って、全く触れたことがないとただの暗号ですよね。
matches を使って、一致する場合はtrue。それ以外はfalseと返すようにしています。

問題のここですが、
[a-zA-Z][a-zA-Z0-9]{5}

まず初めに、[a-zA-Z]ですが、1文字目をアルファベットのa~z、またはA~Zと一致するとしています。
そして、[a-zA-Z0-9]{5}は、a~zとA~Zと1~9と一致するを5回繰り返すとしています。

String userName1は、1文字目が数字なのでNGですね。
String userName2は、1文字目がアルファベットで、残り5文字がアルファベット、または数字なのでOKです。
String userName3は、6文字以上なのでNGです。

もし、条件が、「6文字”以上”のユーザー名で指定しなければならない場合」であったなら、
System. out.println(userName3.matches( "[a-zA-Z][a-zA-Z0-9]{5,}" ));
とすればOKです。
数字の後に「,」をつけるだけです。

もし、条件が、6文字以上かつ8文字以内のユーザー名で指定しなければならない場合」であったなら、
System. out.println(userName3.matches( "[a-zA-Z][a-zA-Z0-9]{5,7}" ));
数字の後に「,7」と終点を指定するだけです。

何とかここまで理解したところで、混乱させますが、
実は、
System. out .println(userName1.matches("[a-zA-Z][a-zA-Z0-9]{5}" ));
System. out.println(userName0.matches( "[^\\d]\\w{5}" ));

と書いても一緒なのです。

\\d(\d)は、「0-9」を意味しており、[^]は、否定になるので、「0-9以外」となります。
\\w(\w)は、[a-zA-Z]を意味しております。

よって結果は一緒なのです。

そして、私だけかな。正規表現の書き方で混乱するポイントはもう一つあって、

文字列の頭にAがつくという条件の時は、「^A」
文字列の最後ににZがつくという条件の時は、「Z$」を使います。

え?「^」は否定なんでしょ?行頭文字にも使うの?
先ほどの、否定は忘れて、下記コードを見てみましょう。

package test;

public class JavaString5 {

public static void main(String [] args){

String userName1 = "ABC" ;
String userName2 = "XYZ" ;


System. out .println(userName1.matches("^A\\w{2}" ));
System. out .println(userName2.matches("X\\wZ$" ));


}
}


ここでは、
1行目の出力文では、Aから始まり、[a-zA-Z]な3文字だった場合True
2行目の出力分では、Xから始まり、[a-zA-Z]な2文字目を持ち、Zで終わる場合Trueになります。

"^A"の場合は行頭指定、"[^A]"の場合は、A以外の文字列となります。
焦っていると間違えそうなので、ここは要注意ですね。

ちょっとグダグダですが、正規表現を使うと、文章の切り抜きが楽にできます。
またの機会にでも、実際のサイトから文章を切り抜いてみたいと思います。

JavaEEの前に復習をしてみる その13 文字列の調査や検索

Stringって文字列を表示するだけのものではなくて、
文字情報の比較・検索・抽出にも使えるので、例えばYahoo天気のページから
今日の天気や明日の天気のデータを抽出するような時にも使えます。

今日は、Stringを使った文字列操作を学習してみます。

1.文字列の調査

public class JavaString {

   public static void main(String [] args){   
      String st1 = "Javaを勉強しています" ;   
      String st2 = "javaを勉強しています" ;
   if (st1.equals(st2)){
         System. out .println("この文字列は一緒です" );
      } else if (st1.equalsIgnoreCase (st2)){
         System. out .println("大文字小文字を区別しなければ一緒です" );
      } else {
         System. out .println("違います" ); 
      }
   }
}

例えば、上記のようなプログラムを作った場合、結果は、
「大文字小文字を区別しなければ一緒です」
という結果が返ってきます。

ここでは、
st1.equals(st2)
st1.equalsIgnoreCase (st2)

の2つを使っていますが、

st1とst2が同一であるかを比較する構文になっています。
st1.equals(st2)の場合は、文字列の完全一致を求めているので、
st1とst2は、Java と java の違いがあるので同一と判断されません。

しかし、st1.equalsIgnoreCaseは、大文字小文字を区別しませんので、
同一の文字列として認識し、else ifの結果が返ってくるといったようになります。

あと、よく使うのが、文字列の長さを調べるlengthですね。

System. out.println(st1.length());

とすると、12という文字列の長さを返すことができます。


2.文字列の検索


以下のようになプログラムを書きます。

public class JavaString2 {

    public static void main(String [] args){

      String st3 = "ブログ記事にJavaScriptとJava" ;

      System. out .println(st3.contains("Java" ));
      System. out .println(st3.startsWith("ブログ" ));
      System. out .println(st3.endsWith("Java" ));
      System. out .println(st3.indexOf("Java" ));
      System. out .println(st3.lastIndexOf("Java" ));
     }
  }

結果は、

true
true
true
6
17

一つ一つの役割ですが、

st3.contains("Java" )


こちらは、Javaが文字列に含まれていればTrueを返します。

st3.startsWith("ブログ" )


こちらは、頭にブログという文字列があればTrueを返します。

st3.endsWith("Java" )

想像がつくかとは思いますが、文字列の最後にJavaがあればTrueを返します。

st3.indexOf("Java" )

こちらは、Javaを頭から検索して何文字目にJavaがあるかを示します。
(0)ブ(1)ロ(2)グ(3)記(4)事(5)に(6)Java
で、6という数字が返ってきます。

st3.lastIndexOf("Java" )

こちらは、文字列の最後からJavaという文字列を検索して、
頭から何文字目にあるかという検索の仕方です。最初のJavaよりも最後のJavaの文字列の方が優先されます。

文字列操作だけで、かなり楽しい感じです。
次回も文字列に関する記事を書いていきます。

フロントエンドエンジニアについて学ぶ

前回の記事にて、フロントエンドエンジニアについて興味を持ったので、
もう少し詳しく知りたいなと思いました。

フロントエンジニアはHTMLコーダーの上位職として解釈されることが多いようで、
HTMLコーダー→フロントエンドエンジニアと転身していくのが基本となっているようです。

コーダーは、HTMLとCSSを使ったコーディング作業がメイン業務となり、
Webデザイナーが作成した成果物をWeb上で表現するためにコーディングを行います。
よって、コーダーはオペレータとなりがちで、考えて仕事をする機会を減らしてしまうようです。

それに対して、フロントエンドエンジニアは、JavaScriptやAPIなどの知識を持っており、
デザイナーからも要求ではなく、こういう表現は可能か?など、相談を受ける立場になるそうです。
JavaScriptやAPIを使えば、動的なページの作成は可能になり、こういう表現もできる。
といった提案もできるようになりますね。ここで、考えて仕事をする機会が増えてきます。

ディレクターからも、サービスの実現の可否の相談を受けたり、
コーダーには相談できない動的な部分の実装における工数の確認とかも相談を受けたりしますね。

また、コーダーに関しても、コーダーの上位職としてフロントエンドエンジニアは存在するので、
コーディングに関する相談や、またはスキルアップの目標となり、モチベーションの向上や
チーム全体の作業可能領域の拡大にも繋がると思います。

簡易なプログラミングができるコーダーとしてのみではなく、
フロントエンドエンジニアは全体の相談役として、活躍する機会が多大にあると言うことですね。
ただ、コーダー一筋でやって来た人は、プログラミング技術の習得に加え、コミュニケーションスキルの向上や、
ディレクターが考える納期や予算なども考えて提案できるようになる必要があるということですね。

コーディングをして来て、もっとこうしたら、あぁしたら!とうずうずしている人がいたら、
是非ステップアップを目指してみるのもいいと思いました。
あと、Webプログラマーからのシフトも面白そうだなとは思いますね。
元々私は、カラーコーディネーターの有資格者でもあるので、色相環などの色の最低限の知識はわかりますので、
Webディレクターの補佐的なフロントエンドエンジニアは面白そうだなと思いました。

Webプログラマに必要なプログラミング以外の技術

Webプログラマとして、言語学習は必須であるが言語だけ学習すればいいのではない。

ちょっとショッキングな一言ではあるが、
Java、PHP、Ruby等の言語を使用してWebサイト上で動くアプリケーションを開発するのがWebプログラマであり、
MySQLなどのDBと連携したサーバサイドで処理される部分を担当したり、
HTMLコーダーがコーディングしたHTMLやCSSに合わせたプログラム開発が必要になるため、
HTMLやCSSの理解も必須となる。

HTMLコーダーとの境界線は難しいが、Webプログラミングにおいて、CMSやJavaScript、
各種APIを使ったWebサイトの構築も業務範囲に入ってきたりする。

正直、言語の習得で手一杯で、そんなに手を広げられない!!といった感じだが、
言語は経験を通して使い込んでいけばいいと思っていて、
HTMLやCSSなども読める程度にしておく方が重要な気がする。

私自信がそうだったが、昔、タグうちでホームページを作ったことがある程度の知識で満足していると、
CSSを使ったサイトが、今まで知っていたHTML知識が全く役立たないことに気づくので注意。

よくWeb業界では、LAMPなんて言葉を耳にするが、正直意味がわかってなかった。
IT用語の略語は、星の数ほど存在するので、正直、いちいち気にしていられなかったりする。
これは、Linux,Apache,Mysql,PHPの略だったりする。これ等も必須条件とされている。
私自信は、Javaでの開発者志望なので、LTMJかなLinux,Tomcat,MySQL,Java。ランプと違って、可愛くない。

コーディングに関する基礎知識と、上記のLTMJをすべて触っておくこと。
恐らくどんな要件になったとしても、上記知識があるのとないのとでは、応用のしやすさが全く違う。

さらに、Webプログラマは、コーダー、チェッカー、デザイナー、ディレクターと連携して、ひとつのサービスを作りあげるのである。

この役割における線引きが難しい、JavaScriptやAPIとの連携は、コーダーの仕事になったり、プログラマの仕事になったりするそうです。
この辺の仕事もできるコーダーをフロントエンドエンジニアと呼んだりするそうですね。
プログラマとしてがっつりというより、HTML・CSSをメインにやりたい人は、こちらを目指す選択肢もありますね。

私もWeb業界での今後のスキルの習得方法などを考えていく上で、
プログラマなのか、フロントエンドエンジニアなのか、など、考えていきたいと思っています。

無料でブログを自動更新するプログラムを作ってみる その3 実際にブログを更新してみる

そんなこんなでプログラムは当にできております。
結構単純なものです。XML-RPC自体はあまりよく理解していませんが・・・w
エンドポイントに値をぶち込む!!ただそれだけ。

1.アカウントの準備
アカウントの作成は詳しくは書きません。誰でもできるので。

今回はFC2ブログで自動更新をチャレンジ!!

アカウント、パスワードだけあればいいです。

http://id.fc2.com/signup.php?ref=blog&switch_language=ja

さくっと作ってしまいます。


2.タイトルと本文を用意

アカウント、パスワード以外に必須なのは、
ブログのタイトルと本文。そして更新日付。
あたりまえですね。
初回ということで、とてもシンプルにします。

has.put( "title", "ブログはじめちゃいました" );
has.put( "description", "Javaのプログラムで、エンドポイントをたたいて更新しちゃいました。" );
has.put( "dateCreated", DateFormat.getDateInstance ().parse("2014/02/08" ));


よし、情報はそろった!!

3.実行

えい、実行!

Exception in thread "main" org.apache.xmlrpc.XmlRpcException : Error:Incorrect password.

わお。エラー…。

ID間違えただけでしたw
ID or Password間違えると、これが出ます。
ちなみに、何度もパスワード間違えると、容赦なくアカウント削除されます。
まぁ、スパムと変わらないもんね。。。

今度こそ、えい実行!!

4.結果

無事、更新されました。

yoroshiku.jpg

うん、とてもシンプルだね。プログラミング初歩+APIの理解といったところです。
自分で一から考えてないですからね。
ただ、ソースを利用してもらうにもどういう実装になっているのかを理解しないと、
何の勉強にもなりませんので、前々回のようなAPIを調べるような作業を挟んでいます。

これをランダムな時間スリープして実行とさせるだけで、記事をどんどん生成します。
実行については、ビルドしてからJenkinsで実行してもよいです。
しかし、このままだと毎回同じタイトルと同じ記事です。

本文やタイトルはあらかじめ作ったデータベースから引っ張る。といった仕組みを実装していきたいです。
といっても、サーブレットの記事で、ODBCやっているから、それの応用ですね。

無料でブログを自動更新するプログラムを作ってみる その1 準備

去年、この内容に触れていましたが、ここでシリーズ化してみようと思います。
こっそり過去記事として更新したので、反響は全然ありませんでしたがw

一から自分で考えるのではなく、ある程度アウトリソースを利用しながら
Javaのプログラムを書き換えながら作っていこうと思います。

一度自分で作っていますが、もう一回最初から作っていこうと思っています。

1.フリーブログを更新する仕組み

まず、フリーブログには、エンドポイントというのがあります。

FC2ブログで言うと、

http://blog.fc2.com/xmlrpc.php

これがエンドポイントです。

このエンドポイントに対して、
メールアドレス、パスワード、ブログIDなどの情報を与えることによって、ブログを更新します。

ここに情報を与える手段は、phpでなくても、Javaでも、Perlでもよいのです。
情報の受け取り口として、口を開けて待っているわけです。

通常は、ログインしてフォーマットに従って、タイトル→本文といれていきます。
これはプログラムのわからない人でもブログを更新できるようにしている仕組みであり、
エンドポイントを公開している以上、ブログを更新する手段としては、
上記以外でもいいよ!という許可をしているということです。

ちなみに、ファンブログのエンドポイントは数年前に無くなった認識です。。。

2.エンドポイントの調べ方

ブログのエンドポイントは、XMLRPCというプロトコルで公開されており、
転送機構として、HTTPを採用しています。
これはとても古い技術のようです。それでもいまだに使われているのですね。
エンドポイント一覧を公開しているサイトも多く、
「XMLRPC エンドポイント」と検索すれば、各ブログのエンドポイントがごっそり取れます。

この情報は、ブログを更新するための情報の一つとして必要になります。

3.用意したもの

Eclipse
Apache XML-RPC

Apache XML-RPCを用意して、ダウンロードしてきたApache XML-RPC開発環境に突っ込みます。

これだけ。
あとはプログラミングをしていくだけですが、ソースも古い技術とだけあって、
たくさん転がっているので、ある程度流用させていただきたいと思います。


今日は、この辺で、お開き。
プログラムの構成については翌日。
ソースコードは最後に載せるか載せないか判断します。
正直、上記の情報をもってすれば、載せてるサイト見つかりますけどね。



JavaEEの前に復習をしてみる その12 継承を使ってみる。

こんばんは。Javaやりたい!と会社でことあるごとに呟いているshadeです。

ちょっと、サーブレットやJSPを触っていましたが、また本来のJavaに戻ってきました。
タイトルの意味がなくなってきましたが、ゆるく生暖かく見守ってください。
さて、Java SE Goldホルダーの私ですが、プログラミングスキルが低く、
半年も離れていたらすっかり忘れてしまいましたので、思い出しながら頑張ります。

今回は、継承です。
継承といえば、他のクラスの変数の値や、メソッドの処理をあたかも
自分が持っているかのように使える技術です。(そのほかにもたくさんありますが)
とりあえず、浅く思い出すために、またRPGワールドでやっていきます。

戦士さん…攻撃力が高いのが自慢です。
しかし、戦士である前に人間です。魔法使いさんも、勇者さんも人間です。
ここでは、戦士さんが、人間というクラスを継承する例を使ってみます。

まず、Humanというクラスを作ってみました。
メインメソッドを持っていないので、単体では実行はできません。
ただ、jobとattackpointの値を受け取って、コンソールに出力するだけのクラスです。

package test;

public class Human {
String job= "" ;
int attackPoint ;

public void attack(String job, int attackPoint){
System. out .println(job+"は持っている武器で" +attackPoint+ "のダメージを与えた" );
}

}

続いて、戦士を表すSolidierというクラスを作ってみました。
extends Human という記述で、人間クラスを継承しています。
Soldierクラスは、attackというメソッドを持っていませんが、
Humanクラスを継承することによって、attackというメソッドを呼び出すことができます。

package test;

public class Soldier extends Human {
private static String job= "戦士";
private static int attackPoint =10;

public static void main(String[]args){
Soldier sld = new Soldier();
sld.attack( job ,attackPoint );
}
}


結果は、以下の通り。

「戦士は持っている武器で10のダメージを与えた」

よって、魔法使いや勇者もHumanを継承することによって、attackメソッドを呼び出して攻撃ができます。

うっかり、以下のようなGoblinクラスを継承すると、

package test;

public class Goblin {
int attackPoint ;
public void attack(String job, int attackPoint){
System. out .println(job+"は噛みついて" +attackPoint+ "のダメージを与えた" );
}

}



「戦士は噛みついて10のダメージを与えた」
のように、継承した先のattackの内容に変わってしまいます。
人型の戦士ではなく、ゴブリン型の戦士になったので、もはや敵キャラになってしまいました。

継承という技術は便利で、これは初歩中の初歩です。
自分が作ったクラスを継承するのはもちろん、CoreAPIのような既存のクラスを継承して作業をすることもできます。
むしろ、実務ではそういう技術が必要なので、CoreAPIを普段から読んでおくことが必要なんです

WEBアプリケーションを作りましょう その7 データ入力とjsp同士の連携

よくよく考えたら、いきなり、DBの連携とかぶっ飛びすぎたような気もしますね。
DBから値を引っ張ったり、DBに値を与えたりするやり方は前回の記事で書きましたが、
では、なんでもデータベースを使わなければいけないのか。ということも、もちろんありません。
例えば、データ送信用のJSP、データを受け取って結果を返すJSP。
この二つでやり取りをすることも可能です。

その代り、HTMLのフォーム部品のタグを覚えなければいけません。
もう、開発環境の準備から、DB用意して、HTMLのタグまで覚えさせられて…
ウェブアプリケーションデベロッパーって大変ですね。ウェブアプリケーションデベロッパーって噛みそうですしね。
ウェブアプリケーションデヴェロッパァァアア!!

例えば、選択ボックスから一つ選び、その選んだ言葉に対して答えを変える。
といったJSP。

選択させて送信するためのJSPとして、submit.jsp。
選択した結果を受け取って、表示するJSPとしてanswer.jspを用意します。

submit.jsp

<%@ page contentType= "text/html;charset=UTF-8" %>

< html>
< head>
< meta charset= "UTF-8" />
< title> 送信フォーム  </ title>
</ head>
< body>
< form method= "POST" action = "answer.jsp">
あなたの血液型は?
< select name= "bloodtype" >
< option value= "a" >A型
< option value= "b" >B型
< option value= "o" >O型
< option value= "ab" >AB型
</ select>
< input type= "submit" value = "送信!" />
</ form>
</ body>
</ html>


answer.jsp

<%@ page contentType= "text/html;charset=UTF-8" %>

< html>
< head>
< meta charset= "UTF-8" />
< title> 結果フォーム  </ title>

< body>
<%
String bloodtype = request.getParameter( "bloodtype" );

if (bloodtype.equals("a" )){
out.println( "A型だと思いました" );
} else if (bloodtype.equals("b" )){
out.println( "あー、B型っぽい!" );
} else if (bloodtype.equals("b" )){
out.println( "うん、O型だね!" );
} else if (bloodtype.equals("b" )){
out.println( "ですよね。ABのオーラが出ています!" );
} else{
out.println( "・・・" );
}

%>
</ body>
</ form >
</ html>


submit.jspによってbloodtypeに値を持たせて、answer.jspに飛んだ後、
request.getParameterにて、bloodtypeの値を取得して、
その結果をif文で照合し、その結果をプリントするといったもの。

これも立派な動的処理になるかな。
このやり取りを、前回のJavaの記事を応用すれば、
データをデータベースに持たせることもできますね。

結果画面は、こんな感じです。

WCP_07.jpg

WCP_08.jpg

昔流行ったゲームブックみたいなプログラムならすぐ作れそうですね。
選択肢ごとに、変数に値を持たせて、最終的な数値でハッピーエンドになれるか。
みたいなものなら、あっさり作れると思います。
サーブレットの出番なし。jspのみで作れますね。

Javaプログラマーになるために

たまには、技術系じゃなくてつぶやき系のブログも書いてみる。

まず、大事なことを。
コメントしたいのにできないという皆様。申し訳ありません。
原因がわかりませんが、私の仕業じゃないことは確かです。
本当に困る!コメント欲しい!!コメント返したい!交流したい!

さて、本題に・・・
Javaプログラマーになりたくて転職をした私ですが、インフラ三昧。
というのは、さんざん吐露しておりまして、Galaxylogたまに見てるよ!
というには常識レベルの知識ですが。。。

本格的にインフラに閉じ込められそうになったので、上訴しました。
そして、インフラ&開発を掛け持ち、開発スキルを手にして作業できるレベルになったら
インフラから抜いてもらうよう交渉しました。

そして、いろいろと遠回りしたな・・・と思うことを反省しています。
まず、Javaの資格の勉強は知識を固めるためでした。まぁ、これはいいね。
しかし、SilverとGold、両方とも実務レベルには程遠い。
そして、とるにとりますが、ウェブコンポーネントデベロッパーに関しても、
まず、最初からjspだServletだ・・・とプログラムを書き始めるわけではないということ。

まずは、基礎ができてるの?という話になると思いますが、
ここで言う基礎っていうのは、初めてのプログラミング的な本で言う、
for文、ループ文、if文とか、そういうレベルではなく、
オブジェクト指向の「カプセル化」「継承」「ポリモーフィズム(多態性)」も抑えつつ、
Java Core APIを読める、理解しているのかという話だと思います。

他人のコードを読む、コーディングの可動範囲を広めるには、APIを使いこなすということ。
これらを使わないでコーディングするということは、熊を倒すために腕立て伏せから始めて、
強靭な肉体を作り上げていくことと同じで、相当な時間がかかるのと、限界の壁との戦いです。
APIの理解を深めれば、基礎体力をつけたらあらゆる武器を持ち扱い、熊と戦うための
適した武器を使い戦うことができるでしょう。

というわけで、読むか・・・ Core API。毎日の読書にCoreAPI。
それくらいやらないと、なれないよね。。。
<< 前へ     >>次へ
×

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