Top Banner
2012Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1) 9. JSPによるWebプログラミング(2) 10. JSPによるWebプログラミング(3) 11. JSPによるWebプログラミング(4)
37

Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

Aug 13, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

Webプログラミング2

8. JSPによるWebプログラミング(1)

9. JSPによるWebプログラミング(2)

10. JSPによるWebプログラミング(3)

11. JSPによるWebプログラミング(4)

Page 2: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

Web ブラウザ

エディタ等 ①作成

③確認

PC(クライアント/Webサーバ)

Tomcat

・コンテンツ: samp.html samp.jsp

mydir

http://localhost:8080/mydir/

index.html

samp.html

samp.jsp

②配置

(復習)動作概要(JSP)

Page 3: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

(復習)JSPの書式

●JSP 書式 : ディレクティブ <%@ %> JSPから生成されるServletを制御 宣言部 <%! %> 定数、メンバ変数、ユーザ定義メソッドを定義 スクリプトレット<% %> スクリプトの記述 式 <%= %> out.println( ); の短縮系 コメント <%-- --%> コメントアウト

<%@ page contentType="text/html;charset=Shift_JIS" %> <HTML><TITLE>samp</TITLE><BODY> <%-- これは練習です。 --%> <%! int flag=100; %> <% out.print("Hello World!"); out.print("<BR>"); out.print(new java.util.Date()); out.print( flag+100 ); %> <BR> <%= "Hello World" %> </BODY></HTML>

Page 4: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

(復習)JSPプログラミング方法

●とりあえずやってみる(HTML+JSP)

・動作確認:mydir 配下に以下を配置

samp.html <HTML> <TITLE>sample</TITLE> <BODY> Hello World <BR> </BODY> </HTML>

http://localhost:8080/mydir/samp.html または http://127.0.0.1:8080/mydir/samp.html

・ブラウザから以下のURLで確認

samp.jsp <%@ page contentType="text/html;charset=Shift_JIS" %> <HTML> <TITLE>sample</TITLE> <BODY> <%= "Hello World" %> <BR> </BODY> </HTML>

http://localhost:8080/mydir/samp.jsp または http://127.0.0.1:8080/mydir/samp.jsp

Page 5: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

演習

(自分の好きなもの得意なものの) 紹介サイト/解説サイトの開発

レストランや居酒屋の紹介サイト、地域やクラブの紹介サイト 車やスポーツ選手の解説サイトなど扱うテーマは自由 例えば: 料理や目的別に分類されたカテゴリの中から目的のお店(レシピ)を選ぶと、そのお店(レシピ)の詳細が表示される。 そこを訪問(作ってみた)人の感想も書き込めるようになっている。 必要に応じて検索できるようになっている。

Page 6: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

(1)ソースコードを共有フォルダから入手 (2)改造方針を決めて改造(ブラウザで動作確認) ・システムのテーマを決める ⇒ コンテンツの中身を決める コンテンツを作る ・つくりを細かくする ⇒ 見た目をきれいにする ・規模を大きくする ⇒ データを増やす ・追加機能を作る ⇒ 検索できるようにする データを入力できるようにする など (3)できたものをクラスで発表、レポートとして提出

演習の進め方

Page 7: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

トップ画面 メイン画面

Enter

レシピナビ

ロゴ

ボタン クリックでメイン画面に遷移

(2)トップ画面

index.html

enter.jpg

logo.jpg

画面例

(1) 画面遷移

Page 8: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

料理1 料理2 料理3 料理4 ・ ・ ・

写真

料理名のタイトル

説明文

コンテンツのメニュー 料理名をクリックで右 画面に料理のレシピ が表示される 初期画面はなにも表示されない

料理1 料理2 料理3 料理4 ・ ・ ・

(3)メイン画面 main.html

menu.jsp

fristpage.html

show.jsp

画面例

Page 9: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

1.ファイル構造 本システムは次のようなファイルの配置構造をとる。

mydir WEB-INF

Index.html

main.html

img

data

fristpage.html

menu.jsp

show.jsp

enter.jpg logo.jpg

XXXX1.txt

XXXX1.jpg

XXX10.txt

XXX10.jpg

・・・

・・・

構造例

学籍番号 フォルダ (number)

Page 10: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

