まるろく サーブレットとJSP 6:)

今回は

スッキリわかるサーブレット&JSP入門(国本大悟著)

6章〜

 

MVCモデルと処理の遷移

 

サーブレットクラスとJSPファイルって

それぞれ一応プログラミングできちゃうんだけど

実際には2つを組み合わせて仕事をするらしい

そのほうが効率がいいから

 

サーブレットクラスとJSPファイルを組み合わせて開発するときに参考にされるのがMVCモデルGUIアプリケーションのためのお手本)

 

MVCモデルはアプリケーションを

 

モデル(計算処理・データの格納)

ビュー(ユーザーにみせる)

コントローラー(ユーザーからの要求を受け取り処理の実行をモデルにお願いしその結果の表示をビューに頼む)

 

に分けて開発することを定めている

各要素は担当する役割が決められていて他の要素の役割しない

 

コントローラーは複雑な処理をするのでサーブレットクラスで作る

モデルはWebアプリケーションの知識がないプログラマでもモデルの開発ができるように一般的なJavaクラスとして作る

ビューはHTMLの出力を得意とするJSPファイルで作る

MVCモデルで開発する際コントローラが処理結果の表示をビューに依頼する際にサーブレットクラスからJSPファイルを利用する必要がある

これにはフォワードが使える

フォワードは処理を他のサーブレットクラスやJSPファイルに移すことができる

フォワード先にはサーブレットクラスも指定できるが同じWebアプリケーションのものでないとだめ

フォワード後はURLはリクエスト時のまま

 

処理を別の処理へ転送する方法にリダイレクトというものもある

ブラウザのリクエスト先を変更して処理の転送を行う

転送元と転送先のアプリケーションが異なる場合リダイレクトを使うしかない

リダイレクト後はリダイレクト先のURLに変更

 

6章はこんなん

 

実践のプログラムをもう少し打って覚えちゃうほうがいいとおもう

スペルミスが多いから確認のときはよくみること

MVCモデルを使う理由はよくわかった

 

次は7章リクエストスコープについてまとめるぞ〜

 

 

 

 

まるご サーブレットとJSP 5:)

今回は

スッキリわかるサーブレット&JSP入門(国本大悟著)

5章〜

 

フォームについて

 

フォームを使うとユーザーがWebアプリケーションにデータを入力できるようになるんだって

アンケートとかお買い物とかできるな:)

 

一般的なアプリケーションはユーザーの入力に対応して処理する仕組みをもっていて

Webアプリケーションではフォームでそれをやる

 

フォームを使えば入力項目をひとまとめにしてサーバサイドプログラムに送信することができる

フォームはWebアプリケーションにかかせないものだ

 

フォームはHTMLの複数のタグを組み合わせて作成する

テキストボタン・ラジオボタン・送信ボタンなど入力項目のひとまとまりがフォームなんだって

 

フォームの中にはデータ入力や送信のための部品をいれる

たとえば送信ボタンとかテキストボックスとか

 

データを送信するには3つ知らないといけないことがある

 

1. HTMLにはデータ入力や送信のための部品が用意されていて各部品はタグを使ってつくる

気をつけなくちゃいけないのは各部品には識別のために固有の名前をつける必要があること

名前の付け忘れや複数の部品で重複する名前をつけると正しくデータを送信できない(例外もまぁあるけど)

 

2. 部品をいれるフォームの作成

フォームはformタグで作ってこれに部品を入れる

formタグの外に部品を書くとその部品の値は送信されないから注意!

1つのformタグにつき送信ボタンは原則一個!不要な混乱を招かないように!

formタグはaction属性(送信先となるサーバサイドプログラムを指定)とmethod属性(リクエストメソッドをGETリクエストにするかPOSTリクエストにするか指定する)を使って送信に関する情報を指定する必要がある

 

3. データ送信のしくみ

フォームの送信ボタンをクリックするとフォームの部品に入力したデータは「部品名=値」(リクエストパラメータ)の形式で送信される

リクエストパラメータは送信の際にURLエンコードという変換処理(ブラウザが使用している文字コードをもとにする)が行われる

