□技術メモ - Java サーブレット JSP による開発 (1) ※管理人の個人的な技術メモです。このページの内容を実行した結果について 管理人はいかなる責任も負いかねますのでご自身の責任でお試しください。 ----------------------------------------------------------- ○環境設定 ・以下の内容はEclipseは使用せずに、コマンドラインで開発を行う。 ・環境設定の手順は以下を参照。 http://3rd.geocities.jp/tnoguchislg/5-env/java-env.txt ----------------------------------------------------------- ○INDEX ----------------------------------------------------------- ○java-servlet-jsp-dev-2.txt ・「ctxt2」を作成する。 ・サーブレットからjspを呼び出す方法について確認する。 ----------------------------------------------------------- ○java-servlet-jsp-dev-3.txt ・「ctxt3」を作成する。 ・jspの
内に、コンボボックスとテキストフィールドを設定する。 ----------------------------------------------------------- ○java-servlet-jsp-dev-4.txt ・「ctxt4」を作成する。 ・モジュール間の遷移は以下の通り。 index.html :メモ欄入力 ↓ getMemoData :js1.jsp呼び出し ↓ js1.jsp :予約入力および判定結果表示 ↓ ↑ checkReserve :予約可能判定 ・jspとjavascriptの関係について考察 ・アトリビュートの追加と取得について ・jsp内での関数宣言の方法について ・ForwordとRedirectについて ・js1.jsp画面におけるパラメータの入出力について ----------------------------------------------------------- ○java-servlet-jsp-dev-5.txt ・「ctxt5」を作成する。主にindex.htmlの修正で検証できることについて確認している。 ・1画面にタグを複数設定できるか? ・form内に複数のaction、またはsubmitを設定できるか? ・検証のために設定したモジュール間の遷移は以下の通り。 index.html ↓ ↓ getMemoData getMemoData2 ↓ ↓ js1.jsp js2.jsp ----------------------------------------------------------- ○java-servlet-jsp-dev-6.txt ・「ctxt6」を作成する。 ・以下の遷移の方法、およびパラメータもしくはアトリビュートを追加する方法について jsp→jsp jsp→サーブレット サーブレット→jsp サーブレット→サーブレット ・Forward / Redirect による遷移の違い ・GET / POST の違い ・これらについて検証するために設定したモジュール間の遷移は以下の通り。 index.html :メモ欄入力 ↓ getMemoData :js1.jspを呼び出す ↓ js1.jsp :予約入力および処理結果表示 ↑ → checkReserve1 :予約可能判定 ↑ ↓ ↑ ← checkReserve2 :判定コードに対する表示文言を取得する js2.jsp :予約判定表示および 「予約する」/「キャンセルする」を問い合わせる ----------------------------------------------------------- ○java-servlet-jsp-dev-7.txt ・「ctxt7」を作成する。主にindex.htmlおよびサーブレットの修正で検証できることについて確認する。 ・タグのnameが重複した場合、またはidが重複した場合の、 get, post の動作、およびjavascriptの動作について確認する。 ----------------------------------------------------------- ○java-servlet-jsp-dev-8.txt ・「ctxt8」を作成する。 ・タグに入ったあたり、エンコード指定を行った次あたりで、 サーブレットの呼び出し、もしくはjspの呼び出しを行うjspのコードを追加してみる。 これにより、現在の表示をキャンセルして次の画面に遷移することはできるか? ・以下の検証のため以下の画面遷移を設定する。 index.html :メモ欄入力 ↓ getMemoData :js1.jspを呼び出す ↓ js1.jsp :予約入力 ↓ js2.jsp :割引サービス画面を表示 D51, C62の場合はそのまま表示 あさま、ときの場合は、画面表示を中断して、Forwardにより、js3.jspに遷移する 桜島、銀河の場合は、画面表示を中断して、Forwardにより、サーブレット callJS3 を呼び出し→js3.jspに遷移 ↓ js3.jsp :割引サービス内容および予約内容を表示 ・もしForwardでサーブレットを呼び出せるのならば、includeでもサーブレットを呼び出せるのだろうか? インルードアクションにより、サーブレットのコードを実行して、 アトリビュートを追加することができるかを検証する。 ・以上の検証のため以下の画面遷移を設定する。 index.html :メモ欄入力 ↓ getMemoData :js1.jspを呼び出す ↓ js1.jsp :予約入力 ↓ js3.jsp ↓ 表示途中でサーブレット checkWari をinclude, 割引サービス用文言を取得してアトリビュートに追加 ↓ js3.jsp :割引サービス内容および予約内容を表示 ----------------------------------------------------------- ○java-servlet-jsp-dev-9.txt ・「ctxt6」を元に「ctxt9」を作成する。 ・ctxt9に対して、javascriptとcss(スタイルシート)の外部ファイルを追加する。 ・javascriptでは、2015年10月に存在する日付かどうかの判定を行う。 数値であること、整数であること、および、1以上、31以下であることの判定を行う。 ・js1.jsp, js2.jsp にcssを追加して、書式設定を行う。 ・javascriptで以下の事が可能か確認すること。 requestにパラメータを追加する requestにアトリビュートを追加する requestからパラメータを取得する requestからアトリビュートを取得する post/getで画面遷移する リンクで画面遷移する ・ブラウザによるXMLHttpRequestオブジェクトの動作の違いについて確認する ----------------------------------------------------------- ○java-servlet-jsp-dev-99.txt ・忘れやすい事項まとめ actionの書式 サーブレットの場合 jspの場合 forwardの書式 リダイレクトの書式 の書式 javascript外部ファイルの読み込みの書式 css外部ファイルの読み込みの書式 ・その他 ・他のコンテキストのServletContextオブジェクトを取得する ・でサーブレットを呼び出す処理を関数化することでjsp内にjavaの関数を定義する場合のサンプル ・getMethodにより、メソッドがgetかpostかを判定する。 これにより、getの場合のみ、パラメータおよびアトリビュートの値をLatin1→UTF-8に変換する。 ・HashMapに、パラメータの値、アトリビュートの値を格納する方法について確認する。 (sample) HashMap map = new HashMap(); map.put(name,val); ・getとpostの機能の違いについて確認する ・getで送信できる文字数について確認する。 textareaにセットする文字数を1→2→4→8→16...と増やしていき、どこまで送信できるのか、 送信できない場合は何かメッセージ等がでるのか確認する。 ちなみにブラウザによる制限は、IEはURL全体の長さで2048文字、 他のブラウザでは1Mbyte程度まで可能らしい。 -------- ・(保留) ・postでバイナリデータを送信する。 -------- ・webページの戻る操作(alt + 左key)の扱いについて確認する。 画面1から画面2に遷移して、パラメータAを取得して、戻るで画面1に戻った場合 パラメータAを持ったまま、画面3に遷移するといったことは可能なのか? 可能ならばこれを防ぐ方法はあるのか? 一般的にはどのように扱うのか? ・webアプリケーションにおけるsessionオブジェクトの扱いについて調べる。 パラメータなどをsessionオブジェクトに格納して、さらにこれをrequestにセットして送信する方法が一般的なのか? -----------------------------------------------------------