Microsoft PowerPoint - servlet1.pptx



Similar documents
データ構造とアルゴリズム論

Microsoft Word - サンプル _データベースアクセス_.doc

PowerPoint Presentation

メディプロ1 Javaサーブレット補足資料.ppt

Part1 159 a a

Microsoft PowerPoint - Lecture_3

HTTPの 規 格

PowerPoint プレゼンテーション

Microsoft PowerPoint - Lecture_2

Web 1 p.2 1 Servlet Servlet Web Web Web Apache Web Servlet JSP Web Apache Tomcat Jetty Apache Tomcat, Jetty Java JDK, Eclipse

Web Servlet/JSP JSP

HTML Java Tips dp8t-asm/java/tips/ Apache Tomcat Java if else f

B2-Servlet-0112.PDF

FileMaker 15 ODBC と JDBC ガイド

II 1 p.1 1 Servlet 1.1 Web Web WWW HTML CGI Common Gateway Interface Web HTML Web Web CGI CGI CGI Perl, PHP C JavaScript Web CGI HTML 1.2 Servlet Java

FileMaker ODBC and JDBC Guide

FileMaker 16 ODBC と JDBC ガイド

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ

HTML Java Tips dp8t-asm/java/tips/ Apache Tomcat Java if else f

Servlet JSP JSP Servlet/JSP における 日 本 語 の 処 理 - 1

biz-Stream v4 各種機能別動作環境一覧表

Microsoft PowerPoint - 4-MySQL50_JDBC_failover.ppt

Web のクライアントサーバモデル

iStorage ソフトウェア VMware vSphere Web Client Plug-in インストールガイド

// JDBC // CallableStatement cs = null; try { cs = conn.preparecall("{call DUMMY_PROC(?,?)}"); cs.setstring(1, "This is a test"); cs.registeroutparame

intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第2版  

1 ex01.sql ex01.sql ; user_id from (select user_id ;) user_id * select select (3+4)*7, SIN(PI()/2) ; (1) select < > from < > ; :, * user_id user_name

Untitled

Javaアプリケーション開発ガイド入門編

Web JDBC JDBC Java JDBC DataBase Web CHtmlView...

FileMaker ODBC and JDBC Guide

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

PowerPoint プレゼンテーション

Microsoft PowerPoint - 03ポート番号とプロトコル.pptx

Web JavaScript Java Applet Flash ActionScript CGI (C, perl, ruby ) PHP Servlet, JSP (JavaServer Pages) ASP 7-2

: : : TSTank 2

サーブレット (Servlet) とは Web サーバ側で動作する Java プログラム 通常はapache 等のバックグラウンドで動作する Servletコンテナ上にアプリケーションを配置 代表的な Servlet コンテナ Apache Tomcat WebLogic WebSphere Gla

rcp-add-01:アーキテクチャ設計書

2 Java 35 Java Java HTML/CSS/JavaScript Java Java JSP MySQL Java 9:00 17:30 12:00 13: 項目 日数 時間 習得目標スキル Java 2 15 Web Java Java J

ファイルサーバー(NFS) 構築ガイド

MySQL5.0データベース ログファイルおよびステータスの収集

HTTP Web Web RFC2616 HTTP/1.1 Web Apache Tomcat (Servlet ) XML Xindice Tomcat 6-2

PGECons技術ドキュメントテンプレート Ver.3

PowerPoint プレゼンテーション

Apache Tomcatにおけるクロスサイトリクエストフォージェリ(CSRF)保護メカニズム回避の脆弱性

Eclipse 操作方法 (Servlet/JSP 入門補助テキスト)

スライド 0

ii II Web Web HTML CSS PHP MySQL Web Web CSS JavaScript Web SQL Web

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

オブジェクト脳のつくり方

Microsoft Word - D JP.docx

目次 第 1 章はじめに... 3 第 2 章ネットワーク設定 DNS の設定 アウトバウンド HTTPS 接続の許可 アウトバウンド SMTP/POP 接続の許可... 4 第 3 章 JDK への追加ライブラリインストール

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで

ビジネスサーバ設定マニュアル_.htaccess編(VPS・PRO)

Oracle SOA Suite 11gコンポジットに対するSOASchedulerの構成

Microsoft Word - IS バージョンアップ ユーザーズガイド_Windows編_.doc

XOOPS Cube インストールマニュアル

Microsoft Word - mediawiki.doc

WEBシステムのセキュリティ技術

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス /

CSV_Backup_Guide

Transcription:

Webとデータモデリング Javaによるサーバサイドプログラミング 北 川 博 之, 森 嶋 厚 行, 天 笠 俊 之 1 内 容 Javaによるサーバサイドプログラミング サーブレット JSP (Java Server Pages) Javaからのデータベースアクセス JDBC (Java Database Connectivity) 2 1

使 用 するソフトウェア サーブレット,JSP Apache Tomcat http://tomcat.apache.org/ apache org/ JDBC MySQL Connector/J MySQLに 付 属 3 Java Servletの 利 用 4 2

Java Servlet ウェブアプリケーションを 実 現 するためのサーバサイド 技 術 動 的 コンテンツ 生 成 1. アプリケーションロジック 実 行 2. 結 果 のHTML 化 動 的 コンテ ンツ 生 成 HTTPリクエスト 要 求 による 振 り 分 け Servletコンテナ クライアント HTTPレスポンス Webサーバ HTML 画 像 静 的 コンテンツ 5 HTTP 通 信 の 概 要 メッセージヘッダ ボディ 送 信 データ リクエストメッセージ HTTPクライアント メッセージヘッダ HTML 画 像 HTTPサーバ バ ボディ HTML 画 像 動 画... レスポンスメッセージ 6 シャープAjax 研 修 2008/12/16-17 3

URL (Uniform Resource Locator) http://www.coins.tsukuba.ac.jp:80/syllabus/timetable_com.html スキーム ホスト 名 (IPアドレス) ポート 番 号 パス 名 Webサーバ www.coins.tsukuba.ac.jp 130.158.86.207 代 表 的 なスキーム: ftp: news: wais: gopher: nntp: file: mailto: 7 telnet: prospert: / (document root) +-syllabus/ +-timetable_com.html HTTPメッセージの 例 % telnet www.coins.tsukuba.ac.jp 80 GET /index.html HTTP/1.0 HTTP/1.1 200 OK Date: Wed, 17 May 2006 15:02:58 GMT Server: Apache/2.0.55 (Unix) PHP/4.4.2 Last Modified: Mon, 17 Apr 2006 09:38:56 GMT ETag: 12295c 4ba9 30f8ec00 Accept Ranges: bytescontent Length: 19369Connection: closecontent Type: text/html <!DOCTYPE HTML PUBLIC " //W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http equiv= Content Type content="text/html; charset=shift_jis"> <title> 筑 波 大 学 第 三 学 群 情 報 学 類 </title>... 8 マルチメディアの 舞 台 裏 I 2008/5/26 4

HTTPメッセージの 構 造 リクエストメッセージ レスポンスメッセージ リクエストライン ステータスライン リクエストヘッダ フィールド メッセージヘッダ 一 般 ヘッダフィールド エンティティヘッダ フィールド その 他 空 行 (CR + LF) メッセージボディ レスポンスヘッダ フィールド メッセージヘッダ 一 般 ヘッダフィールド エンティティヘッダ フィールド その 他 空 行 (CR + LF) メッセージボディ 9 リクエストメッセージ リクエストメッセージのヘッダには, 先 頭 行 に 必 ず リクエ ストライン が 含 まれる メソッド リクエストURI HTTPバージョン 10 マルチメディアの 舞 台 裏 I 2008/5/26 5

メソッド メソッド HTTPバージョン 機 能 HEAD 指 定 したURL 取 得 の 結 果 レスポンスのヘッダー のみ 取 得 する GET 指 定 したURLが 示 すリソースを 取 得 する POST 指 定 したURLが 示 すサーバーのコマンドに 対 して データを 転 送 する PUT 指 定 したURLが 示 すリソースに 対 して データを 転 送 して 置 き 換 える DELETE 指 定 したURLが 示 すリソースを 削 除 する TRACE サーバーやプロキシの 動 作 を 診 断 するための 情 報 を 返 答 する OPTIONS 使 用 できるメソッドやオプションの 一 覧 を 取 得 す る CONNECT プロキシでのトンネリング 接 続 を 行 う 11 レスポンスメッセージ サーバが 返 答 するメッセージ. 先 頭 行 には 必 ず ステー タスライン が 含 まれる HTTPバージョン ステータスコード 結 果 フレーズ 主 なステータスコード 200 OK 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 12 マルチメディアの 舞 台 裏 I 2008/5/26 6