2.ファイルリスト 本システムで作成するファイルは次のとおりである。 (1)画像ファイル logo.jpg ・・・ 本システムのロゴ画像 enter.jpg ・・・ 本システムに入るためのアイコン content01.jpg ・・・ 同じファイル名のコンテンツに対応した画像ファイル ・・・ (コンテンツの数だけファイルを用意する) content10.jpg (2)HTMLファイル index.html ・・・ 本システムのトップページ main.html ・・・ 本システムのメインページ(フレームの設定ファイル) firstpage.html ・・・ 本システムのメインページにおける初期画面 (3)JSPファイル menu.jsp ・・・ コンテンツリストを生成するjspファイル show.jsp ・・・ 指定したコンテンツを表示するjspファイル

構造例

Page 11: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

(4)データファイル content01.txt ・・・ コンテンツファイル コンテンツファイルは下図のような1行目を ヘッダとするデータ形式とする。 ヘッダ部分は、Title: のあとにコンテンツの 題名を記述する。 ・・・ content10.txt

Title:

説明文

コンテンツファイルのデータ形式

構造例

Page 12: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

① mydir の中に 自分の学籍番号フォルダを作る

② 学籍番号フォルダ(=number)の中に

imgフォルダ

dataフォルダ

index.html

main.html

firstpage.html

dummy.html

を作る

③ htmlファイルを記述

index.htmlから main.html へのリンクもはる

画像ファイルを読み込んでも良い

④ ブラウザから確認する http://localhost:8080/mydir/学籍番号/

全体像を把握する

作業1

Page 13: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

ソースコード例

(1)画像ファイル ・・・ 略 (2)HTMLファイル -------------------index.html------------------------ <HTML> <HEAD> <TITLE>実習課題</TITLE> <!-- Webプログラミング2 2012/10/10 初期画面--> </HEAD> <BODY> <CENTER> <IMG SRC=“/mydir/number/img/logo.jpg”> <BR> <A HREF=“/mydir/number/main.html”> <IMG SRC=“/mydir/number/img/enter.jpg” BORDER=“0”> </A> </CENTER> </BODY> </HTML> -------------------------------------------------

Page 14: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

-------------------main.html------------------------ <HTML> <HEAD> <TITLE>実習課題</TITLE> <!-- Webプログラミング2 2012/10/10 メイン画面 フレーム設定--> <FRAMESET COLS="250,*" BORDER="0"> <FRAME NAME="left" SRC="/mydir/number/menu.jsp"> <FRAME NAME="right" SRC=“/mydir/number/firstpage.html"> </FRAMESET> </HEAD> </HTML> ----------------------------------------------------

ソースコード例

まずはdummy.html で代用する

Page 15: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

-------------------firstpage.html---------------------- <HTML> <HEAD> <TITLE>実習課題</TITLE> <!-- Webプログラミング2 2012/10/10 メイン画面 初期画面--> </HEAD> <BODY> <CENTER> <IMG SRC="/mydir/number/img/logo.jpg"> </CENTER> </BODY> </HTML> ----------------------------------------------------

ソースコード例

Page 16: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

-------------------dummy.html---------------------- <HTML> <HEAD> <TITLE>実習課題</TITLE> <!-- Webプログラミング2 2012/10/10 dummy画面 --> </HEAD> <BODY> ・リスト1<BR> ・リスト2<BR> ・リスト3<BR> ・リスト4<BR> ・リスト5<BR> ・リスト6<BR> ・リスト7<BR> ・リスト8<BR> ・リスト9<BR> ・リスト10<BR> </BODY> </HTML> ----------------------------------------------------

ソースコード例

Page 17: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

①コンテンツを作成する

10個程度、所定のデータ構造で記述し、所定のフォルダに配置

mydir/number/data の下に配置

②検索プログラム menu.jsp を作成する

③menu.jsp単体でブラウザから動作確認する

③ main.htmlの

dummy.htmlをmenu.jspに置き換える

④ブラウザで初期画面からの動作確認する

作業2

Title: ○○××

説明文

XXX.txt

Page 18: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

(4)データファイル -------------------content01.txt------------------- Title: カレーライス カレーライスの作り方は・・・ 材料は・・・ ---------------------------------------------------- ・・・ コンテンツの数だけ同様のファイル形式で記述 ・・・ -------------------content10.txt------------------- Title: 味噌汁 味噌汁の作り方は・・・ 材料は・・・ ----------------------------------------------------

ソースコード例

Page 19: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

方針

料理1 料理2 料理3 料理4 ・ ・ ・

menu.jsp mydir

index.html

main.html

img

data

fristpage.html

XXXX1.txt XXX10.txt ・・・

その1.データフォルダ内のファイルの一覧を出力する

Title: ○○××

説明文

ポイント①:特定のフォルダのファイルの

一覧を取り出す

ポイント②:ファイルの1行目の一部分を取り出す ポイント③:1行目の不要な部分を消す

