WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―

Slides:



Advertisements
Similar presentations
年度 J2EE II 稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴. 2 この講義の位置づけ 3年前期の「データベース論 (J2EE I) 」に続く講義。 「データベース論」の講義内容を理解 していることが前提。
Advertisements

Web アプリケーション開発入門 大岩研究会 今野隆平 2002 年 5 月 9 日 Introduction to Web Application Development.
1 JSP の作成 JSF による Web アプリケーション 開発 第 4 回. 2 ここでの内容 JSF での JSP の作り方と動かし方につい て学ぶ。
Servlet 矢口 洋介 清水 麗雄. 準備  Java フォルダに入ってから mkdir Servlet ln – s ~/public_html/Servlet.  フォルダの移動 cd public_html/Servlet/WEB-INF/classes/*.  ファイルのコピー cp.
2004年度 サマースクール in 稚内 JSFによるWebアプリケーション開発
知的システム構築工房   Linux設定セミナーシリーズ 第5回 Webアプリ作成 2011年3月16日(水) 株式会社 アセンディア 1.
2006年11月22日 植田龍男 Webサービス II (第9回) 年11月22日 植田龍男.
SlothLib.Web.
Struts1.xの脆弱性(CVE ) に対するSDEの対処:wrapタイプ (パッチのご提供)
WebサービスII (第10回) 2007年11月28日 植田龍男.
エンタープライズアプリケーション II 第10回 / 2006年7月23日
JSFによるWebアプリケーション開発 第11回
Servlet J2EE I 第8回 /
Servlet入門(2) 入力フォームをつかったWebアプリ
ネットワークプログラミング論 平成27年10月12日 森田 彦.
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
JavaServlet&JSP入門 01K0018 中村太一.
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
タグライブラリ ソフトウェア特論 第6回.
タグライブラリとJSP J2EE I 第10回 /
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
HTTPプロトコルとJSP (1) データベース論 第3回.
Curlの仕組み.
タグライブラリとJSP J2EE II 第2回 2004年10月7日 (木).
JavaBeans とJSP データベース論 第5回.
JSFによるWebアプリケーション開発 第6回
HTTPプロトコル J2EE I 第7回 /
エンタープライズアプリケーション II 第7回 / 2006年7月9日
JSPの作成 J2EE II 第3回 2005年4月10日.
ネットワークプログラミング論 平成28年10月17日 森田 彦.
ServletによるWebアプリ作成 入門
RMI ソフトウェア特論 第6回 /
稚内北星学園大学 情報メディア学部 安藤 友晴
Javaによる Webアプリケーション入門 第5回
プログラミング演習3 第2回 GUIの復習.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
第12回 2007年7月13日 応用Java (Java/XML).
TomcatによるWebアプリケーション開発入門
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
Webアプリケーションの方向性 データベース論 第13回.
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
2006年度 東京サテライト校 エンタープライズ・アプリケーション II
ネットワークプログラミング論 平成28年11月7日 森田 彦.
Javaによる Webアプリケーション入門 第6回
ネットワークプログラミング論 平成28年10月31日 森田 彦.
Javaによる Webアプリケーション入門 第7回
Jakarta Struts (2) ソフトウェア特論 第11回.
Javaによる Webアプリケーション入門 第2回
Java8について 2014/03/07.
Javaによる Webアプリケーション入門 第11回
Servlet ソフトウェア特論 第7回.
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
JSFによるWebアプリケーション開発 第3回
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
C#プログラミング実習 第3回.
Javaによる Webアプリケーション入門 第8回
Javaによる Webアプリケーション入門 第4回
コレクション・フレームワーク データベース論 第7回.
Annotation EJB 3.0 コース 第3回 2006年8月4日.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
JSPの基本 データベース論 第2回.
Action Method の実装 J2EE II 第9回 2004年12月2日.
Jakarta Struts (1) ソフトウェア特論 第10回.
JSPの基本 J2EE I (データベース論) 第8回 /
JAVA入門⑥ クラスとインスタンス.
JSFによるWebアプリケーション開発 第7回
MVCモデル2による Webアプリケーション
Presentation transcript:

WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ― データベース論 第9回

きょうの内容 Servlet の概要について学ぶ。特に、HTTPの要求と応答との関係に着目する。 Servlet の動かし方を学ぶ。

Webアプリケーションの仕組み (1) 3層モデル Webアプリケーション (J2EE) の基本パターン

Webアプリケーションの仕組み (2) Servlet と JSP HttpServlet を継承する Javaプログラム。 HTML を埋め込める (あまり使わないけど) JSP ほとんどHTML Javaプログラムを埋め込める (あまり使わないけど) どちらも「Webコンテナ」で動く。 普通は Servlet と JSP を組み合わせて使う。

Webアプリケーションの仕組み (3) データベースの必要性 図書データ 在庫リスト 掲示板の記事 「データ」は保存される (= 永続性を持つ) データベースを使うと面倒がなくて良い。 データをただのファイルで保存しておくと、遅いし面倒。

Tomcat Jakarta Project が作成している Webコンテナ オープンソース Servlet や JSP を動かすために必要 Apache に組み込んで使える Tomcat 単独でも Webサーバとして使える

Tomcat をインストールするときの 注意点 環境変数はセットしましたか? JAVA_HOME と CATALINA_HOME それぞれ、Java と Tomcat がインストールされているフォルダを指定する ポート番号は変更しましたか? (実習室の場合) インストール時に「NTサービス」にチェックを入れておくとはまりやすいかも。

TomcatにWebアプリケーションを置く %CATALINA_HOME/webapps/ に配置 ひとつのファイル (war ファイル) にまとめても良い。 test/ | |-- WEB-INF/ --- web.xml  必須 | |- classes/  Servlet ・Beanなどの クラス | |- lib/  使用するライブラリ |-- loop.jsp  JSP

Webアプリケーションへのアクセス どこのホストで動いている? どのポートで動いている? どのWebアプリケーションを動かす? この例では http://localhost:8080/test/loop.jsp

JSP のサンプルから (1) 特殊なタグとJavaのプログラム <% for (int I = 1; I <=5; I++) { %> <p>サンプル <%= I %></p> }

JSP のサンプルから (2) for 文の対応関係 <% for (int I = 1; I <=5; I++) { %> <p>サンプル <%= I %></p> } 出力例) サンプル 1 サンプル 2 サンプル 3 サンプル 4 サンプル 5

HTTP

JSPと要求・応答 要求の処理には、request という変数を使う。 応答の処理には、response という変数を使う。 request.getMethod() request.getRequstURI() request.getProtocol() request.getRemoteAddr() 応答の処理には、response という変数を使う。

JSPを使ったクエリーの処理 <%= request.getParameter("familyName") %> GET でも POST でも利用できる。

JavaBeansのルール プロパティ Bean の持つ「属性」のこと 本をあらわす Bean であれば、次のものがプロパティ タイトル 著者 出版社 など

「本」を表す Bean public class Book implements Serializable { private String title; public Book() { …..} public String getTitle() { return title;} public void setTitle(String t) { title = t; } ….. }

メソッドのネーミングルールとプロパティ title というプロパティがある setTitle() や getTitle() というメソッドがある。 title というフィールドがあることを意味しない。 setTitle() や getTitle() というメソッドがある title というプロパティがある。 メソッドがあるから、プロパティが存在する

setter と getter setter getter どちらかが存在するだけでプロパティになりうる setTitle() というスタイルのメソッド プロパティに値をセットする getter getTitle() というスタイルのメソッド プロパティの値を得る どちらかが存在するだけでプロパティになりうる

setter と getter とプロパティ setter  setTitle() Getter  getTitle() プロパティ名では、先頭が小文字

JSP から JavaBeans を呼び出す JSPで3つのタグを使う タグだけで書けるので、スクリプトレットの量を減らせる。 <jsp:useBean ….. /> <jsp:getProperty ….. /> <jsp:setProperty ….. /> タグだけで書けるので、スクリプトレットの量を減らせる。

Servlet とは HttpServlet というクラスを継承したクラス。必要なメソッドをオーバーライドする。 CGIと同じように、プログラムの中から HTML を出力できる。 JSPも、Tomcatの内部では Servlet に変換される。

Servlet のメソッド HTTPのGETメソッドに対して  doGet public void doGet(HttpServletRequest req, HttpServletResponse res) HTTPのPOSTメソッドに対して  doPost public void doPost(HttpServletRequest req,

HttpServletRequest と HttpServletResponse HTTPの「要求」に対応する HttpServletResponse HTTPの「応答」に対応する

Servlet のコンパイル 次のパッケージはJ2SEには入っていない。 javax.servlet パッケージ javax.servlet.http パッケージ Tomcat にはこのパッケージが含まれているので、classpath に含めてコンパイル Java –classpath “%CATALINA_HOME%”\common\lib\servlet.jar” LoopServlet.java

Tomcat への配置 Servlet はコンパイルしておくこと。 WEB-INF/classes フォルダに置く。 WEB-INF/ --- web.xml |- classes/ --- LoopServlet.class | |- DateServlet.class |- lib/

web.xml の編集 Servlet を置いただけでは動かない。 web.xml を編集する必要あり。

web.xml の例 (抜粋) <servlet> <servlet-name>loop</servlet-name> <servlet-class>LoopServlet</servlet-class> </servlet> (中略) <servlet-mapping> <url-pattern>/loop</url-pattern> </servlet-mapping>

Servlet へのアクセス web.xml の url-pattern 要素で指定した URL にアクセスする。 http://localhost:8080/test/loop http://localhost:8080/test/date

Servlet と JSP の使い分け Servlet JSP Servlet から HTML を出力させると、プログラムの見通しが悪くなる。 Servlet ではプログラムに専念するのがよい。 JSP JSP でスクリプトレットを使うと、読みにくい。 JSP では、できる限りタグを出力するのがよい。

タグライブラリ JSPの中で定義できる独自のタグ。 スクリプトレットを減らすことができる。

タグライブラリの例 <ul> <c:forEach var="book" items="${bookList.iterator}" > <li> <c:out value="${book.title}" /> / <c:out value="${book.author}" /> </li> </c:forEach> </ul>

MVCモデル2 Servlet がHTTPの要求を処理する。 処理した結果を JavaBeans にまとめる。 データベースへのアクセスなど 処理した結果を JavaBeans にまとめる。 Servlet は JavaBeans (または、Beans をまとめたコレクション) を JSP に渡す。 JSP はタグライブラリを駆使して処理結果を出力する。 Bean のプロパティを出力する