• 検索結果がありません。

Microsoft PowerPoint - web_and_dm08_servlet2.pptx

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - web_and_dm08_servlet2.pptx"

Copied!
12
0
0

読み込み中.... (全文を見る)

全文

(1)

Webとデータモデリング

Javaによるサ

バサイドプログラミング

Javaによるサーバサイドプログラミング

北川博之,森嶋厚行,天笠俊之

1

(2)

サーブレットのコード例

public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out println("<body>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } } 3

サーブレットとJSP

`

サーブレット

`

全てのコードをJavaで記述

`

HTMLは文字列として埋め込む

`

HTMLは文字列として埋め込む

`

テキスト(Javaソース)からクラスファイルを生成

`

コンパイルが必要

`

JSP

`

HTMLページの中にJavaコードを埋め込み

`

プログラム処理が必要な部分に集中してコードを記述

`

HTML出力がメインの場合に有利

`

HTMLソースからJavaソースを生成

`

コンパイルはシステムが自動的に実行

(3)

JSPのコード例

<%@ page contentType="text/html;charset=Shift_JIS" %>

<html>

<html>

<head>

<title>Hello World!</title>

</head>

<body>

<h1>Hello World!</h1>

<%

i

l (

j

il

())

out.println(new java.util.Date());

%>

5

実行までの流れ

`

コンテキストファイルの作成

`

apache‐tomcat/conf/context.xml

JSPペ

ジの作成

`

JSPページの作成

`

HTMLと同様

`

拡張子は .jsp

`

アプリケーションの実行

`

ブラウザでアクセス

`

ポイント

`

コンパイル不要

`

web.xmlの設定も不要

(4)

JSPからサーブレットへの変換

`

処理手順

`

クライアントからの要求

`

JSPからサ

ブレットへの変換

`

JSPからサーブレットへの変換

`

サーブレットのコンパイル

`

サーブレット実行

`

ポイント

`

コンパイルは初回のみ

7

初回

`

初回実行時はやや時間がかかる

`

コンパイルされたファイルの場所

`

$HOME/apache‐tomcat/work/Catalina/localhost/

ディレクティブ

`

構文

`

<%@ name attr1=“val1” attr2=“val2" ... %>

種類

`

種類

`

page

`

include

`

taglib

(5)

pageディレクティブ

<%@ page

[ language="java" ]

[ extends="package.class" ]

[ i

t "{

k

l

k

*}  

" ]

[ import="{package.class | package.*}, ..." ]

[ session="true|false" ]

[ buffer="none|8kb|sizekb" ]

[ autoFlush="true|false" ]

[ isThreadSafe="true|false" ]

[ info="text" ]

[ errorPage="relativeURL" ]

[ contentType="mimeType [ ; charset=characterSet ]" |

[

yp

yp

[ ;

]

|

"text/html ; charset=ISO‐8859‐1" ]

[ isErrorPage="true|false" ]

[ pageEncoding="characterSet | ISO‐8859‐1" ]

[ isELIgnored="true|false"]

%>

9

includeディレクティブ

`

構文

`

<%@ include file="relativeURL" %>

意味

`

意味

`

指定された場所にHTMLやJSPを読み込む.

`

ポイント

`

相対パスのルートは,コンテキストのルート

(6)

taglibディレクティブ

`

構文

`

<%@ taglib {uri="URI" | tagdir="/WEB‐

INF/tags[/subdir]+"} prefix="tagPrefix" %>

INF/tags[/subdir]+ } prefix= tagPrefix  %>

`

意味

`

頻繁に使われる処理をまとめてタグとして登録

`

タグを集めたものがタグライブラリ

`

標準タグライブラリ

`

カスタムタグライブラリ

11

スクリプティング

`

スクリプトレット

<%

Javaのコード

`

式の評価結果を出力

<%= 変数名など %>

`

out.print()に変換される

`

記述例

<%= "こんにちは" %> 

%>

<%=  こんにちは  %> 

<%= "sum = " + sum %>

<%= Integer.parseInt(8) %>

(7)

スクリプティング

`

変数の宣言

`

スクリプトレットで宣言される変数はローカル変数

`

呼び出しごとに初期化される

`

呼び出しごとに初期化される

`

Tomcatが実行されている間有効な変数を宣言したい

`

<%!

%> の利用

`

<%!

%> を利用して メソッドも宣言できる

<%!

int count = 0;

%>

13 `

<%!

%> を利用して,メソッドも宣言できる

(8)

暗黙オブジェクト

15

暗黙オブジェクト

宣言しなくても使えるオブジェクト

オブジェクト 実装クラス 概要 application javax.servlet.ServletContext コンテナ情報・ユーザー間での共有情報を管理

config javax.servlet.ServletConfig web.xmlで定義した初期化パラ

メーターにアクセス out javax.servlet.jsp.JspWriter クライアントにデータを返却 exception java.lang.Throwable ページ内の例外情報を管理 page javax.servlet.jsp.HttpJspPage JSPページそのものを表現 pageContext javax.servlet.jsp.PageContext JSPページで利用可能な各種の暗 黙オブジェクトやスコープ属性にア クセスする手段を提供 クセスする手段を提供

request javax.servlet.http.Http.ServletRequest リクエストメッセージを取得

response javax.servlet.http.Http.ServletResponse ステータスコードやメッセージヘッダのデータを設定 session javax.servlet.http.HttpSession 各ユーザーのセッションを管理

(9)

outオブジェクト

`

クライアントに対してコンテンツを出力

`

バッファ処理の制御

バ フ サイズの指定

`

バッファサイズの指定

`

@pageディレクティブ buffer属性

`

バッファサイズを超えたときの振る舞い

`

@pageディレクティブ autoFlush属性

17

outオブジェクト

主要メソッド

メソッド 概要 clear() バッファのデータをクリア(出力済み、バッファ処理が無効の場合はエラー) clearBuffer() バッファのデータをクリア(バッファの内容が出力済みでも使用可) close()  出力を終了 flush()  バッファの内容を強制的に出力 getBufferSize()  現在確保されているバッファのサイズ(バイト単位) getRemaining()  未使用バッファのサイズ(バイト単位) trueの場合 出力サイズがバッファを超えたタイミングで自 isAutoFlush() trueの場合、出力サイズがバッファを超えたタイミングで自 動出力(falseの場合はエラー) newLine()  改行文字を出力(Windows系OSでは「¥n」、UNIX系OS では「¥n¥r」) print(str)  文字列strを出力

(10)

requestオブジェクト

`

クライアントからのリクエスト情報を受け取る

`

リクエスト情報

ムデ タ

`

フォームデータ

`

ヘッダ情報

`

クッキー

19

requestオブジェクト

主要メソッド

メソッド 概要 getAttribute() リクエスト属性を取得 getAuthType() 認証の種類を取得 getContentLength()  データ本体のバイト長を取得 getContextPath()  コンテキストパスを取得 getLocale() ロケールを取得 getMethod() HTTPメソッドの種類を取得 getPathInfo()  拡張パス情報を取得 getRemoteAddr() クライアントのIPアドレスを取得 getRemoteUser() ログインユーザー名を取得 getServletPath()  サーブレットパスを取得 isRequestedSessionIdFromCookie()  セッションIDをクッキー経由で授受しているか isUserInRole(role)  カレントユーザーが権限roleを持っているか removeAttribute リクエスト属性を削除

(11)

Cookieクラス

`

クッキーデータの表現,制御

`

生成方法

C

ki 変数

C

ki (ク キ

名 ク キ 値)

`

Cookie 変数 = new Cookie(クッキー名, クッキー値);

21

Cookieクラス

主要メソッド

メソッド 概要 getComment()/setComment(str) コメントの取得/設定 getDomain()/setDomain(str) 対象ドメインの取得/設定 getDomain()/setDomain(str) 対象ドメインの取得/設定 getMaxAge()/setMaxAge(int)  有効期限の取得/設定(秒) getName()  クッキー名の取得 getPath()/setPath(str)  対象パスの取得/設定 getSecure()/setSecure(bln)  SSL通信要否の取得/設定 getValue()/setValue(str) クッキー値の取得/設定 getVersion()/setVersion(int)  バージョン値の取得/設定 getVersion()/setVersion(int)  バ ジョン値の取得/設定

(12)

sessionオブジェクト

`

画面間の共有データを管理

`

セッション

ある

ザがあるサイトにアクセスしてから立ち去るまで

`

あるユーザがあるサイトにアクセスしてから立ち去るまで

`

ページ間で共有すべき情報を管理

`

Perl+CGI時代は,データベースかクッキーを利用

`

注意

`

@pageディレクティブのsession属性がfalseのときは利用で

きない

23 `

セッションは永続的に保持されるわけではない

sessionオブジェクト

主要メソッド

メソッド 概要 getAttributeNames()  すべてのセッション属性名を取得 getCreationTime() セッションの生成時刻を取得 getCreationTime() セッションの生成時刻を取得 getId()  セッションを一意に識別するIDを取得 getLastAccessedTime()  セッションへの最終アクセス時刻を取得 getMaxInactiveInterval() セッションのタイムアウト時間を取得 invalidate() セッションを破棄 isNew()  新しく生成されたセッションかどうか removeAttribute(name)  指定されたセッション属性(name)を削除 removeAttribute(name)  指定されたセッション属性(name)を削除 setMaxInactiveInterval(interval)  セッションタイムアウトをinterval秒に設定

参照

関連したドキュメント

10例中2例(症例7,8)に内胸動脈のstringsignを 認めた.症例7は47歳男性,LMTの75%狭窄に対し

BRAdmin Professional 4 を Microsoft Azure に接続するには、Microsoft Azure のサブスクリプションと Microsoft Azure Storage アカウントが必要です。.. BRAdmin Professional

First three eigenfaces : 3 個で 90 %ぐらいの 累積寄与率になる.

1外観検査は、全 〔外観検査〕 1「品質管理報告 1推進管10本を1 数について行う。 1日本下水道協会「認定標章」の表示が

READ UNCOMMITTED 発生する 発生する 発生する 発生する 指定してもREAD COMMITEDで動作 READ COMMITTED 発生しない 発生する 発生する 発生する デフォルト.

国の5カ年計画である「第11次交通安全基本計画」の目標値は、令和7年までに死者数を2千人以下、重傷者数を2万2千人

「系統情報の公開」に関する留意事項

ダウンロードしたファイルを 解凍して自動作成ツール (StartPro2018.exe) を起動します。.