まるろく サーブレットとJSP 6:)
今回は
6章〜
MVCモデルと処理の遷移
それぞれ一応プログラミングできちゃうんだけど
実際には2つを組み合わせて仕事をするらしい
そのほうが効率がいいから
サーブレットクラスとJSPファイルを組み合わせて開発するときに参考にされるのがMVCモデル(GUIアプリケーションのためのお手本)
MVCモデルはアプリケーションを
モデル(計算処理・データの格納)
ビュー(ユーザーにみせる)
コントローラー(ユーザーからの要求を受け取り処理の実行をモデルにお願いしその結果の表示をビューに頼む)
に分けて開発することを定めている
各要素は担当する役割が決められていて他の要素の役割しない
コントローラーは複雑な処理をするのでサーブレットクラスで作る
モデルはWebアプリケーションの知識がないプログラマでもモデルの開発ができるように一般的なJavaクラスとして作る
ビューはHTMLの出力を得意とするJSPファイルで作る
MVCモデルで開発する際コントローラが処理結果の表示をビューに依頼する際にサーブレットクラスからJSPファイルを利用する必要がある
これにはフォワードが使える
フォワードは処理を他のサーブレットクラスやJSPファイルに移すことができる
フォワード先にはサーブレットクラスも指定できるが同じWebアプリケーションのものでないとだめ
フォワード後はURLはリクエスト時のまま
処理を別の処理へ転送する方法にリダイレクトというものもある
ブラウザのリクエスト先を変更して処理の転送を行う
転送元と転送先のアプリケーションが異なる場合リダイレクトを使うしかない
リダイレクト後はリダイレクト先のURLに変更
6章はこんなん
実践のプログラムをもう少し打って覚えちゃうほうがいいとおもう
スペルミスが多いから確認のときはよくみること
MVCモデルを使う理由はよくわかった
次は7章リクエストスコープについてまとめるぞ〜
まるご サーブレットとJSP 5:)
今回は
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:)
今回は
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:)
今回は
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つある
作成したサーブレットクラスを実行するためコンパイル(プログラミング言語で記述されたソースコードを、コンピューターが解釈できる機械語としてのオブジェクトコードに変換する)とインスタンス化(実体化)が必要になる
サーブレットクラスをリクエストするとアプリケーションサーバが自動でインスタンス化をしてくれるし開発者は手動でやらずに済む
サーブレットクラスを実行するとき実際に動くのはアプリケーションサーバが生成したサーブレットクラスのインスタンスである
サーブレットクラスを実行するにはURLを指定するんだけど
サーブレットクラスはファイル名じゃなくURLパターンというものをURL中に指定する
これは自分で自由につけていいらしいけどこれがないとリクエストして実行することはできない
実行方法はブラウザを起動してURLを入力したりEclipseの実行機能も使える
サーブレットが実行するメソッドはリクエストメソッドによって決まる
GETリクエストされたらdoGet()メソッドだし、POSTリクエストされたらdoPost()メソッドを実行する
サーブレットではソースコードを変更しても実行結果に反映されないことがある
この場合しばらく待ってみたりサーバを再起動するといいみたい
大体こんな感じだけど
ちょっとイメージがしにくいところがある
QA
・doGet()メソッドはサーブレットクラスがリクエストされると実行されるメソッド
→javax.servlet.http.HttpServletクラスからかきかえたいところをオーバーライドして書き換える
・ブラウザからリクエストが届くとアプリケーションサーバがサーブレットクラスのdoGet()メソッドを呼び出す。このとき引数として渡されるHttpServletRequestはブラウザから届いたリクエスト、HttpServletResponseはサーバから送り出すレスポンスに関系する情報と機能を持つインスタンスである"
次は4章JSPだ〜
まるに サーブレットとJSP 2:)
今回は
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で開発する場合は
・サーブレット(サーブレットクラスというブラウザから実行できる特別なクラスを使用してサーバサイドプログラムを実現する)
・JSP(JSPファイルというプログラムを使用してサーバサイドプログラムを実現する)
というものが使える
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:)
使っている教科書は
今回は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歳の大学生です。
心理学を専攻していますがなぜかプログラミングに手を出しました。
パソコンの機能はあまり使っていません。
プログラミングなんてほとんどやったことがないです。
中学校の技術の授業でホームページは作りましたがよくわからないで作りました。
実践的に使ったことが無くよくわかっていません。
そもそも頭のなかにあるコンピュータの世界が狭すぎて何を言ってるのかわかりません。
目標は資格取得ですが
その前にコンピュータの世界のイメージを頭のなかに増やせるように勉強していく予定です。
最近少し頭がコンピュータに向いてきているので楽しいです。
毎日、本でめげていますががんばります。
おわり