学籍番号 フォルダ (number)

Page 20: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

1.ファイルの入出力の扱い方

・ファイル操作の基本

実行プログラムからみたパスとWebから見たパスの違い

絶対パスと相対パスの違い

主要操作 Windows UNIX Java

ファイル一覧 dir ls list()

ファイル生成 createNewFile()

ファイルコピー copy cp

ファイル名変更 ren rename renameTo()

ファイル削除 del rm delete()

ディレクトリ作成 mkdir mkdir mkdir()

ディレクトリ削除 rd rm delete()

ディレクトリ ¥ / /

・ファイルパス

・ファイル(読み出し、書き込み) open ⇒ close

●Javaでは、以下のクラスで実施する: ・Fileクラス

・FileReaderクラス

(BufferedReaderクラスも併用する) ・FileWriterクラス

(BufferedWriterクラスも併用する)

解説

Page 21: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

2.ファイルの一覧を取り出すプログラム例

data

file1.txt file2.txt file3.txt

<%@ page contentType=“text/html;charset=Shift_JIS” import="java.io.*,java.util.*" %> <HTML><HEAD><TITLE>実習課題</TITLE> <%! //変数の型宣言 String[] filelists; //コンテンツファイルを入れる配列 String filename; //コンテンツファイルを示す変数 FileReader readfile; //ファイル名を示す変数 BufferedReader line; //ファイルをハンドルするための変数 //コンテンツファイルを格納するディレクトリの変数 File datadir =new File(“c:/・・・/mydir/number/data"); %> </HEAD><BODY> <% //コンテンツディレクトリからファイルの一覧を読み出す filelists = datadir.list(); for (int i=0;i<filelists.length ; i++ ) { //ファイルの読み出し filename=datadir + "/" + filelists[i]; readfile = new FileReader( filename ); line = new BufferedReader( readfile ); while( line.ready() ) { out.println( line.readLine() + "<BR>" ); } line.close(); readfile.close(); } %> </BODY></HTML>

↑各自のPCのパスに修正

解説

Webブラウザ

出力

http://localhost:8080/mydir/samp1.jsp

samp1.jsp

Page 22: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

3.ファイルの中身を確認するプログラム例

kiroku.txt

<%@ page contentType="text/html;charset=Shift_JIS" import="java.io.*,java.util.*" %> <HTML> <HEAD> <TITLE>実習課題</TITLE> <%! //コンテンツファイルを示す変数とファイル名の定義 String filename =“c:/・・・/mydir/number/kiroku.txt"; %> </HEAD> <BODY> <HR> <% //コンテンツファイルの読み出し FileReader readfile = new FileReader( filename ); BufferedReader line = new BufferedReader( readfile ); //ファイルの中身を1行づつ表示する(HTMLとして出力) while( line.ready() ) { out.println( line.readLine() + "<BR>" ); } //ファイルのクローズ処理 line.close(); readfile.close(); %> <HR> </BODY> </HTML>

samp2.jsp

↑各自のPCのパスに修正

解説

Webブラウザ

出力

http://localhost:8080/mydir/samp2.jsp

Page 23: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

4.パターンマッチング

AAABBBCCCDDDEEEFFFXXXYYYZZZ XXX

AAABBBCCCDDDEEEFFF YYYZZZ

matcher

true/false

XXX

split

パターンマッチ(複数の方法あり)

分割

置換 XXX

split xxx

AAABBBCCCDDDEEEFFFxxxYYYZZZ

AAABBBCCCDDDEEEFFFXXXYYYZZZ

AAABBBCCCDDDEEEFFFXXXYYYZZZ

正規表現の利用で記述する ^ ・・・行の先頭 $ ・・・行末 . ・・・ 任意の一文字 * ・・・0回以上の繰り返し など

解説

Page 24: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

5.文字列に対するパターンマッチプログラム例

<%@ page contentType="text/html;charset=Shift_JIS" import="java.io.*,java.util.*,java.util.regex.*"%> <HTML> <HEAD> <TITLE>実習課題</TITLE> <%! //変数の型宣言 String Bunsyo="abc:defgh:ijk"; String[] Word; String Bunsyo2; %> </HEAD> <BODY> <% //分割 Word=Bunsyo.split(":"); for( int i=0 ; i< Word.length ; i++ ) { out.println( Word[ i ] + "<BR>"); } //置換 Bunsyo2=Bunsyo.replace(":","."); out.println( Bunsyo2 + "<BR>");

