プロジェクトの構造:
プロジェクトのホームページ:
登録ページ:
画像をアップロード:
エフェクト画像 1:
効果画像 2:
効果画像 3:
================================================= ===========
以下はコード部分です
================================================= ===========
必要なデータベース SQL:
データベース db_ajax を作成します。
db_ajax を使用します。
テーブル user_table を作成する
(
user_id int auto_increment 主キー、
名前 varchar(255) 一意、
varchar(255)を渡す
);
テーブル photo_table を作成する
(
photo_id int auto_increment 主キー、
タイトル varchar(255)、
ファイル名 varchar(255)、
owner_id int、
外部キー(owner_id)はuser_table(user_id)を参照します
);
<div id="uploadDiv" style="display:none">
<form action="proUpload" method="post"
enctype="multipart/form-data">
<table cellpacing="1" cellpadding="10">
<caption>写真をアップロードする</caption>
<tr>
<td>写真のタイトル:</td>
<td><input id="title" name="title" type="text" /></td>
</tr>
<tr>
<td>写真を閲覧する:</td>
<td><input id="file" name="file" type="file" /></td>
</tr>
<tr>
<tdcolspan="2" align="center">
<input type="submit" value="アップロード" />
<input type="reset" value="リセット" />
</td>
</tr>
</テーブル>
</form>
</div>
<div id="tipDiv" style="display:none">
</div>
</body>
</html>
<!-- Web アプリケーションの開始時にロードされるように Spring コンテナを構成します -->
<リスナー>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</リスナー>
<サーブレット>
<サーブレット名>proLogin</サーブレット名>
<サーブレットクラス>com.b510.album.web.ProLoginServlet</サーブレットクラス>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>proLogin</サーブレット名>
<url-pattern>/proLogin</url-pattern>
</サーブレットマッピング>
<サーブレット>
<サーブレット名>proRegist</サーブレット名>
<サーブレットクラス>com.b510.album.web.ProRegistServlet</サーブレットクラス>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>proRegist</サーブレット名>
<url-pattern>/proRegist</url-pattern>
</サーブレットマッピング>
<サーブレット>
<サーブレット名>validateName</サーブレット名>
<サーブレットクラス>com.b510.album.web.ValidateNameServlet</サーブレットクラス>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>validateName</サーブレット名>
<url-pattern>/validateName</url-pattern>
</サーブレットマッピング>
<サーブレット>
<サーブレット名>getPhoto</サーブレット名>
<サーブレットクラス>com.b510.album.web.GetPhotoServlet</サーブレットクラス>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>getPhoto</サーブレット名>
<url-pattern>/getPhoto</url-pattern>
</サーブレットマッピング>
<サーブレット>
<サーブレット名>showImg</サーブレット名>
<サーブレットクラス>com.b510.album.web.ShowImgServlet</サーブレットクラス>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>showImg</サーブレット名>
<url-pattern>/showImg</url-pattern>
</サーブレットマッピング>
<サーブレット>
<サーブレット名>pageLoad</サーブレット名>
<サーブレットクラス>com.b510.album.web.PageLoadServlet</サーブレットクラス>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>pageLoad</サーブレット名>
<url-pattern>/pageLoad</url-pattern>
</サーブレットマッピング>
<サーブレット>
<サーブレット名>turnPage</サーブレット名>
<サーブレットクラス>com.b510.album.web.TurnPageServlet</サーブレットクラス>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>turnPage</サーブレット名>
<url-pattern>/turnPage</url-pattern>
</サーブレットマッピング>
<サーブレット>
<サーブレット名>proUpload</サーブレット名>
<サーブレットクラス>com.b510.album.web.ProUploadServlet</サーブレットクラス>
</サーブレット>
<サーブレットマッピング>
<サーブレット名>proUpload</サーブレット名>
<url-パターン>/proUpload</url-パターン>
</サーブレットマッピング>
<ウェルカムファイルリスト>
<welcome-file>アルバム.html</welcome-file>
</ウェルカムファイルリスト>
</web-app>
<!-- C3P0 データ ソースを使用して実装されたデータ ソース Bean を定義します -->
<bean id="dataSource" destroy-method="close"
>
<!-- データベースに接続するドライバーを指定します -->
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<!-- データベースに接続する URL を指定します -->
<プロパティ名="jdbcUrl"
value="jdbc:mysql://localhost:3308/db_ajax"/>
<!-- データベースに接続するユーザー名を指定します -->
<property name="user" value="root"/>
<!-- データベースに接続するためのパスワードを指定します -->
<プロパティ名="パスワード" 値="ルート"/>
<!--データベース接続プールへの最大接続数を指定します-->
<property name="maxPoolSize" value="40"/>
<!-- データベース接続プールに接続するための最小接続数を指定します -->
<property name="minPoolSize" value="1"/>
<!-- データベース接続プールに接続するための初期接続の数を指定します -->
<property name="initialPoolSize" value="1"/>
<!-- データベース接続プールへの接続の最大アイドル時間を指定します -->
<property name="maxIdleTime" value="20"/>
</豆>
<!-- Hibernate の SessionFactory を定義する -->
<bean id="セッションファクトリー"
>
<!-- 依存関係注入データ ソース。上で定義した dataSource を注入します -->
<property name="データソース" ref="データソース"/>
<!-- MappingResouces 属性は、すべてのマッピング ファイルをリストするために使用されます -->
<プロパティ名="マッピングリソース">
<リスト>
<!-- 以下は Hibernate マッピング ファイルのリストに使用されます -->
<値>com/b510/album/model/User.hbm.xml</value>
<値>com/b510/album/model/Photo.hbm.xml</value>
</リスト>
</プロパティ>
<!-- Hibernate の SessionFactory のプロパティを定義します -->
<プロパティ名="hibernateProperties">
<小道具>
<!--データベース言語を指定します-->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect</prop>
<!-- 必要に応じてデータベースを毎回自動的に作成するかどうか -->
<prop key="hibernate.hbm2ddl.auto">更新</prop>
<!-- Hibernate 永続化操作によって生成された SQL を表示します -->
<prop key="hibernate.show_sql">true</prop>
<!-- SQL スクリプトをフォーマットして出力します -->
<prop key="hibernate.format_sql">true</prop>
</props>
</プロパティ>
</豆>
<!-- UserDao コンポーネントを構成する -->
<bean id="userDao"
>
<!--SessionFactory 参照を挿入-->
<property name="sessionFactory" ref="sessionFactory"/>
</豆>
<!-- PhotoDao コンポーネントを構成する -->
<bean id="photoDao"
>
<property name="sessionFactory" ref="sessionFactory"/>
</豆>
<!-- albumService ビジネス ロジック コンポーネントを構成します -->
<bean id="アルバムサービス"
>
<!-- 2 つの DAO コンポーネントをビジネス ロジック コンポーネントに挿入します -->
<property name="userDao" ref="userDao"/>
<property name="photoDao" ref="photoDao"/>
</豆>
<!-- Hibernate のローカル トランザクション マネージャーを構成します。HibernateTransactionManager クラスを使用します -->
<!-- このクラスは、Hibernate の固有の実装である PlatformTransactionManager インターフェイスを実装します -->
<bean id="transactionManager"
>
<!-- HibernateTransactionManager を構成する場合、SessionFactory への参照を挿入する必要があります -->
<property name="sessionFactory" ref="sessionFactory"/>
</豆>
<!-- トランザクション アスペクト Bean を構成し、トランザクション マネージャーを指定します -->
<tx:advice id="txAdvice" トランザクションマネージャー="transactionManager">
<!-- 詳細なトランザクション セマンティクスを構成するために使用されます -->
<tx:属性>
<!-- 「get」で始まるすべてのメソッドは読み取り専用です -->
<tx:method name="get*" read-only="true"/>
<!-- 他の方法ではデフォルトのトランザクション設定が使用されます -->
<tx:メソッド名="*"/>
</tx:属性>
</tx:アドバイス>
<aop:config>
<!-- lee パッケージ内の Impl で終わるすべてのクラスによって実行されるすべてのメソッドと一致するようにポイントカットを構成します -->
<aop:pointcut id="leeService"
式="実行(* com.b510.album.service.impl.*Impl.*(..))"/>
<!-- leeService エントリ ポイントで txAdvice トランザクション アスペクトを適用するように指定します -->
<aop:アドバイザーアドバイス-ref="txAdvice"
pointcut-ref="leeService"/>
</aop:config>
</豆>
関数リセット()
{
// user と pass の 2 つの単一行テキスト ボックスをクリアします
$("#user").val("");
$("#pass").val("");
}
//登録ダイアログボックスに切り替える
関数changeRegist()
{
// ログイン用の 2 つのボタンを非表示にします
$("#loginDiv").hide("500");
//登録用のボタンを2つ表示する
$("#registDiv").show("500");
}
//ユーザーログインを処理する関数
関数 proLogin()
{
// 2 つのテキスト ボックスの値を取得して user と pass
var user = $.trim($("#user").val());
var pass = $.trim($("#pass").val());
if (ユーザー == null || ユーザー == ""
|| パス == null|| パス == "")
{
alert("ログインする前にユーザー名とパスワードを入力する必要があります");
false を返します。
}
それ以外
{
//非同期の POST リクエストを proLogin に送信します
$.post("プロログイン", $('#user,#pass').serializeArray()
、 null 、 "スクリプト");
}
}
//ユーザー登録を行う関数
関数レジスト()
{
// 2 つのテキスト ボックスの値を取得して user と pass
var user = $.trim($("#user").val());
var pass = $.trim($("#pass").val());
if (ユーザー == null || ユーザー == "" || pass == null || pass =="")
{
alert("登録する前にユーザー名とパスワードを入力する必要があります");
false を返します。
}
それ以外
{
//非同期の POST リクエストを proRegist に送信します
$.post("proRegist", $('#user,#pass').serializeArray()
、 null 、 "スクリプト");
}
}
// ユーザー名が利用可能かどうかを確認する
関数 validateName()
{
//ユーザーのテキストボックスの値を取得します
var user = $.trim($("#user").val());
if (ユーザー == null || ユーザー == "")
{
alert("ユーザー名がまだ入力されていません!");
false を返します。
}
それ以外
{
//非同期の POST リクエストを validateName に送信します
$.post("validateName", $('#user').serializeArray()
、 null 、 "スクリプト");
}
}
// 現在のユーザーと現在のページの写真を定期的に取得します
関数 onLoadHandler()
{
// 非同期の GET リクエストを getPhoto に送信します
$.getScript("getPhoto");
//1秒を指定して再度このメソッドを実行
setTimeout("onLoadHandler()", 1000);
}
//写真を表示する
関数 showImg(ファイル名)
{
$.getScript("showImg?img=" + ファイル名);
// document.getElementById("show").src="uploadfiles/" + fileName + "?now=" + new Date();
// $("#show").attr("src" , "uploadfiles/" + ファイル名);
}
// ページめくりを処理する関数
関数turnPage(フラグ)
{
$.getScript("turnPage?turn=" + flag);
}
//アップロードウィンドウを開きます
関数openUpload()
{
$("#uploadDiv").show()
。ダイアログ(
{
モーダル: true、
サイズ変更可能: false、
幅: 428、
身長: 220、
オーバーレイ: {不透明度: 0.5 、背景: "黒"}
});
}
インポート javax.servlet.ServletConfig;
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServlet;
org.springframework.context.ApplicationContext をインポートします。
org.springframework.web.context.support.WebApplicationContextUtils をインポートします。
com.b510.album.service.AlbumService をインポートします。
/**
*
* @author ホンテン
*
*/
public class BaseServlet extends HttpServlet {
プライベート静的最終ロングシリアルバージョンUID = -2041755371540813745L;
AlbumService を次のように保護しました。
//コンストラクターを定義し、Spring コンテナへの参照を取得します。
public void init(ServletConfig config) throws ServletException {
super.init(config);
ApplicationContext ctx = WebApplicationContextUtils
.getWebApplicationContext(getServletContext());
as = (アルバムサービス) ctx.getBean("アルバムサービス");
}
}
インポート java.io.IOException;
java.io.PrintWriterをインポートします。
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
com.b510.album.Exception.AlbumException をインポートします。
com.b510.album.web.base.BaseServlet をインポートします。
/**
*
* @author ホンテン
*
*/
public class ValidateNameServlet extends BaseServlet {
プライベート静的最終ロングserialVersionUID = 9038839276327742641L;
public void service(HttpServletRequestリクエスト、HttpServletResponseレスポンス)
IOException、ServletExceptionをスローします{
文字列名 = request.getParameter("ユーザー");
response.setContentType("text/javascript;charset=GBK");
// 出力ストリームを取得する
PrintWriter 出力 = response.getWriter();
試す {
if (名前 != null) {
if (as.validateName(名前)) {
out.println("alert('おめでとうございます、このユーザー名はまだ使用されていません。このユーザー名を使用できます!');");
} それ以外 {
out.println("alert('申し訳ありませんが、このユーザー名はすでに他のユーザーによって占有されています!');");
out.println("$('#user').val('');");
}
} それ以外 {
out.println("alert('ユーザー名の検証中に例外が発生しました。ユーザー名を変更して再試行してください!');");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "ユーザー名を変更してもう一度お試しください!');");
}
}
}
インポート java.io.IOException;
java.io.PrintWriterをインポートします。
java.util.Listをインポートします。
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
インポート javax.servlet.http.HttpSession;
com.b510.album.Exception.AlbumException をインポートします。
com.b510.album.vo.PhotoHolder をインポートします。
com.b510.album.web.base.BaseServlet をインポートします。
/**
*
* @author ホンテン
*
*/
public class TurnPageServlet extends BaseServlet {
プライベート静的最終ロングシリアルバージョンUID = -5097286750384714951L;
public void service(HttpServletRequestリクエスト、HttpServletResponseレスポンス)
IOException、ServletExceptionをスローします{
文字列ターン = request.getParameter("ターン");
HttpSession セッション = request.getSession(true);
文字列名 = (文字列) session.getAttribute("curUser");
オブジェクト pageObj = session.getAttribute("curPage");
// HttpSession の curPage が null の場合、現在のページを最初のページに設定します
int curPage = pageObj == null ? 1 : (整数) pageObj;
response.setContentType("text/javascript;charset=GBK");
PrintWriter 出力 = response.getWriter();
if (curPage == 1 &&turn.equals("-1")) {
out.println("alert('今は最初のページです。ページを進めることはできません!')");
} それ以外 {
// ページめくりを実行し、curPage の値を変更します。
curPage += Integer.parseInt(turn);
試す {
List<PhotoHolder> 写真 = as.getPhotoByUser(name, curPage);
// ページをめくった後の記録はありません
if (photos.size() == 0) {
out.println("alert('ページをめくっても写真記録が見つかりません。システムは自動的に前のページに戻ります')");
//前のページに戻る
curPage -= Integer.parseInt(turn);
} それ以外 {
// ユーザーが閲覧しているページ番号を HttpSession に入れます
session.setAttribute("curPage", curPage);
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "もう一度お試しください!')");
}
}
}
}
インポート java.io.IOException;
java.io.PrintWriterをインポートします。
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
インポート javax.servlet.http.HttpSession;
com.b510.album.web.base.BaseServlet をインポートします。
/**
*
* @author ホンテン
*
*/
パブリック クラス ShowImgServlet extends BaseServlet {
プライベート静的最終ロングserialVersionUID = 1460203270448078666L;
public void service(HttpServletRequestリクエスト、HttpServletResponseレスポンス)
IOException、ServletExceptionをスローします{
文字列 img = request.getParameter("img");
HttpSession セッション = request.getSession(true);
// ユーザーが閲覧している画像を HttpSession に置きます。
session.setAttribute("curImg", img);
response.setContentType("text/javascript;charset=GBK");
// 出力ストリームを取得する
PrintWriter 出力 = response.getWriter();
out.println("$('#show').attr('src' , 'uploadfiles/" + img + "');");
}
}
java.io.FileOutputStreamをインポートします。
インポート java.io.IOException;
java.io.InputStreamをインポートします。
java.io.PrintWriterをインポートします。
java.util.Iteratorをインポートします。
java.util.Listをインポートします。
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
org.apache.commons.fileupload.FileItem をインポートします。
org.apache.commons.fileupload.FileItemFactory をインポートします。
org.apache.commons.fileupload.FileUploadException; をインポートします。
org.apache.commons.fileupload.disk.DiskFileItemFactory をインポートします。
インポート org.apache.commons.fileupload.servlet.ServletFileUpload;
com.b510.album.Exception.AlbumException をインポートします。
com.b510.album.web.base.BaseServlet をインポートします。
/**
*
* @author ホンテン
*
*/
@SuppressWarnings("未チェック")
パブリック クラス ProUploadServlet extends BaseServlet {
プライベート静的最終ロングserialVersionUID = 642229801989188793L;
public void service(HttpServletRequestリクエスト、HttpServletResponseレスポンス)
IOException、ServletExceptionをスローします{
イテレータ iter = null;
文字列タイトル = null;
response.setContentType("text/html;charset=GBK");
// 出力ストリームを取得する
PrintWriter 出力 = response.getWriter();
out.println("<script type='text/javascript>'");
試す {
//Uploader を使用してアップロードを処理する
FileItemFactory ファクトリー = new DiskFileItemFactory();
ServletFileUpload アップロード = 新しい ServletFileUpload(ファクトリー);
リスト項目 = Upload.parseRequest(request);
iter = items.iterator();
// 各フォーム コントロールに対応するコンテンツを走査します
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
// 項目が通常のフォームフィールドの場合
if (item.isFormField()) {
文字列名 = item.getFieldName();
if (name.equals("タイトル")) {
タイトル = item.getString("GBK");
}
}
// アップロードが必要なファイルの場合
それ以外 {
文字列ユーザー = (文字列) request.getSession().getAttribute(
"curUser");
文字列サーバーファイル名 = null;
//ファイル名を返す
文字列ファイル名 = item.getName();
// ファイルの接尾辞を取得します
文字列 appden = fileName.substring(fileName
.lastIndexOf("."));
//ファイルタイプを返す
文字列 contentType = item.getContentType();
// アップロードできる画像は jpg、gif、png のみです
if (contentType.equals("image/pjpeg")
|| contentType.equals("画像/gif")
|| contentType.equals("画像/jpeg")
|| contentType.equals("画像/png")) {
入力ストリーム入力 = item.getInputStream();
サーバーファイル名 = String.valueOf(システム
.currentTimeMillis());
FileOutputStream 出力 = new FileOutputStream(
getServletContext().getRealPath("/")
+ "uploadfiles//" + サーバーファイル名
+ 追加);
byte[] バッファ = 新しいバイト [1024];
int len = 0;
while ((len = input.read(buffer)) > 0) {
出力.write(バッファ, 0, len);
}
input.close();
出力.close();
as.addPhoto(ユーザー、タイトル、サーバーファイル名 + アプリデン);
response.sendRedirect("album.html?resultCode=0");
} それ以外 {
response.sendRedirect("album.html?resultCode=1");
}
}
}
} catch (FileUploadException フュー) {
fue.printStackTrace();
response.sendRedirect("album.html?resultCode=2");
} catch (AlbumException ex) {
ex.printStackTrace();
}
}
}
インポート java.io.IOException;
java.io.PrintWriterをインポートします。
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
インポート javax.servlet.http.HttpSession;
com.b510.album.Exception.AlbumException をインポートします。
com.b510.album.web.base.BaseServlet をインポートします。
/**
*
* @author ホンテン
*
*/
public class ProRegistServlet extends BaseServlet {
プライベート静的最終ロングシリアルバージョンUID = -3174994243043815566L;
public void service(HttpServletRequestリクエスト、HttpServletResponseレスポンス)
IOException、ServletExceptionをスローします{
文字列名 = request.getParameter("ユーザー");
文字列パス = request.getParameter("pass");
response.setContentType("text/javascript;charset=GBK");
// 出力ストリームを取得する
PrintWriter 出力 = response.getWriter();
試す {
out.println("$('#user,#pass').val('');");
if (name != null && pass != null && as.registUser(name, pass) > 0) {
HttpSession セッション = request.getSession(true);
session.setAttribute("curUser", name);
out.println("alert('おめでとうございます、正常に登録されました!');");
out.println("$('#noLogin').hide(500);");
out.println("$('#hasLogin').show(500);");
//メソッドを呼び出して写真リストを取得します
out.println("onLoadHandler();");
} それ以外 {
out.println("alert('登録に失敗しました。適切なユーザー名を選択してもう一度お試しください!');");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "ユーザー名を変更してもう一度お試しください!');");
}
}
}
インポート java.io.IOException;
java.io.PrintWriterをインポートします。
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
インポート javax.servlet.http.HttpSession;
com.b510.album.Exception.AlbumException をインポートします。
com.b510.album.web.base.BaseServlet をインポートします。
/**
*
* @author ホンテン
*
*/
public class ProLoginServlet extends BaseServlet {
プライベート静的最終ロングシリアルバージョンUID = -1253530202224049958L;
public void service(HttpServletRequestリクエスト、HttpServletResponseレスポンス)
IOException、ServletExceptionをスローします{
文字列名 = request.getParameter("ユーザー");
文字列パス = request.getParameter("pass");
response.setContentType("text/javascript;charset=GBK");
// 出力ストリームを取得する
PrintWriter 出力 = response.getWriter();
試す {
// ユーザーとパスの ID を含む入力ボックスの内容をクリアします
out.println("$('#user,#pass').val('');");
if (name != null && pass != null && as.userLogin(name, pass)) {
HttpSession セッション = request.getSession(true);
session.setAttribute("curUser", name);
out.println("alert('ログインに成功しました!')");
out.println("$('#noLogin').hide(500)");
out.println("$('#hasLogin').show(500)");
//メソッドを呼び出して写真リストを取得します
out.println("onLoadHandler();");
} それ以外 {
out.println("alert('入力したユーザー名とパスワードが一致しません。もう一度試してください!')");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "ユーザー名とパスワードを変更してもう一度お試しください!')");
}
}
}
インポート java.io.IOException;
java.io.PrintWriterをインポートします。
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
インポート javax.servlet.http.HttpSession;
com.b510.album.web.base.BaseServlet をインポートします。
/**
*
* @author ホンテン
*
*/
public class PageLoadServlet extends BaseServlet {
プライベート静的最終ロングserialVersionUID = 7512001492425261841L;
public void service(HttpServletRequestリクエスト、HttpServletResponseレスポンス)
IOException、ServletExceptionをスローします{
response.setContentType("text/javascript;charset=GBK");
// 出力ストリームを取得する
PrintWriter 出力 = response.getWriter();
HttpSession セッション = request.getSession(true);
文字列名 = (文字列) session.getAttribute("curUser");
// name が null でない場合、ユーザーがログインしていることを示します
if (名前 != null) {
//ID noLogin の要素を非表示にする (ユーザー ログイン パネル)
out.println("$('#noLogin').hide()");
//id が hasLogin の要素を非表示にする (ユーザー コントロール パネル)
out.println("$('#hasLogin').show()");
//メソッドを呼び出して写真リストを取得します
out.println("onLoadHandler();");
// HttpSession の curImg 属性を取り出す
String curImg = (String) session.getAttribute("curImg");
// ユーザーが閲覧している写真を再表示します
if (curImg != null) {
out.println("$('#show').attr('src' , 'uploadfiles/" + curImg
+ "');");
}
}
}
}
インポート java.io.IOException;
java.io.PrintWriterをインポートします。
java.util.Listをインポートします。
インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
インポート javax.servlet.http.HttpSession;
com.b510.album.Exception.AlbumException をインポートします。
com.b510.album.vo.PhotoHolder をインポートします。
com.b510.album.web.base.BaseServlet をインポートします。
/**
*
* @author ホンテン
*
*/
パブリック クラス GetPhotoServlet extends BaseServlet {
プライベート静的最終ロングシリアルバージョンUID = -8380695760546582385L;
public void service(HttpServletRequestリクエスト、HttpServletResponseレスポンス)
IOException、ServletExceptionをスローします{
HttpSession セッション = request.getSession(true);
// 現在のユーザーの現在のページ番号とシステムの写真リストを HttpSession から取得します
文字列名 = (文字列) session.getAttribute("curUser");
オブジェクト pageObj = session.getAttribute("curPage");
// HttpSession の curPage が null の場合、現在のページを最初のページに設定します
int curPage = pageObj == null ? 1 : (整数) pageObj;
response.setContentType("text/javascript;charset=GBK");
// 出力ストリームを取得する
PrintWriter 出力 = response.getWriter();
試す {
List<PhotoHolder> 写真 = as.getPhotoByUser(name, curPage);
// リストの ID を持つ要素をクリアします
out.println("var list = $('#list').empty();");
for (PhotoHolder ph : 写真) {
// 各写真をリストの ID を持つ要素に動的に追加します
out.println("list.append(/"<div align='center'>"
+ "<a href='javascript:void(0)' onclick=///"showImg('"
+ ph.getFileName() + "');///">" + ph.getTitle()
+ "</a></div>/");");
}
} catch (AlbumException ex) {
out.println("alert('" + ex.getMessage() + "もう一度お試しください!')");
}
}
}
/**
*
* @author ホンテン
*
*/
パブリック クラス PhotoHolder {
//写真の名前
プライベート文字列タイトル。
//サーバー上の写真のファイル名
プライベート文字列ファイル名;
// パラメータのないコンストラクタ
public PhotoHolder() {
}
// すべてのプロパティを初期化するコンストラクター
public PhotoHolder(文字列タイトル, 文字列ファイル名) {
this.title = タイトル;
this.fileName = ファイル名;
}
//title 属性の setter メソッドと getter メソッド
public void setTitle(String title) {
this.title = タイトル;
}
public String getTitle() {
this.title を返します。
}
//fileName 属性のセッターメソッドとゲッターメソッド
public void setFileName(String fileName) {
this.fileName = ファイル名;
}
public String getFileName() {
this.fileName を返します。
}
}
java.util.ArrayListをインポートします。
java.util.Listをインポートします。
com.b510.album.dao.PhotoDao をインポートします。
com.b510.album.dao.UserDao をインポートします。
com.b510.album.Exception.AlbumException をインポートします。
com.b510.album.model.Photo をインポートします。
com.b510.album.model.User をインポートします。
com.b510.album.service.AlbumService をインポートします。
com.b510.album.vo.PhotoHolder をインポートします。
/**
*
* @author ホンテン
*
*/
パブリック クラス AlbumServiceImpl は AlbumService {を実装します。
// ビジネス ロジック コンポーネントが依存する 2 つの DAO コンポーネント
プライベート UserDao ud = null;
プライベートPhotoDao pd = null;
// 2 つの DAO コンポーネントに必要なセッター メソッドの依存性注入
public void setUserDao(UserDao ud) {
this.ud = ud;
}
public void setPhotoDao(PhotoDao pd) {
this.pd = pd;
}
/**
* ユーザーのログインが成功したかどうかを確認します。
*
* @パラメータ名
※ログインユーザー名
* @paramパス
※ログインパスワード
* @return ユーザーのログイン結果。成功した場合は true を返し、そうでない場合は false を返します。
*/
public boolean userLogin(文字列名, 文字列パス) {
試す {
// UserDao を使用してユーザー名に基づいてユーザーをクエリします
ユーザー u = ud.findByName(名前);
if (u != null && u.getPass().equals(pass)) {
true を返します。
}
false を返します。
} catch (例外例) {
ex.printStackTrace();
throw new AlbumException("ユーザーログインの処理中に例外が発生しました!");
}
}
/**
* 新規ユーザー登録
*
* @パラメータ名
※新規登録ユーザーのユーザー名
* @paramパス
※新規登録ユーザー用のパスワード
* @return 新規登録ユーザーの主キー
*/
public int registUser(文字列名, 文字列パス) {
試す {
// 新しいユーザー インスタンスを作成します
ユーザー u = 新しいユーザー();
u.setName(名前);
u.setPass(パス);
// User オブジェクトを永続化します
ud.save(u);
u.getId()を返します;
} catch (例外例) {
ex.printStackTrace();
throw new AlbumException("新規ユーザー登録中に例外が発生しました!");
}
}
/**
*写真を追加します
*
* @param ユーザー
※写真を追加したユーザー
* @paramタイトル
* 写真にタイトルを追加します
* @param ファイル名
※サーバー上の写真のファイル名を追加します
* @return 新しく追加された写真の主キー
*/
public int addPhoto(String user, String title, String fileName) {
試す {
// 新しい写真インスタンスを作成する
写真 p = 新しい写真();
p.setTitle(タイトル);
p.setファイル名(ファイル名);
p.setUser(ud.findByName(user));
// 永続的な写真インスタンス
pd.save(p);
p.getId() を返します。
} catch (例外例) {
ex.printStackTrace();
throw new AlbumException("写真の追加中に例外が発生しました!");
}
}
/**
* ユーザーに基づいてユーザーのすべての写真を取得します
*
* @param ユーザー
* 現在のユーザー
* @param ページ番号
*ページ番号
* @return ユーザーと指定されたページに属する写真を返します
*/
public List<PhotoHolder> getPhotoByUser(String user, int pageNo) {
試す {
List<写真> pl = pd.findByUser(ud.findByName(user), pageNo);
List<PhotoHolder> 結果 = new ArrayList<PhotoHolder>();
for (写真 p : pl) {
result.add(new PhotoHolder(p.getTitle(), p.getFileName()));
}
結果を返します。
} catch (例外例) {
ex.printStackTrace();
throw new AlbumException("写真リストのクエリ中に例外が発生しました!");
}
}
/**
* ユーザー名が利用可能かどうか、つまりユーザー名がデータベースにすでに存在するかどうかを確認します。
*
* @パラメータ名
* 確認が必要なユーザー名
* @return ユーザー名が利用可能な場合は true を返し、それ以外の場合は false を返します。
*/
public boolean validateName(文字列名) {
試す {
// ユーザー名に基づいて、対応する User インスタンスをクエリします
ユーザー u = ud.findByName(名前);
if (u != null) {
false を返します。
}
true を返します。
} catch (例外例) {
ex.printStackTrace();
throw new AlbumException("ユーザー名が存在するかどうかの検証中に例外が発生しました!");
}
}
}
java.util.Listをインポートします。
com.b510.album.vo.PhotoHolder をインポートします。
/**
*
* @author ホンテン
*
*/
パブリックインターフェイス AlbumService {
/**
* ユーザーのログインが成功したかどうかを確認します。
*
* @パラメータ名
※ログインユーザー名
* @paramパス
※ログインパスワード
* @return ユーザーのログイン結果。成功した場合は true を返し、そうでない場合は false を返します。
*/
boolean userLogin(文字列名、文字列パス);
/**
* 新規ユーザー登録
*
* @パラメータ名
※新規登録ユーザーのユーザー名
* @paramパス
※新規登録ユーザー用のパスワード
* @return 新規登録ユーザーの主キー
*/
int registerUser(文字列名, 文字列パス);
/**
*写真を追加します
*
* @param ユーザー
※写真を追加したユーザー
* @paramタイトル
* 写真にタイトルを追加します
* @param ファイル名
※サーバー上の写真のファイル名を追加します
* @return 新しく追加された写真の主キー
*/
int addPhoto(String user, String title, String fileName);
/**
* ユーザーに基づいてユーザーのすべての写真を取得します
*
* @param ユーザー
* 現在のユーザー
* @param ページ番号
*ページ番号
* @return ユーザーと指定されたページに属する写真を返します
*/
List<PhotoHolder> getPhotoByUser(String user, int pageNo);
/**
* ユーザー名が利用可能かどうか、つまりユーザー名がデータベースにすでに存在するかどうかを確認します。
*
* @パラメータ名
* 確認が必要なユーザー名
* @return ユーザー名が利用可能な場合は true を返し、それ以外の場合は false を返します。
*/
ブール値 validateName(文字列名);
}
/**
* 写真エンティティクラス
*
* @author ホンテン
*
*/
公開授業の写真 {
//識別属性
プライベート整数 ID。
//写真の名前
プライベート文字列タイトル。
//サーバー上の写真のファイル名
プライベート文字列ファイル名;
// 写真が属するユーザーを保存します
プライベートユーザー ユーザー;
// パラメータのないコンストラクタ
公開写真() {
}
// すべてのプロパティを初期化するコンストラクター
パブリックフォト(整数ID、文字列タイトル、文字列ファイル名、ユーザーユーザー){
this.id = ID;
this.title = title;
this.fileName = filename;
this.user = user;
}
// ID属性のセッターとゲッターメソッド
public void setid(整数ID){
this.id = ID;
}
public Integer getId(){
this.idを返します。
}
//タイトル属性のセッターとゲッターメソッド
public void settitle(文字列タイトル){
this.title = title;
}
public string getTitle(){
this.titleを返します。
}
// fileName属性のセッターとゲッターメソッド
public void setFileName(string filename){
this.fileName = filename;
}
public string getFileName(){
this.filenameを返します。
}
//ユーザー属性のセッターとゲッターメソッド
public void setuser(ユーザーユーザー){
this.user = user;
}
パブリックユーザーgetUser(){
this.userを返します。
}
}
java.util.setをインポートします。
java.util.hashsetをインポートします。
/**
*ユーザーエンティティクラス
*
* @author ホンテン
*
*/
パブリッククラスユーザー{
//識別属性
プライベート整数ID;
//ユーザーのユーザー名
プライベート文字列名。
//このユーザーのパスワード
プライベート文字列パス。
//セットを使用して、このユーザーに関連付けられた写真を保存します
プライベートセット<photo> photos = new Hashset <Photo>();
//パラメーターのないコンストラクター
public user(){
}
//すべてのプロパティを初期化するコンストラクター
パブリックユーザー(整数ID、文字列名、文字列パス){
this.id = ID;
this.name = 名前;
this.pass = pass;
}
// ID属性のセッターとゲッターメソッド
public void setid(整数ID){
this.id = ID;
}
public Integer getId(){
this.idを返します。
}
// setter and getter name astributeのメソッド
public void setName(文字列名) {
this.name = 名前;
}
public String getName() {
this.name を返します。
}
// SetterおよびGetter Method of Pass属性
public void setpass(string pass){
this.pass = pass;
}
public string getPass(){
this.passを返します。
}
// SetterおよびGetter Method of Photos属性
public void setphotos(set <photo>写真){
this.photos = photos;
}
public set <photo> getphotos(){
this.photosを返します。
}
}
/**
*カスタマイズされた例外
*
* @author ホンテン
*
*/
パブリッククラスのアルバムエクセプトはruntimeexceptionを拡張します{
プライベート静的最終long SerialVersionUid = 8050756054850450421L;
//パラメーターレスコンストラクターを提供します
public albumexception(){
}
//文字列パラメーターをコンストラクターに提供します
public AlbumException(StringMSG){
super(msg);
}
}
インポート java.sql.SQLException;
java.util.Listをインポートします。
org.hibernate.hibernateExceptionをインポートします。
Import org.hibernate.query;
org.hibernate.sessionをインポートします。
org.springframework.orm.hibernate3.hibernatecallbackをインポートします。
import org.springframework.orm.hibernate3.support.hibernatedaosupport;
/**
*
* @author ホンテン
*
*/
@suppresswarnings( "unchecked")
パブリッククラスhongtenhibernatedaosupportは冬眠aosupportを拡張します{
/**
*ページングクエリ操作にはHQLステートメントを使用します
*
* @param hql
*クエリになるHQLステートメント
* @paramオフセット
*最初のレコードのインデックス
* @param Pagesize
*各ページに表示されるレコードの数
* @return現在のページのすべてのレコード
*/
パブリックリストFindBypage(最終文字列HQL、最終的なINTオフセット、
final int pagesize){
リストリスト= gethibernateTemplate()。executefind(new hibernatecallback(){
パブリックオブジェクトdoinhibernate(セッションセッション)
hibernateException、sqlexception {
リスト結果= session.createquery(hql).setfirstrosult(offset)
.setMaxResults(pagesize).list();
結果を返します。
}
});
リストを返す;
}
/**
*ページングクエリ操作にはHQLステートメントを使用します
*
* @param hql
*クエリになるHQLステートメント
* @param値
* HQLに渡す必要があるパラメーターがある場合、値はパラメーターに渡されます。
* @paramオフセット
*最初のレコードのインデックス
* @param Pagesize
*各ページに表示されるレコードの数
* @return現在のページのすべてのレコード
*/
パブリックリストfindbypage(最終文字列hql、最終オブジェクト値、
最終的なintオフセット、最終的なintページサイズ){
リストリスト= gethibernateTemplate()。executefind(new hibernatecallback(){
パブリックオブジェクトdoinhibernate(セッションセッション)
hibernateException、sqlexception {
リスト結果= session.createquery(hql).setparameter(0、value)
.setFirstreSult(offset).SetMaxResults(Pagesize).list();
結果を返します。
}
});
リストを返す;
}
/**
*ページングクエリ操作にはHQLステートメントを使用します
*
* @param hql
*クエリになるHQLステートメント
* @param値
* HQLに渡す必要がある複数のパラメーターがある場合、値はパラメーター配列で渡されます。
* @paramオフセット
*最初のレコードのインデックス
* @param Pagesize
*各ページに表示されるレコードの数
* @return現在のページのすべてのレコード
*/
パブリックリストfindbypage(最終文字列hql、最終オブジェクト[]値、
最終的なintオフセット、最終的なintページサイズ){
リストリスト= gethibernateTemplate()。executefind(new hibernatecallback(){
パブリックオブジェクトdoinhibernate(セッションセッション)
hibernateException、sqlexception {
クエリquery = session.createquery(hql);
for(int i = 0; i <values.length; i ++){
query.setParameter(i、values [i]);
}
リスト結果= query.setfirstreSult(offset).setMaxResults(
pagesize).list();
結果を返します。
}
});
リストを返す;
}
}
java.util.Listをインポートします。
com.b510.album.dao.photodaoをインポートします。
com.b510.album.enhance.hongtenhibernatedaosupportをインポートします。
com.b510.album.model.photoをインポートします。
com.b510.album.model.userをインポートします。
/**
*
* @author ホンテン
*
*/
@suppresswarnings( "unchecked")
パブリッククラスのPhotodaohibernateは、Hongtenhibernatedaosupportの実装を拡張します
Photodao {
/**
*識別属性に基づいて写真インスタンスをロードします
*
* @param id
*ロードする必要がある写真インスタンスのID属性値
* @return指定された識別属性に対応する写真インスタンス
*/
パブリックフォトゲット(整数ID){
return(photo)gethibernatetemplate()。get(photo.class、id);
}
/**
*指定された写真インスタンスを保持します
*
* @param写真
*持続する必要がある写真インスタンス
* @Photoインスタンスが持続した後のID属性値をReturn
*/
public Integer Save(写真写真){
return(integer)gethibernateTemplate()。save(photo);
}
/**
*指定された写真インスタンスを変更します
*
* @param写真
*変更する必要がある写真インスタンス
*/
public void update(写真写真){
gethibernateTemplate()。更新(写真);
}
/**
*指定された写真インスタンスを削除します
*
* @param写真
*削除する必要がある写真インスタンス
*/
public void delete(写真写真){
gethibernateTemplate()。delete(photo);
}
/**
*識別属性に基づいて写真インスタンスを削除します
*
* @param id
*削除する必要がある写真インスタンスの識別属性値
*/
public void delete(integer id){
gethibernateTemplate()。delete(get(id));
}
/**
*すべての写真インスタンスをクエリします
*
* @returnデータベース内のすべての写真インスタンス
*/
public list <photo> findall(){
return(list <photo>)gethibernateTemplate()。find( "from photo");
}
/**
*指定されたユーザーに属する写真をクエリし、ページングコントロールを実行する
*
* @paramユーザー
*写真が属するユーザーをクエリします
* @Param Pageno
*指定されたページが照会されます
* @Queried写真をRETURN
*/
パブリックリスト<Photo> FindByUser(ユーザーユーザー、int pageno){
int offset =(pageno -1) * page_size;
//ページングクエリの結果を返します
return(list <photo>)findbypage( "Photo B Where B.User =?"、user、
offset、page_size);
}
}
java.util.Listをインポートします。
com.b510.album.dao.userdaoをインポートします。
com.b510.album.enhance.hongtenhibernatedaosupportをインポートします。
com.b510.album.model.userをインポートします。
/**
*
* @author ホンテン
*
*/
@suppresswarnings( "unchecked")
パブリッククラスのuserdaohibernateは、Hongtenhibernatedaosupportの実装を拡張します
userdao {
/**
*識別属性に基づいてユーザーインスタンスをロードします
*
* @param id
*ロードする必要があるユーザーインスタンスのID属性値
* @returnユーザーインスタンス指定された識別属性に対応する
*/
パブリックユーザーget(integer id){
return(user)gethibernatetemplate()。get(user.class、id);
}
/**
*指定されたユーザーインスタンスを保持します
*
* @paramユーザー
*持続する必要があるユーザーインスタンス
* @ユーザーインスタンスが持続した後のID属性値をReturn
*/
public Integer Save(ユーザーユーザー){
return(integer)gethibernateTemplate()。save(user);
}
/**
*指定されたユーザーインスタンスを変更します
*
* @paramユーザー
*変更する必要があるユーザーインスタンス
*/
public void update(ユーザーユーザー){
gethibernateTemplate()。update(user);
}
/**
*指定されたユーザーインスタンスを削除します
*
* @paramユーザー
*削除する必要があるユーザーインスタンス
*/
public void delete(ユーザーユーザー){
gethibernateTemplate()。delete(user);
}
/**
*識別属性に基づいてユーザーインスタンスを削除します
*
* @param id
*削除する必要があるユーザーインスタンスの識別属性値
*/
public void delete(integer id){
gethibernateTemplate()。delete(get(id));
}
/**
*すべてのユーザーインスタンスをクエリします
*
* @returnデータベース内のすべてのユーザーインスタンス
*/
public list <user> findall(){
return(list <user>)gethibernateTemplate()。find( "from user");
}
/**
*ユーザー名に基づいてユーザーを見つけます
*
* @param名
*見つけるユーザーのユーザー名
* @return見つかったユーザー
*/
パブリックユーザーfindbyname(string name){
リスト<ユーザー>ユーザー=(リスト<ユーザー>)gethibernateTemplate()。find(
「ユーザーuからu.name =?」、名前);
if(users!= null && users.size()== 1){
return users.get(0);
}
null を返します。
}
}
java.util.Listをインポートします。
com.b510.album.model.photoをインポートします。
com.b510.album.model.userをインポートします。
/**
* Photodaoインターフェイス
*
* @author ホンテン
*
*/
パブリックインターフェイスPhotodao {
//定数を使用して、各ページに表示される写真の数を制御します
final int page_size = 8;
/**
*識別属性に基づいて写真インスタンスをロードします
*
* @param id
*ロードする必要がある写真インスタンスのID属性値
* @return指定された識別属性に対応する写真インスタンス
*/
写真get(integer id);
/**
*指定された写真インスタンスを保持します
*
* @param写真
*持続する必要がある写真インスタンス
* @Photoインスタンスが持続した後のID属性値をReturn
*/
Integer Save(写真写真);
/**
*指定された写真インスタンスを変更します
*
* @param写真
*変更する必要がある写真インスタンス
*/
void update(写真写真);
/**
*指定された写真インスタンスを削除します
*
* @param写真
*削除する必要がある写真インスタンス
*/
void delete(写真写真);
/**
*識別属性に基づいて写真インスタンスを削除します
*
* @param id
*削除する必要がある写真インスタンスの識別属性値
*/
void delete(integer id);
/**
*すべての写真インスタンスをクエリします
*
* @returnデータベース内のすべての写真インスタンス
*/
List <Photo> findall();
/**
*指定されたユーザーに属する写真をクエリし、ページングコントロールを実行する
*
* @paramユーザー
*写真が属するユーザーをクエリします
* @Param Pageno
*指定されたページが照会されます
* @Queried写真をRETURN
*/
List <Photo> FindByUser(ユーザーユーザー、int pageno);
}
java.util.Listをインポートします。
com.b510.album.model.userをインポートします。
/**
* userdaoインターフェイス
*
* @author ホンテン
*
*/
パブリックインターフェイスuserdao {
/**
*識別属性に基づいてユーザーインスタンスをロードします
*
* @param id
*ロードする必要があるユーザーインスタンスのID属性値
* @returnユーザーインスタンス指定された識別属性に対応する
*/
ユーザーget(integer id);
/**
*指定されたユーザーインスタンスを保持します
*
* @paramユーザー
*持続する必要があるユーザーインスタンス
* @ユーザーインスタンスが持続した後のID属性値をReturn
*/
Integer Save(ユーザーユーザー);
/**
*指定されたユーザーインスタンスを変更します
*
* @paramユーザー
*変更する必要があるユーザーインスタンス
*/
void update(ユーザーユーザー);
/**
*指定されたユーザーインスタンスを削除します
*
* @paramユーザー
*削除する必要があるユーザーインスタンス
*/
void delete(user user);
/**
*識別属性に基づいてユーザーインスタンスを削除します
*
* @param id
*削除する必要があるユーザーインスタンスの識別属性値
*/
void delete(integer id);
/**
*すべてのユーザーインスタンスをクエリします
*
* @returnデータベース内のすべてのユーザーインスタンス
*/
list <user> findall();
/**
*ユーザー名に基づいてユーザーを見つけます
*
* @param名
*見つけるユーザーのユーザー名
* @return見つかったユーザー
*/
ユーザーfindbyname(string name);
}
JARパッケージを追加した後、プロジェクトは比較的大きく見えます。
以下は添付ファイルです:ajax_jquery_album_jb51net.rar(ソースコードのダウンロード)