そのため変換されたリクエストパラメータを受け取ったサーバサイドプログラムでは

URLエンコードに使用された文字コードと同じ文字コードを使って元に戻す必要がある

 

リクエストパラメータを送信するリクエストのリクエストメソッドにはGETまたはPOSTを使用する

どちらのリクエストメソッドを使用するかはフォームの作成者がformタグのmethod属性で決定する

GETリクエスト(リクエストによって新しい情報(Webページなど)を取得するような場合

POSTリクエスト(リクエストによってフォームに入力した情報を登録するような場合

に使用する

 

リクエストパラメータの取得方法

 

リクエストパラメータアプリケーションサーバによってHttpServletRequestインスタンスに格納され送信先のサーブレットクラスまたはJSPファイルに渡される

 

リクエストパラメータは応用ができる

たとえばアマゾンでなにか買うとあなたにおすすめのなんちゃら〜とかでてくる

あれは利用者はみえないけれどこっそりリクエストパラメータが付加されてサーバに送信されている

これを行う方法が2つあって

hiddenパラメータを使用する(送信したいリクエストパラメータの名前と値をname属性とvalue属性で指定する)

リクエスト先の指定に「?名前=値」をつける(リンクのhref属性、フォームのaction属性で指定するるクエスト先に?をつけその後ろにリクエストパラメータを追加する)

 

5章はこんな感じ

 

・p138と139がわからないからきいておくこと

・暗黙のオブジェクトについてきいておく

スクリプト式の中には暗黙オブジェクトという宣言せずに利用できる特別なオブジェクトがある(定義済みのため)

Eclipseでエラーが出たけど何が違うかわからないからきいておくこと

 

 次は6章MVCモデルだ!

 

まるよん サーブレットとJSP 4:)

 

今回は

スッキリわかるサーブレット&JSP入門(国本大悟著)

4章〜

 

JSPについて

 

JSPファイルはHTMLの中にJavaのコードを埋め込んで作成するからHTMLの出力を楽にできる

JSPファイルはリクエストされるとサーブレットクラスに変換される

 

 

JSPファイルを構成する要素には名前があって

HTMLでかかれた部分はテンプレート

Javaのコードの部分はスクリプトスクリプトレット・スクリプト式・スクリプト宣言からなる)という

 

スクリプトレットを使うとJSPファイルにJavaのコードを埋め込むことができる

これは1つのJSPファイル内の好きな箇所に何個も記述でき、スクリプトレット内で宣言した変数やインスタンスは同じJSPファイルに記述された移行のスクリプトレットでつかえる

 

スクリプトを使うと変数やメソッドの戻り値などを出力できる

 

pageディレクティブを使うとJSPファイルに関するさまざまな設定を行うことができる

・contentType属性を使用するとそのJSPファイルが処理されHTMLとしてブラウザにレスポンスされるときのレスポンスのContent-Typeヘッダを指定できる

・import属性を使うとクラスをインポートできる(インポートするクラスは必ずパッケージに所属していなければならない)

 

 

JSPファイルができたらブラウザからリクエストして実行ブラウザを起動してJSPファイルのURLを入力するかEclipseの実行機能を使う

JSPファイルの正体はサーブレットクラスだけど扱い方はHTMLファイルなので保存先もURLのルールもHTMLと同じ

エラーが出た場合JSPファイルを修正して上書き保存して再度リクエストすると変更が結果に反映されてサーブレットクラスみたいにまたなくていい!

 

 

 

4章はこんな感じ〜

なんとなくイメージ広がってきたけどまだちょっとつかめないところが何個か

 

QA

・「スクリプト式を使うと変数やメソッドの戻り値などを出力できる」ってところイメージわかない

→例えばyhooの今日のニュースとか

そういう動的な部分をスクリプト式でかける

スクリプトレットはあまり気にしないでよい(全部JSPでかくためにあるが実際にはサーブレットJSPを合わせて使うから)

・import属性を使うとクラスをインポートできる(インポートするクラスは必ずパッケージに所属していなければならない)ってところよくわかんない