Servletプログラミング 13 Tomcatのディレクトリ 構 成 ディレクトリ bin/ common/ conf/ logs/ server/ 役 割 Tomcatのバイナリファイル, 起 動, 終 了 スクリプト 等 実 行 に 必 要 なJavaのclassファイル サーブレットのコンパイルに 必 要 なライブラリ 群 Tomcat 全 体 の 設 定 ファイル web.xml, server.xml ログ サーブレットコンテナの 実 行 に 必 要 なプログラム shared/ Webアプリケーションから 利 用 するライブラリ webapps/ work/ Webアプリケーションのインストールディレクトリ 一 時 ファイルの 保 存 (JSPが 実 行 時, 初 回 にコンパイルされ サーブレットとなったファイルが 配 置 される) 14 7

Webアプリケーションのディレクトリ 構 成 アプリケーションのルートディレクトリ 任 意 のファイル 任 意 のディレクトリ WEB-INF/ web.xml classes/ サーブレットのクラスファイル lib/ サーブレットで 利 用 するクラスライブラリ 15 サーブレットコンテキスト http://www.site-cooler.com/java/tomcat/#5 16 8

Servletプログラミング HttpServletクラスを 拡 張 HTTP 特 有 のリクエスト 処 理 メソッドをオーバーライド init(), it() destroy() doget(), dopost(), 引 数 HttpServletRequest request HttpServletResponse response web.xmlの 記 述 と 配 置 17 JDBCによるデータベースアクセス 18 9

JDBCとは Javaとデータベースとの 接 続 のためのAPI SQLを 使 ってデータベースにアクセス JDBCドライバド 各 データベースシステム 毎 に 提 供 ドライバのロード Class.forName("ドライバクラス 名 ") メソッドを 利 用 19 DriverManager インターフェイスを 使 用 して MySQL に 接 続 import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; // Notice, do not import com.mysql.jdbc.* // or you will have problems! public class LoadDriver { public static void main(string[] args) { try { // The newinstance() call is a work around for some // broken Java implementations Class.forName("com.mysql.jdbc.Driver").newInstance(); catch (Exception ex) { // handle the error 20 http://dev.mysql.com/doc/refman/5.1/ja/connector-j-usagenotes-basic.html# connector-j-usagenotes-connect-drivermanager 10

ステートメントを 使 用 してSQLを 実 行 (1/2) // assume that conn is an already created JDBC connection Statement stmt = null; ResultSet rs = null; try { stmt = conn.createstatement(); rs = stmt.executequery("select foo FROM bar"); // or alternatively, if you don't know ahead of time that // the query will be a SELECT... if (stmt.execute("select foo FROM bar")) { rs = stmt.getresultset(); // Now do something with the ResultSet... finally { 21 http://dev.mysql.com/doc/refman/5.1/ja/connector-j-usagenotes-basic.html# connector-j-usagenotes-connect-drivermanager ステートメントを 使 用 してSQLを 実 行 (2/2) finally { // it is a good idea to release // resources in a finally{ block // in reverse order of their creation // if they are no longer needed if (rs!= null) { try { rs.close(); catch (SQLException sqlex) { // ignore rs = null; if (stmt!= null) { try { stmt.close(); catch (SQLException sqlex) { // ignore stmt = null; 22 http://dev.mysql.com/doc/refman/5.1/ja/connector-j-usagenotes-basic.html# connector-j-usagenotes-connect-drivermanager 11

StatementとPreparedStatement Statementの 例 Statement stmt = conn.createstatement(); for ( int id = 0 ; id < 10000 ; id++ ) { String sql = "SELECT NAME FROM ITEM WHERE I_ID = " + id; ResultSet rs = stmt.executequery(sql); while ( rs.next() ) { // 表 示 などの 処 理 PreparedStatementの 例 String sql = "SELECT NAME FROM ITEM WHERE I_ID =?"; PreparedStatement ps = conn.preparestatement(sql); for ( int id = 0 ; id < 10000 ; id++ ) { ps.setint(1,id); ResultSet rs = ps.executequery(); while ( rs.next() ) { // 表 示 などの 処 理 23 StatementとPreparedStatementの 違 い Statement 毎 回 構 文 解 析 を 実 行 PreparedStatement t t 動 的 に 変 化 する 部 分 をプレースホルダ(?)で 置 き 換 える 構 文 解 析 は 一 度 だけ 24 12

StatementとPreparedStatementの 違 い 25 http://www.atmarkit.co.jp/fjava/rensai2/webopt11/webopt11.html 13