//マッチ(正規表現なし) Pattern pattern = Pattern.compile("abc"); Matcher matchvalue; for( int i=0 ; i< Word.length ; i++ ) { matchvalue= pattern.matcher( Word[ i ] ); if( matchvalue.matches() ) { out.println( Word[ i ] +"<BR>" ); } } //マッチ(正規表現あり) pattern = Pattern.compile(".*a.*"); for( int i=0 ; i< Word.length ; i++ ) { matchvalue= pattern.matcher( Word[ i ] ); if( matchvalue.matches() ) { out.println( Word[ i ] +"<BR>" ); } } %> <HR> </BODY> </HTML>

←処理対象文字列

つづき

解説

samp3.jsp

Page 25: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

(3)JSPファイル -------------------menu.jsp------------------- <%@ page contentType="text/html;charset=Shift_JIS" import="java.io.*,java.util.*"%> <HTML> <HEAD> <TITLE>実習課題</TITLE> <!-- Webプログラミング2 2012/10/10 コンテンツ一覧出力JSP --> <%! //変数の型宣言 String[ ] filelists; //コンテンツファイルを入れる配列 String filename; //コンテンツファイルを示す変数 String filetitle; //コンテンツファイル内のヘッダを入れる変数 String titlename; //ヘッダからタイトル部分を抜き出した変数 File datadir; //コンテンツファイルを格納するディレクトリの変数 FileReader readfile; //ファイル内のデータを読み出すための変数 BufferedReader line; //ファイル内のデータを一行ごとに扱うための変数 %> </HEAD> -----------------(次ページへつづく)-----------------

ソースコード例

Page 26: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

----------------------(前ページから)------------------------- <BODY> <HR> <% //ディレクトリ内のファイル一覧 datadir =new File("c:/・・・/mydir/number/data"); //コンテンツディレクトリからファイルの一覧を読み出す filelists = datadir.list( ); // コンテンツファイルの数だけ繰り返す for (int i=0;i<filelists.length ; i++ ) { //ファイルの読み出し filename=datadir + "/" + filelists[i]; readfile = new FileReader( filename ); line = new BufferedReader( readfile ); // コンテンツファイルの1行目(=ヘッダ)の読み出し filetitle = line.readLine( ); -----------------(次ページへつづく)-----------------

各自のPCで異なる

ソースコード例

Page 27: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

----------------------(前ページから)------------------------- //ヘッダの題名だけを抜き出し titlename = filetitle.replace("Title:", ""); //題名とファイル名をHTML形式で出力、 //ファイル名をURLの変数としてリンク先へ送信 out.println( "<A HREF=¥"/mydir/number/show.jsp? " + filelists[i] + " ¥"TARGET=¥"right¥"> " + titlename + "</A><BR>"); //ファイルのクローズ処理 line.close( ); readfile.close( ); } %> <HR> </BODY> </HTML> ----------------------------------------------------

ソースコード例

Page 28: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

①一覧表示プログラム menu.jsp の出力では、

ファイル一覧から選択したファイルを引数にして表示プログラムに

渡すようなリンク(Aタグ)を作る。

②ファイル指定の入力があることを前提に表示プログラム show.jsp を作成。

③show.jsp単体を適宜ブラウザから動作確認する

(引数は手入力する)

④ブラウザで初期画面から動作を確認する

作業3

Page 29: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

方針

料理1 料理2 料理3 料理4 ・ ・ ・

menu.jsp

mydir WEB-INF

index.html

jsp

img

data XXXX1.txt XXX10.txt ・・・

2.選択したファイルの中身を右側フレームの画面に出力する

XXXX1.jpg XXX10.jpg ・・・

show.jsp

ポイント③:引数で入力されたファイル(テキストと画像)を表示する

ポイント④:あらかじめ決めておいたフォルダ構造(テキストと画像は

格納フォルダと拡張子が異なるだけ)に従って合成して出力

ポイント⑤:データファイルは1行目はヘッダなので表示させない

Page 30: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

-------------------show.jsp------------------- <%@ page contentType= "text/html;charset=Shift_JIS" import="java.io.*,java.util.*"%> <HTML> <HEAD> <TITLE>実習課題</TITLE> <!-- Webプログラミング2実習 2012/10/10 コンテンツ表示JSP --> <%! //変数の型宣言 String datafile; //コンテンツのファイル名(URLの変数) String filename; //コンテンツファイルを示す変数 String picfile; //コンテンツの画像ファイル String filetitle; //コンテンツファイル内のヘッダを入れる変数 FileReader readfile; //ファイル内のデータを読み出すための変数 BufferedReader line; //ファイル内のデータを一行ごとに扱うための変数 %> </HEAD> -----------------(次ページへつづく)-----------------