→クラス名は自由に付けられる

もし同じクラス名のクラスがたくさんあってもどこのクラスをインポートするのかわかるように

 

 

 次は5章フォームだ〜

 

 

まるさん サーブレットとJSP 3:)

 

今回は

スッキリわかるサーブレット&JSP入門(国本大悟著)

3章〜

 

サーブレットについて

 

Javaを使ってサーバサイドプログラムを作れるのがサーブレット

サーブレットの文法に従いサーブレットクラス(ブラウザからのリクエストによって実行され実行結果をHTMLで出力)というクラスを開発するとアプリケーションサーバ上でそれらを実行できるようになる

出力されたHTMLはアプリケーションサーバがブラウザにレスポンスしてくれる

 

サーブレットには3つのお約束がある

これに従ってクラスを定義する

るーる①javax.servlet.http.HttpServletクラスを継承する

・これはサーブレットクラスのもととなるクラス

るーる②doGet()メソッドをオーバーライドする

・doGet()メソッドサーブレットクラスがリクエストされると実行されるメソッド

要はサーブレットクラスのメインメソッドである

るーる③サーブレット関係のクラスをインポートする

サーブレット関係のクラスは主に「javax.servlet」と「javax.servlet.http」の両パッケージに入っている

 

HTMLの出力のはなし

doGetメソッド内にはリクエストによって実行する処理をかく

HTMLを出力する処理は常に必要になる

処理には

Content-Typeヘッダの設定

HTMLを出力する(Content-Typeヘッダの設定後にする)

の2つある

 

作成したサーブレットクラスを実行するためコンパイルプログラミング言語で記述されたソースコードを、コンピューターが解釈できる機械語としてのオブジェクトコードに変換する)とインスタンス化(実体化)が必要になる

コンパイルEclipseだと上書き保存で自動でしてくれる

サーブレットクラスをリクエストするとアプリケーションサーバが自動でインスタンス化をしてくれるし開発者は手動でやらずに済む

 

サーブレットクラスを実行するとき実際に動くのはアプリケーションサーバが生成したサーブレットクラスのインスタンスである

 

サーブレットクラスを実行するにはURLを指定するんだけど

サーブレットクラスはファイル名じゃなくURLパターンというものをURL中に指定する

これは自分で自由につけていいらしいけどこれがないとリクエストして実行することはできない

 

実行方法はブラウザを起動してURLを入力したりEclipseの実行機能も使える

 

サーブレットが実行するメソッドリクエストメソッドによって決まる

GETリクエストされたらdoGet()メソッドだし、POSTリクエストされたらdoPost()メソッドを実行する

 

サーブレットではソースコードを変更しても実行結果に反映されないことがある

この場合しばらく待ってみたりサーバを再起動するといいみたい

 

大体こんな感じだけど

 ちょっとイメージがしにくいところがある

 

QA

・doGet()メソッドサーブレットクラスがリクエストされると実行されるメソッド

要はサーブレットクラスのメインメソッドである

javax.servlet.http.HttpServletクラスからかきかえたいところをオーバーライドして書き換える

・ブラウザからリクエストが届くとアプリケーションサーバサーブレットクラスのdoGet()メソッドを呼び出す。このとき引数として渡されるHttpServletRequestはブラウザから届いたリクエスト、HttpServletResponseはサーバから送り出すレスポンスに関系する情報と機能を持つインスタンスである"

 

次は4章JSPだ〜

  

まるに サーブレットとJSP 2:)

 

今回は

スッキリわかるサーブレット&JSP入門(国本大悟著)

2章〜

 

作ったWebページを公開するはなし

 

作ったWebページを公開するならWebサーバがないと

Webサーバというのは常時稼働しててブラウザからのアクセス(要求)をずっと待ってる大変なひと

ブラウザからWebサーバへの要求をリクエスト

Webサーバからブラウザへの応答をレスポンスという

WebサーバはリクエストされたらHTMLファイルとかWebページの中身をブラウザにレスポンス

 

