授業第13回 画像をアップロードできるBlog
準備
画像アップロード用のタグライブラリを作りました。
$cp
/home/hanrin/fileup.jar /home/tci100xxx/public_html/tomcat/WEB-INF/lib
$cp /home/hanrin/commons-fileupload-1.2.2.jar /home/tci100xxx/public_html/tomcat/WEB-INF/lib
$cp /home/hanrin/commons-io-2.1.jar /home/tci100xxx/public_html/tomcat/WEB-INF/lib
を実行し、必要なjarをWEBINF/libにコピーしておいてください。
このタグライブラリは、テーブルの形が決まっており、画像もJPGだけしかアップロードできません。
この方式を変えたい、というひとは、先生に言ってください。好きな形して、コンパイルします。
1、フォームでファイルをアップロードする
このタグライブラリは、以下のテーブルでしか動作出来ません。
テーブル名は自由で構いませんが、列名は、同じでなければなりません。(卒業制作等で、テーブルの形が決まっている人は、それに合わせて直しますので、言ってください)
create table bt_img(
id serial primary key,
filename varchar(100),
message varchar(400),
cdate timestamp default now(),
img bytea
);
grant all on bt_img to tomcat;
grant all on bt_img_id_seq to tomcat;
また、フォームは以下の形式にしてください。name属性値が違うと、データを受け取れません。
とりあえず、name="message"(ファイルの説明)とname="file"(ファイル送信)があれば動作します。
formには、enctype="multipart/form-data"属性が必要です。
これも変えることが出来ますので、必要な人は言ってください。
<form action="fileupload.jsp" method="post" enctype="multipart/form-data" > <textarea rows="5" cols="15" name="message"></textarea> <input type="file" name="file" /> <input type="submit" value="アップロード" /> </form>
2、JSPでのタグの使用
JSPに
<%@ taglib uri="/fileup" prefix="hn" %>
を追加すると使えるようになります。
まず、fileuploadのJSPに以下のように書きます
<hn:fileup jdbc="jdbcのパス" user="ユーザー名" pass="パスワード" db="データベース名" table="テーブル名" />例:
<hn:fileup jdbc="jdbc:postgresql:hanrin" user="hanrin" pass="" db="hanrin" table="bt_img" />
次に、画像表示用のJSPを書きます。
<hn:read jdbc="jdbcのパス" user="ユーザー名" pass="パスワード" db="データベース名" table="テーブル名" id="画像のID" />
例:
<hn:read jdbc="jdbc:postgresql:hanrin" user="hanrin" pass="" db="hanrin" table="bt_img" id="${fid}" />
全体を書くと、以下のようになります。
----index.jsp
<%@ page contentType="text/html; charset=UTF-8" trimDirectiveWhitespaces="true" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <title>jQuery Mobile</title> </head> <body> <sql:setDataSource dataSource="jdbc/hanrin" /> <fmt:requestEncoding value="UTF-8"/> <fmt:setLocale value="ja_JP" /> <sql:query sql="select * from bt_img" var="rs"/> <ul> <c:forEach var="i" items="${rs.rows}"> <c:if test="${!empty i.id}"> <li data-role="list-divider">ファイルID=${i.id} ファイル名=${i.filename}</li> <li><img src="btread.jsp?id=${i.id}" width="100" height="200" /> ${i.message} </li> </c:if> </c:forEach> </ul> <form action="fileupload.jsp" method="post" enctype="multipart/form-data" > <fieldset> アップロードしたいファイルを指定してください。<br /> メッセージ: <textarea rows="5" cols="15" name="message"></textarea> <br /> </fieldset> <fieldset> <input type="file" name="file" /> <input type="submit" value="アップロード" /> </fieldset> </form> </body> </html>
---fileupload.jsp
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="/fileup" prefix="hn" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>File</title> </head> <body> <fmt:requestEncoding value="UTF-8" /> <fmt:setLocale value="ja_JP" /> <hn:fileup jdbc="jdbc:postgresql:hanrin" user="hanrin" pass="" db="hanrin" table="bt_img" /> <a href="index.jsp">アップロード処理が終わりました(戻る)</a> </body> </html>
---btread.jsp
<%@ page contentType="image/jpeg" trimDirectiveWhitespaces="true"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="/fileup" prefix="hn" %> <fmt:parseNumber var="fid" value="${param.id}" /> <hn:read jdbc="jdbc:postgresql:hanrin" user="hanrin" pass="" db="hanrin" table="bt_img" id="${fid}" />
問題1
上のようなBlogアプリケーションを
public_html/tomcat/mobile2011/jqMobileFileUp.jsp
に作りなさい。
次に、上のアプリケーションを、以下の例のように、jQuery mobileで書きなさい。
★ 例 ★
出来たら、投稿の削除をする管理ページを作ってください。このページは、一般ユーザーに見られないように、パスワードで保護して下さい。
配点50点。テーマを書くと60点。削除、更新を作ったら100点