ソースコード例

Page 31: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

----------------------(前ページから)------------------------- <BODY> <% //URLの変数から入力されたファイル名を取得 datafile=request.getQueryString( ); //ファイル名からコンテンツの画像ファイルを指定 picfile = datafile.replace("txt", "jpg"); //画像ファイルをHTML形式のリンクとして出力 out.println("<CENTER><IMG SRC=¥"/mydir/number/img/"+ picfile + "¥"> </CENTER><BR>" ); //コンテンツファイルの読み出し filename="c:/・・・/mydir/number/data/" + datafile; readfile = new FileReader( filename ); line = new BufferedReader( readfile ); //最初の一行(ヘッダ)を無視する String filetitle = line.readLine( ); -----------------(次ページへつづく)-----------------

ソースコード例

各自のPCで異なる

Page 32: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

----------------------(前ページから)------------------------- //二行目以降はコンテンツなので表示する(HTMLとして出力) while( line.ready( ) ) { out.println( line.readLine( ) + "<BR>" ); } //ファイルのクローズ処理 line.close( ); readfile.close( ); %> <HR> </BODY> </HTML> ----------------------------------------------------

ソースコード例

Page 33: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

①基本動作が確認できたら、自分なりの改造をしてみる。

②初期画面に自分の学籍番号と名前を入れる。

③自分のIPアドレスを調べ友人にアクセスしてもらう

(反対に友人の作成したWebページもアクセスしてみる)

④作成した自分の学籍番号フォルダを所定の場所に提出(課題終了)

作業4

Page 34: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

<HTML> <TITLE>samp</TITLE> <BODY> <FORM METHOD="POST" ACTION="http://localhost/mydir/samp4.jsp"> 入力してください。<INPUT TYPE="text" NAME="sono1"><BR> 入力してください。<INPUT TYPE="text" NAME="sono2"><BR> <INPUT TYPE="submit" VALUE="submit"> </FORM> </BODY> </HTML>

samp4.html

<%@ page contentType="text/html;charset=Shift_JIS" %> <HTML> <%! String input; %> <TITLE>samp</TITLE> <BODY> <% request.setCharacterEncoding("Shift_JIS"); input=request.getParameter("sono1"); out.print( input ); input=request.getParameter("sono2"); out.print( input ); %> </BODY> </HTML>

samp4.jsp

入力したデータが表示される

応用例 1.ブラウザからの入力受け付け

http://localhost:8080/mydir/samp4.html

Page 35: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

応用例 2.ブラウザからの入力データをセーブする <%@ page contentType="text/html;charset=Shift_JIS" import="java.io.*,java.util.*" %> <HTML> <%! //変数宣言 String input1,input2; //書き出しファイル名 String filename =“c:/・・・/mydir/kiroku.txt"; %> <TITLE>samp</TITLE><BODY> <% //データの受取 request.setCharacterEncoding("Shift_JIS"); input1=request.getParameter("sono1"); input2=request.getParameter("sono2"); //上書きの指定(どちらかを有効にする) FileWriter writefile = new FileWriter( filename); //追記の指定(どちらかを有効にする) //FileWriter writefile = new FileWriter( filename, true ); //書き出し BufferedWriter line = new BufferedWriter( writefile ); line.write( input1 ); line.newLine(); line.write( input2 ); line.newLine(); //ファイルのクローズ処理 line.close(); writefile.close(); %> </BODY></HTML>

↑各自のPCのパスに修正

kiroku.txt

samp5.jsp

Page 36: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

応用例 3.テキストファイルDB

file1.txt file2.txt file3.txt

sampdata

ポイント①:データの内容を1枚のテキストファイル(csv形式など)に記録 (1件のデータ量は適度にしておく:文章を丸々入れない、 文字数制限をするか、コンテンツへのリンクにしておくなど) ポイント②:テキストファイルに対して検索などをかける (カラムごとに検索をかける)

CSVデータの例

カレーライス, 2012/10/10, 斉藤, content1.txt ・・・ 味噌汁, 2012/11/11, 斉藤, content10.txt ・・・

Page 37: Webプログラミング2 - shonan-it.ac.jp2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明 Webプログラミング2 8. JSPによるWebプログラミング(1)

2012年 Webプログラミング 湘南工科大学講義資料 斉藤典明

応用例 4.JavaScriptの活用

①URLの入力

②検索入力画面

⑤検索結果の表示

Webサーバ

③入力確認画面 JavaScript

④検索中画面 JavaScript

http://localhost・・・