Webページを公開する場合はWebサーバに公開したいWebページのHTMLファイルを配置する(Webサーバの中に入れとくって感じなのかなぁ?)

 

Webサーバに配置されたHTMLファイルにはURLという住所みたいなものがあって

Webページを見ようと思った人はどのHTMLファイルがみたいかをURLを使ってブラウザに指示することになっている

 

ブラウザとWebサーバ間の通信でどんなデータをやり取りするかはHTTP(プロトコルで決められているらしい

 

リクエストの場合はリクエストラインというのがあって

・リクエストの方法

・リクエストの対象

・使用するプロトコル

という情報で構成されてる

リクエストの方法が1番大事らしくて(リクエストメソッドという)

これには2つの方法があってどんなことをWebサーバに要求するかで使い分けている

GETリクエスト(WebサーバからWebページの情報を取得するためのやつ)

POSTリクエスト(アンケートフォームなどの情報をサーバに送りたいときのやつ)

 

レスポンスの場合はステータスラインというのがあって

・使用するプロトコル

・動作結果

の2つでリクエストを受けてWebサーバの動作した結果が表示される

動作結果のことはステータスコードといってリクエストが成功したことやサーバ内でエラーが発生したことを教えてくれる

 

レスポンスの2行目移行のヘッダ部にはContene-Typeヘッダというのがあって

ボディ部がなんのデータかを示しているらしい

Webサーバは画像や動画もレスポンスできちゃうからデータの中身はこれですよ〜って教えてあげないとブラウザは正しく情報を読み取れないらしい

 

次はWebアプリケーションについて

 

WebアプリケーションはアプリケーションをWebサーバで公開してブラウザで実行できるようにしたもの

インターネットショッピングや検索もWebアプリケーションらしいけど・・・

 

Webアプリケーションが動作した結果表示される画面がWebページ

Webアプリケーションの中核はサーバサイドプログラム(ブラウザのリクエストによってサーバ上で動作しその実行結果をHTMLでレスポンス)

 

サーバサイドプログラムをJavaで開発する場合は

サーブレットサーブレットクラスというブラウザから実行できる特別なクラスを使用してサーバサイドプログラムを実現する)

JSPJSPファイルというプログラムを使用してサーバサイドプログラムを実現する)

というものが使える

JSPファイルはなぜか実行の際にサーブレットクラスに変換される

 

通常のWebサーバはHTTPを使ってブラウザと通信する機能は持っているけど

プログラムを実行する機能は持っていなくて、実行する機能を別に追加する必要がある

プログラムを動かす機能(実行環境)を持つWebサーバのことをWebアプリケーションという(アプリケーションサーバ内のサーブレットクラスを実行するサーブレットコンテナを含める)

 

開発環境はPleiades(プレアデス)というソフトウェアをインストールすれば全部揃う(統合開発環境Eclipse・開発に便利な機能(プラグイン)・WebアプリケーションサーバApacheTomcatがセットになってる)

統合開発環境はエディタと開発に関わるツールコンパイラ・デバッガなど)を統合したソフトウェアでIDEとも呼ばれる

Webアプリケーションのためのプロジェクトを動的Webプロジェクトといい動的WebプロジェクトのなかにWebアプリケーションを構成するプログラムなどを入れることができる

動的WebプロジェクトのプロジェクトとはアプリケーションなどひとまとまりのものをいれるEclipseの単位

どうでもいいけどEclipse設定めっちゃ難しかった 

 

2章はこんな感じだったけど

イメージがまだあいまいかも

何周かしたから最初よりはわかるけど語句の意味とか整理しとかな

 

次はサーブレットの基礎だ〜

 

QA

・Webサーバが落ちたらどうなるのか

→エラー(50x)が出る

→notfound(40x)

→ただいまページが混み合っていますみたいなあれ

オープンソースと商用製品の違い

最新のオープンソースはここ変えたいとかこんな機能ほしいとかを個人が付け加えられたりバグを見つけてもらえたりいろんなメリットがある

商用製品はどっかの会社がだしてるけど金融機関とかお金が絡んだりしてる のはこっちを使う

JSPファイルはなぜ実行の際にサーブレットクラスに変換されるか

人間にとってわかりやすようにサーブレットJSPにわかれているだけだから実行の際にはひとつにもどる

 

 

 

 

 

まるいち サーブレットとJSP 1:)

 

しばらくサーブレットJSPのお勉強をします

 

使っている教科書は

スッキリわかるサーブレット&JSP入門(国本大悟著)

 

今回は1章について

 

最近はインターネットが強いから

アプリケーションも「デスクトップアプリケーション

より

インストール不要な「Webアプリケーション

が人気

 

Webアプリケーションは、Webのしくみを利用して動作するアプリケーション

SNSやショッピングサイトもこれにあたる

 

Webアプリケーションを作りたいならWebページを作らないといけない

Webページ作成に必要なのは2つ

HTML(Webページを記述する言語)

ブラウザ(HTMLで作成されたWebページを表示する)

ブラウザで代表的なのは「Internet Explorer」とか「Safari

 

HTMLには2つ文法がある

タグ(Webページの構成要素を表す)

属性(タグに加える補足的な情報)

タグは開始タグ<終了タグ>で囲み、囲まれたところが内容、タグと内容合わせて「要素」になる

 いろんなタグがあるから(表を作ったりもできる)HTMLリファレンスを利用するといいって

 

タグには基本構造がある

htmlタグ(HTML全体を囲み、内容にはhead,bodyタグをかく)

headタグ(タイトル、文字コード、作者などWebページに関する情報をかく)

bodyタグ(ブラウザに表示されるWebページの本体をかく)

DOCTYPE宣言(どのバージョンのHTMLを使用するか)

の4つ!この構造はお約束らしい

 

そういえばコンピュータは0か1の世界って情報の先生が言ってたけど

すべての文字には文字コードが割り当てられているらしい

どの文字にどの文字コードを割り当てるかというルールは文字コード体系(文字コード)といって、日本語に対する文字コードは何個かあるらしく、UTF-8はなんか人気らしい

文字化けとかは保存時と読み込み時で文字コードが違くてうまく表示されないとおこっちゃうらしい

最近相手の送ってくる絵文字みれないときあるなぁ

 

HTMLファイルが保存できたらブラウザを読み込んでWebページを表示させるんだけど、これをHTMLを実行するという

HTMLファイルをダブルクリックしてブラウザが起動できる

ページが空白になったり文字化けしてたら、ミスってるからどこが間違っているか調べること

 

だいたい1章はこんな感じのことが書いてあったけど

イメージしやすいしまだわかるかなぁ

実際に書いて覚えよ

 

次はWebのしくみだ〜

 

今回の章の疑問点

Macの場合WebページのHTMLはどうやってみることができるんだ

firefoxをインストール

firebugを追加

firefoxを開いて検索

→みれる!

UTF-8はなぜ人気か

→一番新しい

→どこの国から使っても文字化けしないようになっている

・段落と改行の違い

ブロック要素・・・テーブルタグやリストタグのように1つの文書のまとまりで前後に改行が入る要素

<p>はこっち

インライン要素・・・行内の文字を装飾したり論理的な意味をなす要素

<br>はこっち

 

 

 

まるぜろ

 

お昼です。

ブログ始めます。

 

自己紹介

 

まるこ

20歳の大学生です。

心理学を専攻していますがなぜかプログラミングに手を出しました。

 

パソコンの機能はあまり使っていません。

プログラミングなんてほとんどやったことがないです。

中学校の技術の授業でホームページは作りましたがよくわからないで作りました。

JAVAの絵本を読んでJAVAの知識は少しありますが

実践的に使ったことが無くよくわかっていません。

そもそも頭のなかにあるコンピュータの世界が狭すぎて何を言ってるのかわかりません。

 

目標は資格取得ですが

その前にコンピュータの世界のイメージを頭のなかに増やせるように勉強していく予定です。

最近少し頭がコンピュータに向いてきているので楽しいです。

毎日、本でめげていますががんばります。

 

おわり