【java卒業設計】javaEE+SSM+MySqlをベースとしたBSアーキテクチャマイクロブログシステムの設計と実装(卒業論文+プログラムソースコード) - BSアーキテクチャマイクロブログシステム

javaEE+SSM+MySqlをベースとしたBSアーキテクチャマイクロブログシステムの設計・実装(卒論+プログラムソースコード)

皆さんこんにちは、今日は javaEE+SSM+MySql をベースにした BS アーキテクチャのマイクロブログ システムの設計と実装を紹介します 記事の最後には、この卒業研究の論文とソースコードのダウンロード アドレスを添付します。冒頭報告書のPPTテンプレートや論文弁論のPPTテンプレートなどをダウンロードする必要がある友人は、私のブログのホームページに入り、左下の列にあるセルフサービスのダウンロード方法を確認してください。

記事ディレクトリ:

1. プロジェクト紹介

  1. Weibo は、情報交換と共有のプラットフォームとして、この情報化時代において特に重要であり、人々が自由に情報を閲覧、公開して最新かつ話題の相談を得ることができ、そのタイムリーさとインタラクション性の高さで人々に人気を集めています。 Weiboはネチズンの間で、インターネット有名人やインターネットホットワードなどのマイクロブログ効果が徐々に形成されてきました.マイクロブログシステムはマイクロブログ本来の基本機能を実現するためにB/Sアーキテクチャを採用しています.以前のWeiboシステムでは、質問に対する報酬を追加し、ポイントを採用し、ユーザーエクスペリエンスを向上させるためのその他の新機能、バックグラウンド管理でWeiboとユーザーの包括的な管理を実現実装技術の面では、ページはJSP、JavaScript、ajaxなどのテクノロジーを使用して、システムページとユーザーの相互作用を向上させますバックグラウンドで Java 言語を使用し、サーバーとして Tomcat サーバーが使用され、特定の機能を実現するために SSM フレームワークが使用され、データベースにデータを保存するために Oracle データベースが使用されます。
  2. B/S アーキテクチャに基づくマイクロブログ システムの主な機能には、ユーザーのログインとログアウト、ユーザー情報の保守、マイクロブログの公開、友人の注目、質問の投稿などが含まれます。システム構造は以下の通りです。
    (1) ユーザーモジュール:
    ログイン機能の実現
    、ユーザーログインの終了
    、ユーザー登録の実現
    、登録ユーザー情報の変更の実現
    (2) Weibo モジュール:
    公開、変更、および変更の機能を実現Weiboの閲覧、
    Weiboの実現 運営ユーザーは、Weibo上で個人のWeibo、友達のWeibo、お気に入りのWeiboやその他の情報、いいね、再投稿、お気に入り、コメント、削除などの情報を閲覧することができます (3) 友達モジュール:ユーザーの注目度、フォロワー数+1を実現します、
    ファン
    + 1. フォロー解除、ブロックユーザー、プライベートメッセージ検索ユーザーなど
    (4) コンチモジュール:
    質問投稿、質問回答、ポイント増加などを実現
    (5) バックグラウンド管理者モジュール
    管理者ログイン
    とバー利用を実現Weiboを表示するグラフ、ユーザーの統計結果、コメント、コンチ、コメント、回答など
    ユーザー検索、ユーザー禁止
    Weibo検索、Weibo削除
    コンチ検索、コンチ削除

2. リソースの詳細

プロジェクトの難易度: 中難易度該当するシナリオ: 卒業設計
関連トピックに関する
サポートペーパーワード数: 28461 ワード、77
ページ 内容: ソースコード一式 + 卒業論文一式 + 弁論 PPT + タスクブック + 個別指導ビデオ + 実行中のスクリーンショット


3. キーワード:

Weibo、B/S アーキテクチャ、Java、SSM フレームワーク、Oracle、

4. 簡単な紹介:

注意: 以下は卒業プロジェクトの簡単な紹介です。プロジェクトのソース コードと完全な卒業論文のダウンロード アドレスは記事の最後にあります。

紹介
省略

そして、新浪微博は依然として独自の有名人効果を続けています。普通のアカウントは、ファンの注目がなければ、他の人が微博を見るのは困難です。微博で助けを求める必要がある場合、「有名人のビッグV」はありません。他人に気づかれにくい。Weibo でサポートを求めたい場合は、Weibo がより多くのサービスを提供する必要があります。また、このシステムでは、ポイント還元機能を使用してユーザーが自分の質問に報酬を与えることができるため、より多くのユーザーが自分の質問に回答し、より多くの人の助けを得ることができます。

第2章 関連技術の紹介

2.1 アーキテクチャの概要
B/S アーキテクチャ (ブラウザ/サーバー、ブラウザ/サーバー モード): ブラウザをクライアントとして使用し、徐々に成熟した Web ブラウザ技術を使用し、ブラウザのさまざまな機能を組み合わせて使用​​するネットワーク構造モードです。以前の C/S (クライアント/サーブ) アーキテクチャではブラウザが複雑なクライアントとして機能し、C/S アーキテクチャを使用してユーザーのクライアントを統合し、ソフトウェア システムのコア機能をサーバーに集中させ、システムのアップグレードとメンテナンスを簡素化します。開発者はソフトウェア システムの更新と保守のためにサーバーを管理するだけで済み、B/S アーキテクチャによってもたらされる多くの利点により、B/S アーキテクチャは将来の情報化開発の主流の方向になります。

MVC モード: モデル (Model)、ビュー (View)、およびコントローラー (Controller) はソフトウェア開発の設計パターンであり、モデルは主に分離されたビジネス ロジックのデータ相互作用を担当し、ビューは主にデータの送信と表示を担当し、コントローラーは主にデータの送信と表示を担当します。主にリクエストの取得とリクエストの転送を担当します。

SSM フレームワーク (SpringMVC+Spring+Mybatis): これら 3 つのオープン ソース フレームワークで構成される Web プロジェクトのフレームワークは、標準の MVC モデルです。Spring MVC はリクエストの転送とビュー管理を担当します。Spring はビジネス オブジェクト管理とトランザクション制御を実装します。Mybatis はサービスを提供します。以前に普及した SSH (Struts+Spring+Hibernate) フレームワークと比較して、SSM は軽量フレームワークとして、小規模および中規模のプロジェクトの開発に適しています。

2.2 主要なテクノロジの紹介
フロントエンド テクノロジ:
1. JSP (Java Server Pages): Java コードが埋め込まれた HTML ページ。本質的にはサーブレットであり、<% %> 形式を使用して htmld 構文で Java コードの拡張を実装します。 。

2. JavaScript: 弱い型指定のスクリプト言語であり、次の 3 つの部分で構成されます。ECMAScript は、JavaScript、ドキュメント オブジェクト モデル (DOM)、およびブラウザ オブジェクト モデル (BOM) の基本オブジェクトと構文を記述します。

3. Ajax (非同期 JavaScript および XML): 非同期 JavaScript および XML、フロントとバックの間の非同期対話を実現し、ページ全体を再読み込みせずにページ上の一部のコンテンツを部分的に更新します。

背景技術:
1.java: オブジェクト指向プログラミング言語。主な特徴は次のとおりです。 (1) 単純さ: C++ の複雑な構文とポインターの多重継承を放棄することで、開発者は基礎となる最適化に注意を払う必要がなく、必要なのは、ビジネスロジックに注目するだけで十分です。(2) オブジェクト指向では、プログラマは対応するデータとデータの処理方法に注目するだけでよく、厳密にプロセスに従ってコードを記述する必要はありません。 Java 言語はオブジェクト指向であるため、オブジェクト指向、継承、カプセル化、ポリモーフィズムの 3 つの主要な特徴を備えています。 (3) クロスプラットフォーム。Java 言語のクロスプラットフォームはクロスプラットフォームでもあります。 JVM(Java仮想マシン)のこと。Java ファイルがコンパイルされた後、マシンが直接実行するバイナリ ファイルを直接生成するのではなく、クラス ファイルにコンパイルされ、JVM はさまざまなオペレーティング システム上の JVM に従って、対応するシステムのバイナリ ファイルを生成します。コンパイルは一度だけ行う必要があり、さまざまなプラットフォームで実行できます。

2. SpringMVC: Spring フレームワークによって提供されるモジュールであり、MVC パターンを実装してデータ、ビジネス、プレゼンテーションを分離することで Web 開発を簡素化します。他の MVC フレームワークと同様に、リクエスト駆動で転送を制御します。そのコアとなるサーブレットは、リクエストをコントローラに分散するために使用されるフロント コントローラである DispatcherServlet です。Spring フレームワークと完全に統合されています。これにより、SpringMVC は非常に人気のある MVC フレームワークになります。

3. Spring: 軽量の Java 開発フレームワークである Spring フレームワークは階層化されたアーキテクチャを備えているため、Spring の独立した部分を使用できます。そして、そのアーキテクチャは依然として本質的に安定しています。Spring は、3 層アーキテクチャの各層を介して実行される J2EE アプリケーションの各層にソリューションを提供しますが、Spring は依然として他のフレームワークとの互換性が非常に高いです。このプロジェクトは主に Spring の IOC を使用します ( の反転Control) および AOP (アスペクト指向プログラミング) モジュール。

4. Mybatis: Java 永続層を簡素化する軽量のオープンソース フレームワークです。また、アノテーション マッパーをサポートしており、Mybatis では JDBC コードの大部分が削除され、Java オブジェクトをデータベースに永続化するプロセスが容易になります。他の Java 永続化フレームワークと比較して、Mybatis には多くの JDBC 冗長性が排除されるという利点があります。コードの残りの部分、習得が簡単で、目に見える SQL ステートメントにより、Spring との統合が可能になり、パフォーマンスが向上します。

2.3 開発ツール
Tomcat サーバー: これは Web アプリケーション サーバーであり、軽量でオープン ソースであり、中小規模の Web プロジェクトや開発、デバッグ、学習に最適です。

Oracle Database (Oracle Database): Oracle Corporation によって開発されたリレーショナル データベースです。商用アプリケーション用の最初のリレーショナル データベースです。システムは使いやすく、強力で、移植性に優れています。大・中・小規模の様々な環境に適しており、ビッグデータ時代の分散データベースとして、充実したデータ管理機能、充実したリレーショナルデータベース、分散処理機能を備え、分散処理の機能を実現します。

Eclipse 開発ツール: Java オープン ソースに基づく拡張可能な開発プラットフォーム。これには、Java 統合開発環境だけでなく、SVN、CVS、およびプラグインを開発する他のチームなどのプラグイン開発環境も含まれます。

2.4 この章の概要
この章では、開発プロジェクトで使用される主要なテクノロジー、プロジェクトで使用されるアーキテクチャとデザイン パターン、プロジェクトで使用される主要なフレームワーク テクノロジー、プロジェクトで使用されるフロントエンド テクノロジーと表示方法を主に紹介します。ブラウザ側でのプロジェクト表示、バックグラウンドコードで使用する開発言語、使用するサーバーテクノロジ、データ永続層で使用するデータベースなど、開発に使用する開発ツールについては本章の最後で紹介します。

第 3 章 システム要件の分析

3.1 実現可能性分析
3.1.1 技術的実現可能性
既存の技術に関しては、クライアントを統合し、バージョンアップやメンテナンスによる複雑さを解消するために、プロジェクトの実現において成熟した B/S アーキテクチャを採用することは完全に実現可能です。開発言語とフレームワークに関しては、強力な Java および j2ee システムにより、開発者は Web プロジェクトを慎重に構築でき、一連のオープンソース フレームワークはプロジェクトの実現可能性に対する強力な基盤を提供します。サーバー Tomcat が使用されており、この小さなプロジェクトの通常の使用をサポートするには十分であり、継続的に開発されているフロントエンド テクノロジとフロントエンド フレームワークにより、美しいフロントエンド ページを作成し、ユーザー エクスペリエンスとインタラクションを向上させることができます。プロジェクトのページ表示テクノロジー 強力なリレーショナル データベースは、プロジェクト データの永続性によって強力な裏付けを提供します。要約すると、ますます成熟する Java および j2ee システム、完全にオープンソースの Java フレームワークとサーバー、強力なリレーショナル データベース、およびユーザー インタラクション ページを提供する Web フロントエンド テクノロジの使用により、このプロジェクトは技術的に実現可能です。

3.1.2 経済的実現可能
性 省略

3.1.3 運用実現可能性の
省略

3.2 要件分析
3.2.1 全体的なシステム要件
Weibo システムは主にフロントエンド ユーザー モジュールとバックグラウンド管理モジュールで構成されており、ユーザーはホームページに入るときにログインするかどうかを選択できます。既存のアカウントでログインすることも、新しいアカウントを登録することもできます。ユーザーがログインしていない場合、最近更新された人気の Weibo がホームページに表示され、ログインしているユーザーは、自分がフォローしているユーザーの最近更新された Weibo をホームページで見ることができます。

非ログインユーザーは、Weibo 情報の検索と閲覧、ユーザーのホームページへのアクセスのみが可能ですが、ログインユーザーは、システムにログインした後、署名、性別などの基本情報を変更することができ、パスワードや機密情報も変更できます。ユーザー情報を確認した後。ユーザーのアバターやパスワードの変更、自分のホームページの編集、いいね、コメント、ブックマークなどの機能のほか、ユーザーのフォロー/フォロー解除、ユーザーのブロック、プライベートチャットなどの操作も行えます。

バックグラウンド管理者は、ユーザー、マイクロブログ、コメント、コンチ、回答の総量、最新のデータベース、先週のデータ量など、システムのすべてのデータを表示できます。具体的な機能としては、悪質なWeibo情報や悪質なアカウントの管理、Weibo、Weiboのコメント、コンチ、回答などの情報の削除と復元、悪質なアカウントのブロックなどが挙げられる。

ミニブログ検索モジュール: ユーザーはキーワードを入力して、対応するマイクロブログまたはユーザーを見つけることができます。
ミニブログ公開モジュール: ユーザーは投稿をクリックし、コンテンツ内に送信したいコンテンツを追加します。絵文字を選択したり、写真を挿入したりできますが、入力できる文字数には制限があり、文字を挿入することもできます。同時に写真も。

Weibo コメント モジュール。ユーザーは Weibo コメントを表示したり、Weibo コメントを投稿したりできます。

マジックコンチモジュール:主にユーザーから寄せられたさまざまな質問を記録するために使用されるマジックコンチをユーザーが公開し、他のユーザーが質問を閲覧して回答することができ、回答者の回答が質問者に採用された場合、回答者は自分の回答を追加することができます。コンチポイントは、コンチポイントごとにコンチタイトルが異なります。

ポイントモジュール:ユーザーは毎日ログイン、Weibo投稿、タスクなどを行うことでポイントを増やすことができますポイントごとに称号が異なりますマジックコンチモジュールのポイントには称号があり、ユーザー名の後ろに称号が表示されます。

フレンドモジュール: ユーザーはシステム内の他のユーザーを表示し、お気に入りのユーザーを見つけてフォローすることができ、フォローした後、フレンドモジュールでフォローしているユーザーや、友人が公開した最近の Weibo やその他の情報を閲覧することができます。友達にプライベートメッセージを送信したり、友達にプライベートメッセージを送信したりすることもできます。

3.2.2 ユースケース図の要件
1. ユーザーは、システムにログインするか、ユーザーとして登録するかを選択でき、パスワードを忘れた場合は、秘密の質問を通じてパスワードをリセットできます。
ここに画像の説明を挿入

図 3.1 ユーザーの初期ユースケース図

2. ユーザーは、ログイン後、ユーザーの基本個人情報の管理、ユーザーの基本情報の変更、およびユーザーの機密情報の変更を行うことができます。ユーザーのアバターやその他の機能を変更します。
ここに画像の説明を挿入

図 3.2 ユーザー情報管理のユースケース図

3. ユーザーマイクロブログ管理システムは、ユーザーがシステムにログインすると、ホームページにマイクロブログを公開し、キーワードを通じてマイクロブログコンテンツ内のキーワードのマイクロブログ情報を検索できます。個人の Weibo、友達の Weibo、おすすめの Weibo の表示など、Weibo を表示します。
ここに画像の説明を挿入

図 3.3 Weibo 管理のユースケース図

4. コメント管理、コメント管理は Weibo モジュールに依存しており、ユーザーは Weibo 上のコメントを表示したり、Weibo 情報にコメントを投稿したり、自分のコメントを削除したりできます。
ここに画像の説明を挿入

図 3.4 Weibo コメント管理のユースケース図

5. コンチの管理 ログイン後、コンチモジュールにコンチの質問を投稿できます 質問を投稿する際に、報酬ポイント数を選択して自分のポイントを減らすことができます 他の人のコンチの質問に回答して参加することもできますを承認すると、ユーザーが付与したポイント数を獲得できます。
ここに画像の説明を挿入

図 3.5 Conch 管理のユースケース図

6. 友達管理。ユーザーはログインすると、システムに従って友達を推奨したり、ユーザーを検索したり、ユーザーのホームページを表示したり、ユーザーを追加またはフォロー解除したり、ユーザーにプライベート メッセージを送信したり、ユーザーをブロックしたりできます。
ここに画像の説明を挿入

図 3.6 フレンド管理のユースケース図

7. メッセージ通知、ユーザーが Weibo のコメント、いいね、お気に入りに注目すると、メッセージ通知が呼び出されます。
ここに画像の説明を挿入

図 3.7 フレンド管理のユースケース図

8. 管理者: 管理者は、システムにログインすることにより、Weibo ユーザーを管理し、悪質なユーザーのアカウントを禁止および取り消し、ユーザーのステータスを復元することもでき、同時に、管理者は Weibo の削除、削除の復元など、Weibo 情報を管理することもできます。図 3.2 に示すように、管理者などによって削除されたマイクロブログのコメントを復元します。
ここに画像の説明を挿入

図 3.8 管理者の使用例図

第 4 章 システム機能設計
4.1 システムクラス分析
4.1.1 エンティティクラス
エンティティクラスは主にデータ転送に使用され、主に User、Friend、PointAction、PointRecord、Weibo、WeiboCollect、WeiboComm、WeiboLike、WeiboTrans などが含まれます。 ユーザー クラスには、ユーザー Basic が含まれます。 Weibo カテゴリには Weibo の基本情報とエンティティ ユーザー カテゴリが含まれ、友人カテゴリには友人番号、友人作成時刻、双方のユーザー カテゴリなどが含まれます。マイクロブログ コレクション クラスには、次のようなコレクション属性が含まれます。お気に入りのマイクロブログ クラスとユーザー ID、マイクロブログ コメント クラスにはマイクロブログ クラス、ユーザー クラス、コメント コンテンツなどの属性が含まれ、マイクロブログ転送クラスにはユーザー クラス、マイクロブログ クラス、転送時間などの属性が含まれ、Weibo のいいねカテゴリには次のものが含まれます。 Weibo カテゴリ、ユーザー カテゴリ、いいねの時間などの属性。エンティティクラス間のクラス関連関係を図 4.1に示します。
ここに画像の説明を挿入

図4.1 Bean層のクラス図

4.1.2 コントローラクラスに
は、コントローラ層に MainController、WeiboController、FrendController、AdminController の 4 つの JAVA クラスが含まれており、SpringMVC フレームワークでは主にブラウザからサーバに送信されたリクエストを受信し、データの処理や制御を行うために使用されます。リクエストの転送 取得したデータをブラウザに応答します。MainController は主に、ユーザー関連ページから送信されたフォームまたはリンク要求を受信し、要求されたパラメーターをコントローラー内の対応するメソッドに渡し、データ応答をブラウザーに渡し、データ、特定の属性、およびメソッドをブラウザーに表示するために使用されます。側面 図 4.2 に示すように。
ここに画像の説明を挿入

図 4.2 ユーザーコントローラーのクラス図

WeiboController は主に、関連する Weibo ページから送信されたフォームまたはリンク要求を受信し、要求されたパラメーターをコントローラーの対応するメソッドに渡し、ビジネス処理層で返されたデータを取得し、データ応答をブラウザーに送信してデータを表示するために使用されます。ブラウザ側の具体的なプロパティとメソッドを図 4.3 に示します。
ここに画像の説明を挿入

図 4.3 Weibo コントローラーのクラス図

FriendController は主に、友人関連ページから送信されたフォームまたはリンク要求を受信し、要求されたパラメーターをコントローラーの対応するメソッドに渡し、ビジネス処理層で返されたデータを取得し、データ応答をブラウザーに送信するために使用されます。ブラウザ側でデータを表示するための具体的なプロパティとメソッドを図 4.4 に示します。
ここに画像の説明を挿入

図 4.4 フレンド コントローラのクラス図

AdminController は主に、管理者の関連ページから送信されたフォームまたはリンク要求を受信し、要求されたパラメーターをコントローラーの対応するメソッドに渡し、ビジネス処理層で返されたデータを取得し、データ応答をブラウザーに送信するために使用されます。ブラウザはブラウザ側のデータを表示しますが、具体的なプロパティとメソッドを図 4.5 に示します。
ここに画像の説明を挿入

図 4.5 管理コントローラのクラス図

4.1.3 ビジネス ロジック クラス
Service 層には、図 4.6 に示すように、ユーザーの登録、ログイン、個人情報の変更などのユーザー業務を処理する IUserService を含む、主に 4 つの Service インターフェイスとその実装クラスが含まれます。IWeiboService は、図 4.7 に示すように、Weibo の検索、Weibo の公開、Weibo の削除、および「いいね!」やコメントなどの Weibo 上の関連操作など、Weibo 関連のビジネスを処理するために使用されます。IFriendService は、図 4.8 に示すように、いいね、いいねのキャンセル、プライベート メッセージ、ブラックリスト登録、その他の機能など、ユーザーの友達に関連するビジネスを処理するために使用されます。IAdmoinService は、図 4.8 に示すように、管理者ログイン、チャート表示、ユーザー管理、Weibo 管理、コンチ管理機能など​​、管理者に関わる業務を行うために使用されます。
ここに画像の説明を挿入

図4.6 ユーザー業務処理クラス図

ここに画像の説明を挿入

図 4.7 Weibo ビジネス処理クラス図
ここに画像の説明を挿入

図 4.8 Weibo コントローラーのクラス図

4.1.4 データベース対話クラス
システムは MyBatis 永続フレームワークを採用しているため、開発者はデータベースとデータベース間の特定の JDBC コードを意識する必要はなく、ビジネス ロジックを処理するだけでよいため、メソッドを宣言するだけで済みます。 Dao 層インターフェイスを記述せずにインターフェイスの実装クラスは、対応する設定ファイルを設定することでメソッドを実装し、設定ファイル内の対応するインターフェイス メソッドに SQL ステートメントを書き込み、データベースと対話します。

4.2 主要なビジネス設計
4.2.1 ログインシステム
ここに画像の説明を挿入

図4.9 システムログインシーケンス図

ユーザーがホームページにアクセスした後、左側で登録ユーザーを選択するか、右側でシステムにログインできます。登録モジュールでは、ユーザーはユーザーのメールアドレス、パスワード、ニックネームなどの情報を入力します。メール アドレスを入力すると、ユーザーが入力したメール アドレスが Ajax を通じてバックグラウンドに送信されます。ユーザーのメール アドレスが登録されているかどうかを確認します。登録されている場合は、ページでメール アドレスが登録されていることを確認するメッセージが表示されます。基本情報を入力して「登録」をクリックすると、ユーザー登録情報が保存されます。

ログイン機能は、ユーザーがメールアドレスとパスワードを入力し、ログインをクリックした後、次の自動ログインパスワードをクリックした場合、ユーザーの現在のログイン時刻と最終ログイン時刻が同日であるかどうかを判断し、そうでない場合は、 、ユーザーポイントのログイン時間を追加し、Weibo ホームページにジャンプします。

4.2.1 ユーザー情報システム
ここに画像の説明を挿入

図4.10 ユーザ変更情報シーケンス図

ユーザーの基本情報: システムのホームページで個人アカウント設定をクリックすると、ユーザーの基本情報を変更するページにジャンプします。ユーザーはそこでこれらの基本情報を変更し、変更した情報をデータベースに保存できます。

パスワードの変更: ユーザー プロフィール ページで [パスワードの変更] をクリックし、パスワードの変更ページに移動します。ユーザーはユーザーの現在のパスワードを入力できます。システムはパスワードが正しいかどうかを判断し、パスワードが間違っている場合は、直接パスワードが表示されます。 -face パスワード エラー。パスワードが正しい場合、ユーザーは新しいパスワードを入力し、[変更] をクリックして、変更したパスワードをデータベースに更新できます。

ユーザーアバターの変更: クリックしてユーザープロフィール内のアバターを変更し、アバター変更用のページにジャンプし、ユーザーがアバターファイルを選択し、アップロードをクリックすると、ユーザーアバターがサーバーに保存されます。アバターはシステムのデフォルトのアバターです。そうでない場合は、ユーザーを削除します。前のアバター画像の場合は、「変更」をクリックして、変更したアバターのアドレスをデータベースに保存します。

パスワードの変更: ユーザーはまず、以前に設定したセキュリティの質問に従って答えを入力する必要があります。セキュリティの答えが間違っている場合、ユーザーはセキュリティの答えが間違っていることを示すメッセージが表示されます。セキュリティの答えが正しければ、ユーザーは入力できます。新しい秘密の質問と答え。[変更] をクリックして、ユーザーの新しい秘密の質問と答えを保存します。

4.2.2 Weiboモジュール
ここに画像の説明を挿入

図4.11 システムログインシーケンス図

Weibo の公開: ユーザーは、ホームページで Weibo を公開したり、Weibo 情報に絵文字を挿入したり、写真の挿入を選択したりできます。ユーザーが「公開」をクリックすると、ブラウザーは、トップページのフォームに Weibo 情報と写真情報をアップロードするリクエストを送信します。それをバックグラウンドコントローラーに保存し、画像情報をサーバーに保存し、画像パスのみをデータベースに保存し、最後にWeibo情報をデータベースに保存します。

Weibo の検索: ユーザーはホームページの検索ボックスに Weibo で言及されているコンテンツを入力して検索でき、システムはファジー クエリを通じてデータベース内の関連する Weibo 情報を照会します。検索されたページをページ上に表示し、キーワードを赤字で表示します。

Weibo の操作: ユーザーは Weibo 上で個人の Weibo、友達の Weibo、お気に入りの Weibo およびその他の情報を表示し、いいね、再投稿、お気に入り、コメント、削除などを行うことができます。

4.2.3 フレンドモジュール
フォロー機能:ユーザーはシステムにログインすると、ページ右側のおすすめユーザーからフォローするユーザーを選択するか、ページ上の検索機能でユーザーを検索してフォローすることができます。検索されたユーザー。ユーザーをフォローすると、個人的な注目度が +1 され、フォローしたユーザーのファンの数が +1 されます。

フォローを解除: 機能タイプをフォローし、ナビゲーション バーで友達をクリックし、友達のホームページで友達を確認します。フォローしているすべての友達、友達の数、個人情報を確認できます。対応するフォロー解除をクリックすると、フォローを解除できます。ユーザーのフォローを解除すると、個人のフォロワー数は -1 になり、フォローされているユーザーのフォロワー数は -1 になります。

ユーザーのブロック: フレンドテーブル内の対応するレコードステータスを変更することで、ブロックされたユーザーが公開したプライベートメッセージとWeibo情報はブロックされたユーザーには表示されなくなります。

プライベート メッセージ: ページ上の推奨ユーザーで、現在ログインしているユーザーの未読プライベート メッセージの数を表示できます。未読のプライベート メッセージの数は、現在ログインしているすべての受信者のすべてのプライベート メッセージのデータベースを通過します。ユーザー内で情報ステータスが未読の場合、取得した値がフロントページに表示されます。

プライベート メッセージの送信: ユーザーは最初に送信するユーザーを選択し、送信するプライベート メッセージ情報を入力し、プライベート メッセージに絵文字を挿入することができます。送信をクリックすると、プライベート メッセージ情報が該当するユーザーに送信されます。同時に、ユーザーにメッセージを表示する未読のプライベート メッセージの数を増やします。

ユーザーの検索: ユーザーの検索ページでは、ユーザーのニックネームのキーワードを入力して関連するユーザーを曖昧に検索し、検索されたユーザーをページ上に表示し、ユーザーが入力したキーワードを赤色でマークすることができます。

ユーザーのホームページ: ページ上でユーザーの名前またはプロフィール写真をクリックすると、該当するユーザーの個人ホームページにジャンプします。ユーザーの個人ホームページには、ユーザーの個人情報とユーザーの最新の Weibo が新しい順に並べて表示され、ユーザーも見ることができますWeiboの「いいね」、転送、コメント、お気に入りを操作します。

4.2.4 コンチモジュール
の公開: ナビゲーションバーのマジックコンチをクリックしてコンチホームページにアクセスし、コンチページの上部にはコンチを公開するための質問ボックス、その下に挿入できる絵文字ボタン、報酬ポイントが表示されます質問については、中央のナビゲーション バーを使用して、最新リリース、解決済み、解決予定、私のコンクのさまざまなフィルター条件を表示することを選択できます。

コンチの質問を見る:ユーザーがコンチの質問をクリックすると、そのコンチのユーザー名、ユーザー名、リリース日、コンチの質問、報酬ポイント、質問ステータスなど、コンチの詳細情報を表示するページにジャンプします。上に投稿ユーザー、中段に表示 質問に対する回答情報、回答者のユーザー名、タイトル、回答内容、回答日、承認の有無などの全情報が表示されます。

コンチの質問に回答する:コンチの質問の詳細情報ページの下部にあるコンチの質問に回答し、入力ボックスに回答を入力したり、絵文字情報などを入力して返信をクリックすると、回答情報がデータベースに保存されます。

質問への回答を承諾する:コンチクエスチョンのトップページで、「マイコンチクエスチョン」をクリックすると、ユーザーが投稿したコンチクエスチョンのページにジャンプし、自分が投稿したコンチクエスチョンのページで、自分が思う回答を選ぶことができます。コンチのステータスを変更するを承認をクリックすると、承認された回答が承認された回答となり、採用者のコンチポイントが増加します。

4.2.5 バックグラウンド管理者モジュール
管理者ログイン: 管理者は、ログイン ページで管理者ログインをクリックして、管理者ログイン ページにジャンプできます。管理者がアカウント情報とパスワード情報を入力した後、ユーザー名とパスワードが正しければ、管理者のホームページにジャンプします。間違っている場合はプロンプトを表示します。

管理者ホームページ:管理者ホームページの上部にナビゲーションバーが表示され、ページ内容としては、Weibo、ユーザー数、コメント数、コンチ数、コメント数、回答数などの総数と、投稿数を4つのグラフで表示します。下の棒グラフは今日から過去 7 日間の数値を表示します。

ユーザー管理ホームページ:ページ上部にナビゲーションバーを表示し、ページ内容にはすべてのユーザーID、メールアドレス、ニックネーム、登録日、最終ログイン日、ユーザーステータスが表示されます。ユーザー数の多さと利便性を考慮し、検索では、ユーザーデータを10件ずつページ上に表示するとともに、ユーザーのニックネームなどのキーワードを入力してユーザーを検索できるユーザー検索機能を追加し、曖昧な検索にも対応します。ユーザーの検索:ユーザー管理ページでユーザーのニックネームにキーワードを入力してユーザーを検索すると、取得したユーザー情報のうちニックネームが入力キーワードとなっている部分が赤字で表示されます。

ユーザーの禁止: 管理者は、ユーザー管理ページの操作欄にある禁止ボタンをクリックして、違反したユーザーを禁止します。管理者は、禁止する日数を入力できます。この日付より前に、ユーザーは正常にログインできなくなり、管理者は、「ブロック解除」をクリックして、事前にユーザーのブロックを解除できます。

Weibo管理ホームページ:管理者はナビゲーションバーのWeibo管理をクリックすると、システムはユーザーのWeibo管理ページにジャンプし、システムで使用されているWeibo情報が表示されます。管理者はまた、Weiboコンテンツにキーワードを入力してWeiboを検索することもできます。 、悪い情報のあるWeiboを削除したり、削除されたWeiboを復元したりすることができます。

ミニブログ検索: 管理者は、マイクロブログ コンテンツにキーワードを入力することで、マイクロブログ コンテンツ内のキーワードを含むマイクロブログを検索できます。検索されたマイクロブログ コンテンツ内のキーワードは赤色でマークされます。

Weibo削除:管理者はWeibo管理ページでWeiboの内容に応じて違法か否かを判断し、Weibo情報に悪質な情報が含まれている場合、管理者は操作バーの削除ボタンを通じてWeiboを削除することができます。 . 削除されたマイクロブログを復元することもできます。

Conch Management Homepage: 管理者は、ナビゲーション・バーの「Conch Management」をクリックして、「Conch Management」ページにジャンプします。ナビゲーション・バーはページの上部にあり、ページのコンテンツには、すべての Conch 情報、Conch 検索ボックス、およびページネーション・ボックスが表示されます。以下、コンチ情報 番号、発行者名、コンチの内容、発行日、コンチのステータス、コンチが実行できるアクションが含まれます。

コンチ検索:コンチ管理のホームページでは、コンチの数が多くて問題を見つけるのが難しいため、検索機能を設けており、管理者がコンチの検索ボックスにコンチの内容に含まれるキーワードを入力して検索することができます。巻貝問題の場合 検索表示の場合 結果が得られると、検索キーワードが赤字で表示され見やすくなります。

4.3 データベース設計
4.3.1 概要
マイクロブログ システム データベース テーブルには主に以下が含まれます。
1. ユーザー テーブル: 番号、ニックネーム、名前、パスワードなどのユーザーの個人情報を保存するために使用されます。メールボックスおよびその他の情報については、表 4-1 に示すように、ユーザー番号を主キーとして使用します。

2. マイクロブログフォロワーテーブル: 表 4-2 に示すように、フォロワー ID を主キーとして、ユーザーのフォロワー情報を保存するために使用されます。

3. Weibo テーブル: 表 4-3 に示すように、Weibo 番号を主キーとして、Weibo のリリース時間、Weibo のコンテンツ、Weibo のいいね数、リツイート、お気に入りの数などの Weibo 情報を保存するために使用されます。

4. マイクロブログ収集テーブル: 表 4-4 に示すように、マイクロブログ番号、収集時間など、収集番号を主キーとしてユーザーが収集したマイクロブログ情報を保存するために使用されます。

5. コメントテーブル: 表 4-5 に示すように、コメント ID を主キーとして、コメント投稿者 ID、コメント日付、コメント内容などの Weibo コメント情報を保存します。

6. ポイントテーブル: 表 4-6 に示すように、毎日のログインや Weibo への投稿などによるポイントの取得など、ユーザーがポイントを取得する方法をポイント番号を主キーとして保存するために使用されます。

7.いいねテーブル:Weiboのいいね情報を保存するために使用され、主にいいね数、いいね数、Weibo番号などの情報が含まれます。表 4-7 に示すように、同様の番号を主キーとして使用します。

8. ポイントフローテーブル:表 4-8 に示すように、ポイント番号を主キーとして、主にポイント番号、ユーザー番号、取得日などのユーザーが取得したポイントの情報を保存するために使用されます。

9. 転送テーブル: 表 4-9 に示すように、主に転送番号、転送者、Weibo 番号およびその他の情報を含む、ユーザーが転送した情報を保存するために使用され、転送番号を主キーとして使用されます。

4.3.2 概念設計
ユーザーは複数のマイクロブログを投稿できるため、図 4.12 に示すように、ユーザー テーブルとマイクロブログ テーブルの間には 1 対多の関係が存在します。
ここに画像の説明を挿入

図4.12 ユーザーテーブルとWeiboテーブルの対応

マイクロブログは複数の「いいね!」、「転送」、「お気に入り」、および「コメント」に対応することができるため、図 4.13 に示すように、マイクロブログ テーブルと「お気に入り」、「いいね!」、「転送」、および「お気に入り」テーブルとの間には 1 対多の対応関係があります。
ここに画像の説明を挿入

図4.13 WeiboテーブルとWeibo操作テーブルの対応

1人のユーザーが複数のコンチを投稿でき、各コンチの質問に複数のコメントを付けることができます。図4.14に示すように。
ここに画像の説明を挿入

図4.14 userテーブルとconchテーブルの対応

4.3.3 データベーステーブル
1. ユーザーテーブル: データベーステーブル名 USER_TAB、参照シーケンス名 SEQ_USER。

表 4-1 ユーザーテーブル
ここに画像の説明を挿入

2. 対象テーブル: データベーステーブル FRIEND_TAB、参照配列名 SEQ_FRIEND。

表 4-2 懸念フォーム
ここに画像の説明を挿入

3. Weibo テーブル: データベース テーブル名は WEIBO_TAB、参照インデックス名は SEQ_WEIBO です。

表 4-3 Weibo テーブル
ここに画像の説明を挿入

4. コレクションテーブル: データベーステーブル名 COLLECT_TAB、参照インデックス名 SEQ_COLLECT。

表 4-4 収集テーブル
ここに画像の説明を挿入

5. コメント テーブル: データベース テーブル名 COMM_TAB、参照インデックス名 SEQ_COMM。

表 4-5 コメントフォーム
ここに画像の説明を挿入

6. 統合テーブル: データベーステーブル名 INTEGRAL_TAB、参照インデックス名 SEQ_INTEGRAL。

表 4-6 統合テーブル
ここに画像の説明を挿入

7. 類似テーブル: データベーステーブル名 LIKE_TAB、参照インデックス名 SEQ_LIKE。

表 4-7 類似テーブル
ここに画像の説明を挿入

8. 統合フロー テーブル: データベース テーブル名 RECORD_TAB、参照インデックス名 SEQ_RECORD。

表 4-8 一体型流量計
ここに画像の説明を挿入

9. 転送テーブル: データベーステーブル名 TRANS_TAB、参照インデックス名 SEQ_TRANS。

表 4-9 転送テーブル
ここに画像の説明を挿入

第5章 システム機能の実現

5.1 ログインシステム システム
のログイン登録ページで、ユーザーがメールボックスに入ると、メールボックスは Ajax 経由でバックグラウンド コントローラーに送信され、サービス層の対応するメソッドが呼び出されます。サービス内で Dao 層インターフェイスが呼び出されます。ユーザーのメールボックスが登録されているかどうかを確認するメソッド。登録されている場合は、フロントエンド JavaScript を通じてページに表示され、メールボックスが登録されていることをユーザーに通知します。基本情報を入力して「登録」をクリックすると、ユーザーが入力した登録情報はブラウザを通じてバックグラウンドコントローラーに送信され、コントローラーはリクエストを制御し、ページを転送してユーザー登録情報をサービスに渡し、サービス内のユーザーのいくつかの基本情報を初期化します。図 5.1 に示すように、デフォルトのアバター、デフォルトのステータスとして、ユーザー ポイントおよびその他の操作を初期化し、ユーザー データ ソースをアセンブルし、Dao レイヤー メソッドを呼び出してユーザー登録情報を保存します。コアコードは次のとおりです。

user.setRegisterTime(nowDate());		//使用当前时间作为用户注册时间
	user.setLastLogin(nowDate());
	user.setBirthday("2017-1-1");
	User addUser = addIntegral(user, Constant.REGISTER);		//增加用户积分
	action = userDao.findIntegral(Constant.REGISTER);		//查找注册操作得到的PointAction
	record = new PointRecord(action, addUser.getEmail(), nowDate());
	addIntegralRecord(record);	//保存积分操作
userDao.saveUser(addUser); 	//保存用户注册信息

ログイン機能では、次の自動ログインパスワードをクリックすると、ログインをクリックした後、まずユーザー名とパスワード情報を業務処理のためにサービス層に渡し、次にDao層インターフェースを呼び出してメールアドレスとパスワード情報が正しいかどうかを判断します正しければ次回ログインをクリックし、メールボックス名とパスワードをブラウザのCookieに保存し、ログイン中のユーザーをセッションに保存し、ユーザーの現在のログイン時刻と最終ログイン時刻が同じかどうかを判定します。ユーザーのログインを処理するサービスの当日です。同日でない場合は、ユーザーのログイン ポイントを追加し、ユーザー データベース内のポイント数を変更してから、図 5.2 に示すように、Weibo のホームページにジャンプします。コアコードは次のとおりです。

findUser = userDao.findUserByEmailAndPassword(userId, password);
	if(findUser == null){
    
    
		throw new UserServiceException("用户名或密码错误");
	}else{
    
    
		Date lastLogin = findUser.getLastLogin();	//上次登陆时间
		Date now = nowDate();	//当前时间
		if(lastLogin.getYear()!=now.getYear() || lastLogin.getMonth()!=now.getMonth() || lastLogin.getDate()!=now.getDate()){
    
    
		//判断如果上次登陆时间和这次登陆时间不一样,则为用户增加登陆积分
		findUser=addIntegral(findUser, Constant.LOGIN);	//保存积分
		saveIRecord(findUser, Constant.LOGIN);	//保存积分记录
		findUser.setLastLogin(now);		//将上次登陆时间改为当前时间
		userDao.updateUser(findUser);	//更改用户信息
			}
}

ここに画像の説明を挿入

図 5.1 ユーザーのログインおよび登録インターフェイス
ここに画像の説明を挿入

図 5.2 Weibo ホームページのインターフェース

5.2 ユーザー情報システム
ユーザーの基本情報: 図 5.3 に示すように、ユーザーがクリックして変更すると、ブラウザはフォームフォームを送信し、ユーザーの基本情報を含むリクエストを SpringMVC のコントローラーに送信してリクエストを受信し、フォーム内のデータをユーザー オブジェクトに変換し、サービス層の対応するメソッドにパラメータとして渡して処理し、Dao 層インターフェイスを呼び出してユーザーの基本情報を変更し、セッション内のユーザー オブジェクト情報を変更します。現在のサーバー。コアコードは次のとおりです。

try {
    
    
		userDao.updateUser(user);
	} catch (DataAccessException e) {
    
    
		throw new UserServiceException("修改失败,请重试!");
	}

ここに画像の説明を挿入

図5.3 ユーザー基本情報変更画面

パスワードの変更: ユーザー プロファイル ページで [パスワードの変更] をクリックすると、図 5-4 に示すようにパスワードの変更ページにジャンプします。ユーザーはユーザーの現在のパスワードを入力できます。フロント ページでは Ajax を介して非同期リクエストが送信され、バックグラウンドではコントローラはリクエストを受け取り、データベースから取得したユーザーの現在のパスワードが正しいかどうかを確認します。パスワードが間違っている場合、フロント ページは JavaScript を通じてパスワードが間違っていることをユーザーに動的に通知します。パスワードが正しい場合、ユーザーは新しいパスワードを入力し、新しいパスワードを確認できます。[確認] をクリックして変更します。ブラウザはフォームを送信し、ユーザーの新しいパスワードをバックグラウンドのサービス層の対応するメソッドに渡します。サービス メソッドでは、Dao 層インターフェイスが呼び出されます。データベースのユーザーパスワードとサーバーセッションのユーザー情報を変更します。コアコードは次のとおりです。

try {
    
    
		user.setPassword(newpwd);
		userService.updateUser(user); 
		session.setAttribute("loginUser", user);
		mav.addObject("msg", "修改成功");
	} catch (UserServiceException e) {
    
    
		e.printStackTrace();
}

ここに画像の説明を挿入

図 5.4 パスワード変更インターフェイス

ユーザー アバターの変更: クリックしてユーザー プロファイルのアバターを変更します。図 5.5 に示すように、アバターを変更するページにジャンプします。ユーザーはアバター ファイルを選択し、アップロードをクリックすると、フォームが画像をバックグラウンド コントローラーに転送します。 , ユーザーのアバターを保存サーバー上でユーザーの以前のアバターがシステムのデフォルトのアバターであ​​ると判断され、そうでない場合はユーザーの以前のアバター画像が削除され、ユーザーの新しいアバターのアドレスがユーザー情報に保存されます。これは、データベース内のユーザーのプロファイルを変更するために Dao レイヤー インターフェイスを呼び出すためにサービスに渡されます。コアコードは次のとおりです。

if(!(icon.isEmpty())){
    
    	//如果文件存在,isEmpty文件为空
			//保存文件目录
	String path = 	req.getServletContext().getRealPath("/")+"WEB-INF/jsp/face/"+user.getId()+ico	n.getOriginalFilename();
	File newFile = new File(path);
	//判断文件目录存在不存在,如果不存在就创建目录
	if(!(newFile.getParentFile().exists())){
    
    
		newFile.getParentFile().mkdirs();
	}
	try {
    
    
		icon.transferTo(newFile);	//转存文件		
		File oldIcon = new  File(req.getServletContext().getRealPath("/")+"WEB-INF/jsp/"+user.getImages());	//删除之前的头像	
		if(!(user.getImages().equals("face/boy.png") || user.getImages().equals("face/girl.png"))){
    
    
		//先判断用户之前的头像不是系统默认的头像,然后删除用户之前的头像
			if(oldIcon.exists()){
    
    
				oldIcon.delete();
				}
			}
			user.setImages("face/"+user.getId()+icon.getOriginalFilename());
			userService.updateUser(user);	//保存用户头像
			session.setAttribute("loginUser", user);	//将保存后的用户头像信息保存在用户session中
		} catch (Exception e) {
    
    	
			e.printStackTrace();
		}
	}else{
    
    
		mav.addObject("msg", "图片不存在");
}

ここに画像の説明を挿入

図 5.5 アバターインターフェイスの変更

パスワードの変更: ユーザーがパスワードを変更するページをクリックすると、図 5-6 に示すように、ブラウザはパスワード変更のページにジャンプします。ユーザーはまず、事前に設定されたパスワードの質問に従って回答を入力する必要があります。フロントページはAjaxを使用してユーザーの秘密の秘密の質問の答えをバックグラウンドコントローラーに渡し、データベース内のユーザーの秘密の秘密の質問の答えを判定し、秘密の秘密の質問の答えが間違っている場合、ユーザーの秘密のセキュリティ回答は JavaScript を通じてページに表示されます。秘密のセキュリティの回答が正しければ、ユーザーは新しいセキュリティの質問とユーザーのセキュリティの回答を入力できます。[変更] をクリックしてフォームを送信すると、ブラウザはユーザーの秘密の質問を変更するリクエストを送信します。バックグラウンドデータベース内のセキュリティの質問と回答。コアコードは次のとおりです。

userService.updateUser(user);
	session.setAttribute("loginUser", user);
	mav.setViewName("forward:question_index");
mav.addObject("msg", "修改成功!");

ここに画像の説明を挿入

図 5.6 パスワード保護インターフェイスの変更

5.3 マイクロブログ モジュールは
マイクロブログを公開します: ユーザー ホームページの図 5.7 に示すように、ユーザーはマイクロブログを公開したり、マイクロブログ情報に絵文字を挿入したり、画像の挿入を選択したりできます。フロント ページでは、絵文字は JavaScript を使用して動的に生成されます。div タグは次のとおりです。ユーザーが「公開」をクリックすると、ブラウザーはフロントページフォームのマイクロブログ情報と画像情報をバックグラウンドコントローラーに転送し、画像情報をサーバーに保存し、画像パスのみをページに保存するリクエストを送信します。データベース 、セッションから現在のログイン ユーザーを取得し、マイクロブログ データ ソースをアセンブルし、データ ソースをサービスに渡し、Dao レイヤー インターフェイスを呼び出してマイクロブログ情報をデータベースに保存します。コアコードは次のとおりです。

if(!(pic.isEmpty())){
    
    	//如果文件存在,isEmpty文件为空
	//保存文件目录
	String path = req.getServletContext().getRealPath("/")+"WEB-inf/jsp/upload/pic/"+user.getId()+pic.getOriginalFilename();
	File newFile = new File(path);
	//判断文件目录存在不存在,如果不存在就创建目录
	if(!(newFile.getParentFile().exists())){
    
    
		newFile.getParentFile().mkdirs();
	}
	try {
    
    
		pic.transferTo(newFile); //转存文件
		weibo.setImage("upload/pic/"+user.getId()+pic.getOriginalFilename());
	} catch (Exception e) {
    
    
		e.printStackTrace();
		}
}else{
    
    
	//没有带图片
	weibo.setImage("null");
}
try {
    
    
		//保存微博信息
		weibo.setUser(user);
		weiboService.publishWeibo(weibo);	//保存微博信息
		user.setBlogNumber(user.getBlogNumber()+1);		//将用户的微博数+1
		userService.updateUser(user);		//保存更改后的用户信息
		session.setAttribute("loginUser", user);	
		mav.addObject("msg", "发布成功!");
	} catch (Exception e) {
    
    	
		e.printStackTrace();
		mav.addObject("msg", e.getMessage());
	}

ここに画像の説明を挿入

図 5.7 Weibo 情報公開インターフェース

Weibo の検索: 図 5.8 に示すように、Weibo のホームページの検索ボックスにキーワードを入力し、[検索] をクリックしてフォームを送信すると、ブラウザーはキーワードをバックグラウンド コントローラーに渡すリクエストを送信し、データベース内の Weibo 関連のクエリを実行します。曖昧なクエリ情報を通じて。サービス層の特定のメソッドでは、Dao 層インターフェイスを呼び出して、関連するマイクロブログ情報を取得し、コレクションを走査し、マイクロブログとパブリッシャー オブジェクトの基本情報を組み立て、マイクロブログ内の表現を対応する GIF 画像に変換し、調整します。図 5.9 に示すように、マイクロブログの時間形式に対応して、Weibo コンテンツ内の検索キーワードを赤色で表示されるように変更し、変更されたデータをフロント ページに戻して表示します。コアコードは次のとおりです。

User user = (User) session.getAttribute("loginUser");
	if("weibo".equals(ac)){
    
    
		mav.setViewName("seachWeiboPage");
	}else if("user".equals(ac)){
    
    
		mav.setViewName("seachUserPage");
	}
	try {
    
    
		Map<String, Object> map = userService.seachWeiboAndUser(skey,pag,ac);
		mav.addObject("map", map);	
		List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());
		mav.addObject("tuijian", userTuiJian);
		} catch (Exception e) {
    
    
			e.printStackTrace();
	}

ここに画像の説明を挿入

図 5.8 Weibo 情報公開インターフェイス

ここに画像の説明を挿入

図5.9 Weibo検索表示インターフェース

Weibo 操作; Weibo をクリックして関数タイプを「いいね」、転送、保存し、Ajax を介してバックグラウンド コントローラーに Weibo ID リクエストを送信し、セッションからログイン ユーザー情報を取得し、Weibo を通じてサービスの対応するメソッドにパラメータを渡します。ブログのさまざまな操作は、対応する Dao レイヤー インターフェイスを呼び出して、Weibo のいいね、リツイート、コレクション情報をデータベースに保存します。コメントをクリックした後、フォアグラウンド ページのクリック イベントを通じて JavaScript にジャンプし、Ajax を通じてバックグラウンド コントローラーに非同期リクエストを送信し、Weibo ID をサービス レイヤーの対応するメソッドに渡します。Dao レイヤー インターフェイスを使用して検索します。コメント情報の場合、マイクロブログのコメントのページネーションは対応する PageBean クラスによって制御され、ページネーションに表示される項目の数はデータベース層の SQL ステートメントと JSON によって制御されます。データはコントローラ内でフロント ページに渡されて表示されます。コメント情報の最後に、ユーザーは独自のコメントを公開し、絵文字を追加し、「公開」をクリックしてフォームをバックグラウンド コントローラーに送信し、バックグラウンド コードで Dao レイヤー インターフェイスを呼び出してユーザーのコメント情報を保存できます。図5.10に示すように。コアコードは次のとおりです。

comm.setBeCommentId(dao.findUserIdbyWId(comm.getWeiboId()));
	comm.setCommentLike(0); 	//默认点赞数为0
	//保存评论信息
	dao.saveWeiboComm(comm);
	Weibo weibo = dao.findWeiboBywId(comm.getWeiboId());
	//查找微博评论数
	commNum = dao.findCommNum(comm.getWeiboId());
	weibo.setComnum(commNum);
	//更新微博评论数目
dao.updateWeibo(weibo);

ここに画像の説明を挿入

図5.10 Weiboテキスト操作インターフェース

個人の Weibo: 図 5.11 に示すように: ページの上部にあるナビゲーション バーで、クリックしてユーザーの個人のホームページに入り、私の Weibo を表示できます。ページの中央にあるナビゲーション バーは、ページの上部に表示されます。ページを開くと、下にユーザーの基本情報が表示され、中央にユーザーが投稿した投稿が表示され、Weiboに挿入された写真をクリックすると、JavaScriptを通じて写真が拡大され、ユーザーが推奨する友達が表示されますページの右側にあるユーザー用のシステム。My Weibo ボタンをクリックした後に送信されたリクエストはバックグラウンド コントローラーによって受信され、現在ログインしているユーザーのユーザー ID がサーバー セッションから取得され、サービス層に渡され、Dao 層インターフェイスが呼び出されます。サービス レイヤーで、現在ログインしているユーザーの ID をデータベースから取得します。マイクロブログ情報はリスト コレクションに組み立てられ、リスト コレクションを走査し、マイクロブログ データ ソースの日付形式を変更し、置き換えるためのツール クラスを呼び出します。対応する画像情報を含むマイクロブログのテキスト内の表現。マイクロブログのページネーションでOralceデータベースを使用します。疑似列を使用して、対応する間隔のマイクロブログ情報を取得し、データベース層のページネーションを実現し、すべてのデータを渡します。これはページ上に表示する必要があるものをコントローラーに送信し、コントローラーはそのデータを Response 応答にカプセル化してフロント ページに渡します。コアコードは次のとおりです。

List<Weibo> list = weiboService.findHomeWeibo(0, page, null);
	list = FaceFormat.formt(list);
	for(int i=0;i<list.size();i++){
    
    
		long uId = list.get(i).getU_id();	//获取用户id
		User weibo_user = userService.findUserById(uId);
		list.get(i).setUser(weibo_user); 	//将user信息组装到weibo类中
		boolean b = weiboService.userLikeWeibo(list.get(i).getId(), user.getId());
		list.get(i).setB(b);
		//重新查找未读私信数目
		Map<String, Object> alerts = userService.alerts(user.getId());
		session.setAttribute("alerts", alerts);
	}
	int pageNumber = 0;
	page.setTotalPage(pageNumber/10+1); 	//确定所有的微博共有多少页
List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());

ここに画像の説明を挿入

図 5.11 個人の Weibo インターフェイス

5.4 Friend モジュール 友人の
マイクロブログの表示: ページ ナビゲーション バーの [my friends] をクリックして、友人のマイクロブログ ページに移動します。バックグラウンド コントローラーでは、まず現在ログインしているユーザーの ID 値をセッションから取得し、それをサービス内では、Dao レイヤーメソッドを呼び出して、まずデータベースの友達テーブル内の該当ユーザーの友達情報をすべて検索し、次にデータベース Weibo テーブル内のこれらの友達に対応する Weibo 情報を Weibo リリースの逆順に確認します。検出されたすべての Weibo 情報と公開されたユーザー情報をリストします。リスト コレクションにカプセル化され、リスト コレクションを走査して Weibo の日付を変更し、Weibo の絵文字を対応する画像名に変換し、処理されたコレクションをコントローラーに渡し、コントローラーが応答します。すべての組み立てられたデータを含む。図 5.12 に示すように、フォアグラウンド ページに移動し、C タグを使用してフォアグラウンド ページのリストを移動し、Weibo データを表示します。コアコードは次のとおりです。

List<Weibo> list = friendService.findFriendWeibo(user.getId(), page);
	list = FaceFormat.formt(list);
	for(int i=0;i<list.size();i++){
    
    
		long uId = list.get(i).getU_id();	//获取用户id
		User weibo_user = userService.findUserById(uId);
		list.get(i).setUser(weibo_user); 	//将user信息组装到weibo类中
		boolean b = weiboService.userLikeWeibo(list.get(i).getId(), user.getId());
		list.get(i).setB(b);
		comm = FaceFormat.commFormt(comm);
		list.get(i).setComm(comm);			list.get(i).setStr_pubTime(TimeFormat.dateToString(list.get(i).getStr_pubTime())
	}
	int pageNumber = friendService.findWeiboNumber(user.getId());
	page.setTotalPage(pageNumber/10+1); 	//确定所有的微博共有多少页
List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());

フォロー機能: ユーザーがシステムにログインすると、ページ右側の推奨ユーザーからフォローするユーザーを選択できます。「フォロー」をクリックすると、フロント ページから Ajax テクノロジーを介して非同期リクエストが送信され、バックグラウンドコントローラーにフォロー対象ユーザーのユーザーIDをサーバーからセッション内のログインユーザー情報を取得し、ログインユーザーIDとフォローユーザーIDをサービス層の対応するメソッドに渡して処理しますService層の対応するメソッドで、友達情報データソースを組み立て、Dao層インターフェースを呼び出します。ユーザーの注目情報を保存し、同時にユーザーの注目数を更新し、フォローされているユーザーのファンの数を更新します。次に、フロント ページの JavaScript を使用してページのテキスト情報の注意を変更します。コアコードは次のとおりです。

User user = (User)session.getAttribute("loginUser");
	long bId = Long.parseLong(attId);
	User bUser = userService.findUserById(bId);	
	weiboService.operationUser(operation, user, bUser);

フォローを解除: およびフォロー機能の種類を選択し、ナビゲーション バーの [マイ フレンド] をクリックし、中央の [フォロー] をクリックすると、図 5.13 に示すように、フォローしているすべての友人、その友人の数、および個人情報を表示できます。[フォローを解除] をクリックし、 Ajax を介してバックグラウンド コントローラーにフレンド ID を送信し、コントローラーのリクエストでユーザー情報を取得し、フレンド ID とユーザー ID をサービス層の対応するメソッドに渡し、Dao 層インターフェイスを呼び出してユーザー ID とフレンドに対応させます。 id ユーザーの友達情報が削除され、同時にユーザーのフォロワー数とフォローされているユーザーのファン数が変更されます。次に、応答を返して、フォアグラウンド ページの友達リストを更新します。

else if(operation.equals("QXGZ")){
    
    
		//取消关注用户操作
		dao.canUser(aId,bId);
		aUser.setAttention(aUser.getAttention()-1);		//a用户关注数-1
	bUser.setFans(bUser.getFans()-1);		//b用户粉丝数-1	
}

ユーザーのブロック: ユーザーのフォロー解除と似ていますが、Dao レイヤー インターフェイスでは、既存のユーザー レコードが削除されず、論理的に削除されます。つまり、フレンド テーブル内の対応するレコードのステータスが変更され、プライベート メッセージと Weibo が公開したものは削除されます。ブロックされたユーザー ブロックされたユーザーには情報が表示されません。コアコードは次のとおりです。

else if(operation.equals("LH")){
    
    
		//拉黑用户 不接收该用户的私信
		friendDao.updateFriendToBlack(aId, bId);
		friendDao.updateFriendState(aId, bId);
}

ここに画像の説明を挿入

図5.12 友人Weibo情報インターフェース

ここに画像の説明を挿入

図 5.13 友達リストのインターフェース

プライベート メッセージ: 図 5.14 に示すように、推奨ユーザーのページで現在のログイン ユーザーの未チェックのプライベート メッセージの数を表示できます。未読のプライベート メッセージの数は、データベース内のすべての受信者のすべてのプライベート メッセージ情報を通じて表示されます。現在のログイン ユーザーであり、情報のステータスが未読のプライベート メッセージの場合、取得した値をフロント ページに渡します。フロント ページに表示されるすべての値は、EL 式を介してサーバーから返された応答から取得されます。未読のプライベートメッセージをクリックするか、図 5.13 に示す友達リストのプライベートメッセージボタンをクリックすると、ユーザーのプライベートメッセージページにジャンプします。コアコードは次のとおりです。

List<User> userList = dao.findUserByMessage(aId);
	if(bId == -1 && userList.size()!=0){
    
    
		//通过点击私信进入
		bId = userList.get(0).getId();
	}
	List<Message> list = dao.findMessageById(aId, bId);
	for(int i=0;i<list.size();i++){
    
    
		list.get(i).setUserA(userDao.findUserById(list.get(i).getUserAId()));
		list.get(i).setUserB(userDao.findUserById(list.get(i).getUserBId()));
	list.get(i).setMessageDate(TimeFormat.dateToString(list.get(i).getMessageDate()));
	}
	list = FaceFormat.messageFormt(list);
User user = userDao.findUserById(bId);

ここに画像の説明を挿入

図 5.14 ユーザーの未読プライベート メッセージ インターフェイス

プライベート メッセージの表示: 図 5.15 に示すように、ユーザーが友人をフォローするためにプライベート メッセージをクリックすると、バックグラウンド コントローラーが私のプライベート メッセージ ユーザー ページにジャンプします。ページの左側には、ユーザーの最新のプライベート メッセージ情報が表示されます。ページの右側には、送信されたすべてのプライベート メッセージが表示されます。リスト内のユーザーをクリックすると、そのユーザーにプライベート メッセージを直接送信できます。プライベート メッセージでは絵文字が許可されます。バックグラウンド コードでは、プライベート メッセージを送信するためのユーザー ID と、セッションから取得したログイン ユーザー ID をサービス層の対応するメソッドに渡し、Dao 層インターフェイスを呼び出して、ユーザーに関連するすべてのプライベート メッセージ レコードを検索します。すべてのプライベート メッセージのステータスを読み取り、取得したレコードをコレクションにまとめ、コレクションを走査し、ツール クラスを呼び出してプライベート メッセージの日付形式とテキスト内の表現形式を変更します。同時に、現在のログイン ユーザーのプライベート メッセージ レコードを持つすべてのユーザーをデータベースから取得し、組み立てられたコレクションをコントローラーに返します。コントローラーはフロント ページにデータを応答し、コレクション内のデータを走査して表示します。フロント JSP ページ。コアコードは次のとおりです。

for(int i=0;i<userList.size();i++){
    
    
		//查找来自该用户的未读私信
		userList.get(i).setUnReadMessage(dao.findURMNByUID(aId, 	userList.get(i).getId()));
}

ここに画像の説明を挿入

図 5.15 ユーザープライベートメッセージインターフェース

プライベート メッセージの送信: ユーザーは最初に送信するユーザーを選択し、送信するプライベート メッセージ情報を入力し、プライベート メッセージに絵文字を挿入できます。送信をクリックすると、フォームが送信されます。ブラウザはリクエストをバックグラウンドに送信します。コントローラは送信ユーザーの ID を取得し、ユーザーの ID を受け取り、サービス層のメソッドを呼び出し、プライベート メッセージ情報としてデータ ソースを組み立て、プライベート メッセージ情報を未読として設定し、Dao 層インターフェイスを呼び出します。サービス層の対応するメソッドを使用して、プライベート メッセージ情報をデータベースに保存します。コアコードは次のとおりです。

friendService.sendMessage(message);
	List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());
	mav.addObject("tuijian", userTuiJian);
	//查找用户有私信的记录
	Map<String, Object> map = friendService.findMessageById(user.getId(), userBId);
	@SuppressWarnings("unchecked")
	List<Message> Messagelist = (List<Message>) map.get("list");
	User bUser = (User) map.get("bUser");
	@SuppressWarnings("unchecked")
	List<User> attUser = (List<User>)map.get("attUsers");

ユーザーの検索: ユーザーの検索ページでは、ユーザーのニックネームのキーワードを入力して、関連するユーザーを曖昧にクエリできます。ユーザーがクエリするユーザーのニックネームを入力すると、ブラウザはキーワードとその他の情報を含むリクエストを送信し、コントローラーの特定のメソッドにジャンプしますService のメソッド処理ロジックはコントローラー メソッド内で呼び出され、ビジネス層は Dao 層インターフェイスの検索メソッドを呼び出して、ユーザー ニックネームにキーワードが含まれるユーザーを検索し、データベースから取得した対応するユーザーをセットにまとめて走査します。ユーザーのニックネームに含まれるキーワードが赤に変更され、コントローラーは応答を返して検索結果ページにジャンプし、コレクションを走査して、見つかったすべてのユーザー情報を表示します。図5.16に示すように。コアコードは次のとおりです。

Map<String, Object> map = userService.seachWeiboAndUser(skey,pag,ac);
		mav.addObject("map", map);
		List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());
		mav.addObject("tuijian", userTuiJian);

ここに画像の説明を挿入

図5.16 検索UI

ユーザーのホームページ: ページ上でユーザーの名前またはプロフィール写真をクリックすると、該当するユーザーの個人ホームページにジャンプします。ユーザーの個人ホームページには、ユーザーの個人情報とユーザーの最新の Weibo が新しい順に並べて表示され、ユーザーも見ることができますWeiboの「いいね」、転送、コメント、お気に入りを操作します。取得したコードでは、ユーザーが別のユーザーのアバターまたは名前をクリックすると、ブラウザーはユーザー ID を含むリクエストをバックグラウンド コントローラーに送信します。コントローラーはサービス内の対応するメソッドを呼び出し、サービス メソッド内の Dao レイヤー インターフェイスを呼び出して、データベースからユーザーの基本情報とユーザーの Weibo 情報を表示し、すべてのデータをコレクションに保存します。コントローラに戻ると、図 5.17 に示すように、コントローラはデータをフロント ページに戻して表示します。コアコードは次のとおりです。

List<Weibo> list = friendService.findFriendWeibo(user.getId(), page);
	list = FaceFormat.formt(list);
	for(int i=0;i<list.size();i++){
    
    
		long uId = list.get(i).getU_id();	//获取用户id
		User weibo_user = userService.findUserById(uId);
		list.get(i).setUser(weibo_user); 	//将user信息组装到weibo类中
		boolean b = weiboService.userLikeWeibo(list.get(i).getId(), user.getId());
		list.get(i).setB(b);
		comm = FaceFormat.commFormt(comm);
		list.get(i).setComm(comm);		  			 	list.get(i).setStr_pubTime(TimeFormat.dateToString(list.get(i).getStr_pubTime()));
}

ここに画像の説明を挿入

図 5.17 ユーザーホームページのインターフェース

5.5
Conch モジュールのリリース: ユーザーが Conch ホームページに入ると、ブラウザ ページはビジネス層の特定のメソッドを呼び出すリクエストをバックエンド コントローラーに送信し、サービスは Dao 層インターフェイスを呼び出して、さまざまな関連する Conch の質問を見つけます。データベースで条件をフィルターし、見つかった問題をコレクションにカプセル化し、コントローラーを介してサーバー応答を送信し、Conch ホームページにジャンプして、すべての Conch 問題をループで表示します。ユーザーが質問を公開する必要がある場合、質問の説明と報酬のポイント数を入力した後、「公開」をクリックすると、ブラウザはフォーム データをバックグラウンド コントローラーに送信します。ユーザーのコンクポイントが報酬ポイントより大きいかどうかを確認し、報酬ポイント未満の場合はブラウザページに戻り、ポイントが不足していることをユーザーに通知します。ポイントが十分であれば、Daoレイヤーインターフェースを呼び出してユーザーのコンチ質問をデータベースに保存し、同時にユーザーのコンチポイントを減らしてユーザーの基本情報を修正します。コアコードは次のとおりです。

//海螺分页
	//获取海螺总数
	int num = userService.conchNum(user.getId(), conchOperation);
	if(num%5 == 0){
    
    
		page.setTotalPage(num/5);
	}else{
    
    
		page.setTotalPage(num/5+1);
	}
	page.setPage(1);	//每5页一分页
	page.setMinPage(1*5-4);
	page.setMaxPage(1*5);
	//查找海螺显示
	Map<String, Object> map = userService.conchIndex(user.getId(), conchOperation ,page);
	List<User> userTuiJian = weiboService.findUserTuiJian(user.getId());

ここに画像の説明を挿入

図 5.18 Conch ホームページのインターフェイス

conch の問題の表示: ユーザーが conch ホームページで特定の問題をクリックすると、ブラウザはサービス層に対応するメソッドを呼び出すリクエストをバックグラウンド コントローラーに送信し、サービス層の Dao 層インターフェイスを呼び出して特定の問題を表示します。コンチ問題の番号からコンチの情報を取得し、質問を投稿したユーザーIDがデータベースから該当する発行者情報を検索し、サーバーがブラウザに応答を返し、コンチの固有情報とユーザーを表示します。上部に名前、ユーザータイトル、公開日、コンチ質問、報酬ポイント、投稿ユーザーの質問が表示されます 質問の状態などは真ん中、回答者のユーザーの質問の回答情報がすべて表示されます図 5.19 に示すように、名前、タイトル、回答内容、回答日、承諾の有無など。コアコードは次のとおりです。

List<WeiboComm> list = weiboDao.findWeiboComm(conchId, 0, 20);
	list = FaceFormat.commFormt(list);
	for(int i=0;i<list.size();i++){
    
    			                                  	list.get(i).setCommentDate(TimeFormat.dateToString(list.get(i).getCommentDate()));
	list.get(i).setCommUser(userDao.findUserById(list.get(i).getCommentId()));
	}
	map.put("conchComm", list);

ここに画像の説明を挿入

図 5.19 問題の特定のインターフェイスを表示

コンチの質問に回答する:コンチの質問の詳細情報ページの下部にあるコンチの質問に回答し、入力ボックスに回答を入力し、絵文字情報を挿入し、返信をクリックしてフォームを送信すると、ブラウザがフォームのデータを送信するように要求します。バックグラウンドコントローラーであり、制御されます。 サーバー内の特定のメソッドが受信し、セッション内のユーザー番号を取得し、応答情報のデータソースを組み立て、パラメーターをサービスに渡し、サービス内のDaoレイヤーインターフェイスを呼び出して保存します。図 5.20 に示すようなコンチの返信情報。コアコードは次のとおりです。

comm.setCommentState(100); //100回复正常未采纳 101回复正常被采纳
weiboDao.saveWeiboComm(comm);

ここに画像の説明を挿入

図 5.20 返信 Conch の質問インターフェイス

質問への回答を承諾する:コンチクエスチョンのトップページで、「マイコンチクエスチョン」をクリックすると、ユーザーが投稿したコンチクエスチョンのページにジャンプし、ユーザーが投稿したコンチクエスチョンのページで、ユーザーが回答したコンチクエスチョンの質問を選択することができます。図 5.21 に示すように、回答は受け入れられた回答となり、採用者のコンク ポイントが増加します。バックグラウンド コードでは、ユーザーがクリックして受け入れると、コンクの質問 ID と質問の応答を含むブラウザ リクエストが送信されます。情報はバックグラウンドコントローラーの特定のメソッドによって受信され、コントローラーのサービス層を呼び出し、ビジネス層のDao層インターフェースを呼び出して、データベース内のコンチ問題のステータスを解決済みに変更し、受け入れられたコメントのステータスを変更します。コメントテーブル内のユーザーを受け入れて、フロントコンチの問題ページを更新します。コアコードは次のとおりです。

//设置海螺状态为1
	userDao.setConchState(conchId);
	//设置海螺评论状态为101
	userDao.setConchComm(commId);
	//为用户增加海螺积分
	Conch conch = userDao.findConchById(conchId);
	User user = userDao.findUserById(userDao.findUserIdByCommId(commId));
	user.setConchIntegral(user.getConchIntegral()+conch.getcNumber());

ここに画像の説明を挿入

図 5.21 質問応答インターフェイスの受け入れ

5.6 バックグラウンド管理者モジュールの
管理者ログイン: 管理者は、ログイン ページの管理者ログインをクリックして、図 5.22 に示す管理者ログイン ページにジャンプできます。管理者がログインすると、ページはバックグラウンド コントローラにリクエストを送信し、バックグラウンド コントローラにリクエストを送信します。コントローラー層はリクエストを受信し、ユーザー名とパスワードをパラメータとしてビジネス層のメソッドを呼び出し、サービス層の Dao 層インターフェイスを呼び出してデータベースの管理者アカウント テーブルにクエリを実行し、管理者クラスが存在する場合はそれを返します。例外が発生すると、例外はレイヤーごとにスローされ、コントローラー層で受信され、エラー情報がメソッドの戻り値に保存され、ページにプロンプ​​トが表示されます。名前とパスワードが正しければ、コントローラ内の管理者ホームページの処理メソッドにジャンプします。 管理者ホームページの処理メソッドでは、表示するデータを取得して表示します。コアコードは次のとおりです。

@RequestMapping("admin_login")
	public String adminIndex(){
    
    
		return "admin/adminlogin";
}
 

ここに画像の説明を挿入

図 5.22 管理者のログインインターフェイス

管理者ホームページ: ログイン後、システムは管理者ホームページに移動し、ホームページの上部にナビゲーション バーが表示されます。ページのコンテンツに関しては、4 つのグラフを使用して Weibo の総数、ユーザー数が表示されます、コメント、コンチ、コメント、回答など。そして、現在の月の番号、下の棒グラフは今日に最も近い 7 日間の番号を示します。バックグラウンドはまずController層で管理者のホームページに対応する処理メソッドにジャンプし、Service層の対応するメソッドを呼び出してホームページ表示データを取得し、取得したデータをMapコレクションにまとめてDao層を呼び出します。サービス層 ユーザー、Weibo、コメント、回答、その他ホームページに表示する必要のあるデータを取得するメソッドは Map コレクションに保存され、戻り値データはコントロール層で取得され、サーバー応答に保存されます図 5.23 に示すように、フロント ページに戻って EL 式を使用してデータを表示します。コアコードは次のとおりです。

//首页展示数据
	try {
    
    
		Map<String, Object> map = adminService.indexDate();
		mav.addObject("map", map);
	} catch (UserServiceException e) {
    
    
		e.printStackTrace();
}

ここに画像の説明を挿入

図 5.23 管理者のホームページのインターフェイス

ユーザー管理ホームページ: バックグラウンド コードはサービス レイヤーの対応するメソッドを呼び出し、サービス メソッドは Dao レイヤー インターフェイスを呼び出してデータベースと対話し、データベース内のすべてのユーザー情報を取得してリスト コレクションにカプセル化して返します。ユーザーに応答するためにコントローラー層に送信 ブラウザーにリストコレクションを送信 ページ内では、ユーザー情報が c タグを介してトラバースされ、表示されます ページのページングでは、カスタム ページング クラス PageBean を使用してページング情報を保存し、ページングを実行しますデータベース層で一度に 10 個のデータを取得します。コアコードは次のとおりです。

int num = 0;
	if(ukey == null){
    
    
		num =  adminService.findUserNum();
	}else{
    
    
		num = adminService.findUserNum(ukey);
	}
	if(num%10 == 0){
    
    
		pageBean.setTotalPage(num/10);
	}else{
    
    
		pageBean.setTotalPage(num/10+1);
	}
	pageBean.setPage(page);
	pageBean.setMinPage(page*10-9);
	pageBean.setMaxPage(page*10);
	List<User> list = null;
	if(ukey == null){
    
    
		list =  adminService.userManage(pageBean);
	}else{
    
    
		list = adminService.userManageByKey(pageBean, ukey);
	}
	mav.addObject("userList", list);
mav.addObject("pageBean",pageBean);

ここに画像の説明を挿入

図 5.24 ユーザー管理インターフェイス

ユーザーの検索:ユーザー管理ページでユーザーのニックネームにキーワードを入力してユーザーを検索すると、取得したユーザー情報のうちニックネームが入力キーワードとなっている部分が赤字で表示されます。バックグラウンド コードで、[検索] をクリックすると、管理者が入力したユーザー ニックネーム キーワードがバックグラウンド コントローラーに渡され、コントローラーのサービス層で対応する検索ユーザー メソッドが呼び出され、データベースのサービス層で Dao 層インターフェイスが呼び出されます。ファジークエリを通じてユーザーをサポートします。そして、図 5.25 に示すように、取得したデータをレイヤーごとに返し、コントローラーのフロント ページに応答し、ページ上に表示します。コアコードは次のとおりです。

list = adminDao.findAllUserByKey(key,page.getMinPage(),page.getMaxPage());
	for(int i=0;i<list.size();i++){
    
    
		list.get(i).setNickName(FaceFormat.keyFormt(list.get(i).getNickName(), key));
}

ここに画像の説明を挿入

図 5.25 管理者検索ユーザー インターフェイス

ユーザーの禁止: 管理者は、ユーザー管理ページの操作欄にある禁止ボタンをクリックして、違反したユーザーを禁止します。管理者は、禁止する日数を入力できます。この日付より前に、ユーザーは正常にログインできなくなり、管理者は、「ブロック解除」をクリックすることで、事前にユーザーのブロックを解除できます (図 5.26 に示す特定のページ)。バックグラウンド コードでは、サービス レイヤーで Dao レイヤー インターフェイスが呼び出され、ユーザーのステータスと禁止日が変更されます。禁止解除はユーザーの禁止と似ているため、具体的な指示はありません。コアコードは次のとおりです。

mav.setViewName("redirect:userManage");
	try {
    
    
		adminService.FJUser(uId, day);	//uId封禁用户编号,day封禁天数
	} catch (UserServiceException e) {
    
    
		e.printStackTrace();
	}
mav.addObject("page", 1);

ここに画像の説明を挿入

図 5.26 禁止ユーザー インターフェイス

Weibo管理ホームページ:管理者はナビゲーションバーのWeibo管理をクリックすると、システムはユーザーのWeibo管理ページにジャンプし、システムで使用されているWeibo情報が表示されます。管理者はまた、Weiboコンテンツにキーワードを入力してWeiboを検索することもできます。不正な情報を含む Weibo を削除するか、削除された Weibo を復元します。Weibo 管理ページは図 5.27 に示されています。バックグラウンド コードでは、ユーザーがナビゲーション バーの Weibo 管理をクリックすると、ブラウザは対応するリクエストをコントローラーに送信します。 SpringMVC フレームワークでは、さらに多くの処理メソッドを使用し、コントローラーのサービス レイヤーですべてのマイクロブログを表示するメソッドを呼び出してから、サービス レイヤーで Dao レイヤー メソッドを呼び出して、ページングの観点からすべての Weibo 情報を取得します。このメソッドは使用しません。フロントエンドページではページングを行いますが、Oracleの疑似カラムを使用してデータベース内でページングを行い、一度に10個のデータを取得し、最後に取得したWeibo情報をコントローラで応答します。ブラウザにはWeiboが表示されます。 C タグのトラバーサルによる情報。コアコードは次のとおりです。

String nkey = "";
	if(key == null){
    
    
		nkey = "1=1";
	}else{
    
    
		nkey = "m_body like '%"+key+"%'";
	}
	list = adminDao.findWeiboByKey(nkey, pageBean.getMinPage(), pageBean.getMaxPage());
	list = FaceFormat.formt(list);
	for(int i=0;i<list.size();i++){
    
    
						list.get(i).setStr_pubTime(TimeFormat.timeFormat(list.get(i).getPubTime()));
		list.get(i).setUser(userDao.findUserById(list.get(i).getU_id()));
		if(key != null){
    
    
		list.get(i).setBody(FaceFormat.keyFormt(list.get(i).getBody(), key));
		}
}

ここに画像の説明を挿入

図5.27 Weibo管理インターフェース

マイクロブログ検索: 管理者は、マイクロブログ コンテンツにキーワードを入力することで、マイクロブログ コンテンツ内のキーワードを含むマイクロブログを検索できます。検索されたマイクロブログ コンテンツ内のキーワードは、特定のページに示されているように赤色でマークされます。5.28 に示すように、バックグラウンド コード、コントローラー内の特定のメソッドが、ブラウジングによって送信されたマイクロブログ検索リクエストを受信し、サービス層の対応するメソッドを呼び出し、キーワードをパラメータとして Dao 層インターフェイスに渡し、Dao 層インターフェイスで検索します。データベース内のマイクロブログ コンテンツマイクロブログ テーブルにはキーワードのマイクロブログ情報が含まれており、対応するマイクロブログはファジー クエリを通じてデータベース内で検索されます。次に、見つかったマイクロブログ情報を List コレクションにカプセル化し、コントローラー層の対応するメソッドにレイヤーごとに戻り、メソッド内でブラウザーにデータを応答します。ブラウザーは応答を受信し、c タグを介してデータを表示します。ページ上で。コアコードは次のとおりです。

if(key == null){
    
    
		nkey = "1=1";
	}else{
    
    
		nkey = "m_body like '%"+key+"%'";
	}
list = adminDao.findWeiboByKey(nkey, pageBean.getMinPage(), pageBean.getMaxPage());

ここに画像の説明を挿入

図 5.28 管理者検索 Weibo インターフェース

Weibo削除:管理者はWeibo管理ページでWeiboの内容に応じて違法か否かを判断し、Weibo情報に悪質な情報が含まれている場合、管理者は操作バーの削除ボタンを通じてWeiboを削除することができます。 . ブログまたは削除された Weibo を復元できます。ユーザーが削除をクリックすると、ページは Weibo 番号などのパラメーターを使用してサーバーにリクエストを送信し、そのリクエストはコントローラーの対応するメソッドによって受信され、 Weibo 番号をパラメータとして、Service 内の対応するメソッドを使用し、メソッド内で Dao レイヤー インターフェイスを呼び出し、削除するデータベース内のマイクロブログ番号に対応するマイクロブログのステータスを変更します。マイクロブログの復元は削除と似ています。ただし、データベース内の対応するマイクロブログ情報の状態を通常に変更することができます。コアコードは次のとおりです。

if("sc".equals(ac)){
    
    
		adminDao.upWeiboWithState(wId, 1);
	}else if("hf".equals(ac)){
    
    
		adminDao.upWeiboWithState(wId, 0);
}

Conch 管理ホームページ: 管理者はナビゲーション バーの Conch 管理をクリックして Conch 管理ページにジャンプします (図 5.29 を参照)。ナビゲーション バーはページの上部にあり、ページ コンテンツにはすべての Conch 情報が表示されます。コンチの検索ボックスが表示され、一番下のコンチ情報には、シリアル番号、発行者名、コンチの内容、リリース日、コンチのステータス、実行できる操作が含まれます。バックグラウンド コードの観点からは、ユーザーがナビゲーション バーのコンチ管理をクリックすると、ブラウザがリクエストを送信し、リクエストがコントローラーの対応するメソッドによって受信され、サービスの Dao レイヤー インターフェイスを呼び出してデータベース コンク テーブル内のすべてのコンク情報を検索し、それを List コレクションに保存し、List コレクションを走査してパブリッシャーを組み立てますユーザー情報や日付形式の変更などを行い、最後にアセンブルNo.のリストコレクションをControllerに返し、そのレスポンスをブラウザに送信してコンチ管理ホームページにジャンプし、検索されたコンチ情報を表示します。システムで使用されるページング方法は同じであるため、ここでは説明しません。コアコードは次のとおりです。

int num = adminService.findConchNum(ckey);
	if(num%10 == 0){
    
    
		pageBean.setTotalPage(num/10);
	}else{
    
    
		pageBean.setTotalPage(num/10+1);
	}
	pageBean.setPage(page);
	pageBean.setMinPage(page*10-9);
	pageBean.setMaxPage(page*10);
List<Conch> list = adminService.findConch(pageBean, ckey);

ここに画像の説明を挿入

図 5.29 Conch 管理ホームページのインターフェイス

コンチ検索:コンチ管理ホームページでは、コンチの数が多くて問題を見つけるのが大変なので、管理者がコンチの内容に含まれるキーワードをコンチ内に入力することで、コンチの問題を検索できる検索機能を設けています。表示検索では、結果が得られると、検索キーワードが赤色で表示され、見やすくなります。特定のページを図 5.30 に示します。バックグラウンド コードでは、ユーザーがキーワードを入力してクリックして検索すると、ブラウザはコントローラー内の指定されたメソッドにリクエストを送信してそれを受信し、コントローラー内のサービス層の対応するメソッドを呼び出してビジネス ロジックを処理します。次に、Service 層の Dao 層インターフェイスを呼び出して渡します。ファジー クエリは、データベースの conch テーブルで対応する conch 情報を検索し、最後に見つかった conch 情報をコントローラのブラウザに応答し、データをトラバースして表示します。ページ上の c タグ。システムでは同じページング方法が使用されるため、詳細については説明しません。コアコードは次のとおりです。

if(key == null){
    
    
		nkey = "1=1";
	}else{
    
    
		nkey = "CONCHBODY like '%"+key+"%'";
	}
	System.out.println(nkey);
	list = adminDao.findConchByKey(nkey, pageBean.getMinPage(), pageBean.getMaxPage());
list = FaceFormat.conchFormt(list);

ここに画像の説明を挿入

図 5.30 Conch 検索インターフェイス

第6章 システムテスト

6.1 システムテストの概要
単体テストは、主にコードを書く段階で、コードに欠陥がないか、システム機能が正常に動作するか、ソフトウェアが期待された目的を達成できるかをテストするために行われます。対応するモジュールのテスト ケース ブラック ボックス テストとホワイト ボックス テストを使用してシステム機能を改善し、ソフトウェア コードを最適化し、ソフトウェア システムの品質を向上させながら、システムに欠陥があるかどうかをテストする手順。

6.2 テストケース
6.2.1 ユーザー登録モジュール
表 6-1 ユーザー登録
ここに画像の説明を挿入

6.2.2 ユーザーログインモジュール
表 6-2 ユーザーログイン
ここに画像の説明を挿入

6.2.3 ユーザー情報変更モジュール
表 6-3 ユーザー情報変更モジュール
ここに画像の説明を挿入
ここに画像の説明を挿入

6.2.4 Weibo モジュール
表 6-4 ユーザー Weibo モジュール
ここに画像の説明を挿入
ここに画像の説明を挿入

6.2.5 ユーザーフレンドモジュール
表 6-5 ユーザーフレンドモジュール
ここに画像の説明を挿入

6.2.6 User Conch モジュール
表 6-6 User Conch モジュール
ここに画像の説明を挿入

6.2.7 管理者モジュール
表 6-7 管理者モジュール
ここに画像の説明を挿入
ここに画像の説明を挿入

6.3 テスト分析の
省略

6.4 本章の概要 この
章では、主に、システムが設計された機能を実現できるかどうか、また、さまざまな欠陥が存在するかどうかをテストするために、システムのテスト ケースを記述します。システムに目に見える欠陥はほとんどなく、発見されたいくつかの欠陥も解決されていますが、完全に欠陥のないシステムは存在しないため、システムの欠陥はその後の使用において継続的に発見されなければなりません。

第7章 概要
省略

参考文献
[1] Jia Wenxiao、Deng Junjie. Java ベースの Web 開発テクノロジの分析 [J]. 電子テスト、2016 [2]
Li Chuanyang. Weibo 分析システムの設計と実装 [D]. 北京郵電大学、 2015
[3] Liu Yunchen. Website Design and Construction [M]. 清華大学出版局、2008 [
4] Qin Yahua. WEB2.0 に基づくマイクロブログ Web サイトの設計と実装 [D]. 北京理工大学 2012 [5
] Chen Ling, Xia Xun. Mybatis の動的 SQL を使用して物理ページングを実現する[J]. デジタル テクノロジーとアプリケーション. 2011(11) [6] Sa Shixuan, Wang Shan. データベース システム入門 (第 3 版) [M
]. 北京: 高位Education Press, 1998
[7] Java ベースのデータベース アクセス技術の研究 [J]. Science and Technology Information. 2009 (04) [
8] Zhang Feng. Ajax 技術と J2EE フレームワークに基づく Web アプリケーションの研究と実装 [D]. 中国地球科学大学 2008
[9] Java マルチスレッド技術に基づくネットワーク プログラミング [J]. コンピュータ プログラミングのスキルとメンテナンス. 2009 (22) [10]
Li Wei. 小型で実用的なインスタント ネットワーク チャット コミュニケーション システムの設計 [J]. ジャーナル長江大学 ( 自然科学編). 2011(12)
[11] Zhong Ruiqi. Weibo Embedding Small Partner Reading Network に基づく分析と設計 [D]. 華南理工大学 2011 [ 12] Wang Shaofeng 著.
Object- Oriented Technology UML Course [M]. 清華大学 University Press、2004
[13] Xu Chunmian. Web サイト開発に関連する問題に関する研究 [J]. Communication World. 2015 (09) [14] Zhang Yu、Wang Yinghui、
Zhang Xiangnan. Spring [J] に基づく MVC フレームワークの設計と実装. コンピュータ工学. 2010(04)
[15] Hu Yiqiao、Zhang Liping. J2EE 開発モデルの選択 [J]. コンピュータ システム アプリケーション. 2002 (08) [16] Wang Liai. 「Java プログラミング」
コース Web サイトの設計と実装 [J]. コンピュータの知識と技術. 2016(27)
[17] Rong Yandong. Mybatis Persistence Layer Framework の応用研究 [J]. 情報セキュリティとテクノロジー. 2015(12)

謝辞
省略


5. ソースコードのダウンロード:

このプロジェクトのソースコードと論文は次のとおりです。必要な友人はクリックしてダウンロードできます。リンクが失敗した場合は、下のカードをクリックしてコードをスキャンし、自分でダウンロードできます。

シリアルナンバー 卒業設計のためのリソースの完全なセット (クリックしてダウンロード)
このプロジェクトのソースコード javaEE+SSM+MySql に基づく BS アーキテクチャ マイクロブログ システムの設計と実装 (ソース コード + ドキュメント)_JAVAEE_SSM_BS アーキテクチャ マイクロブログ システム.zip

おすすめ

転載: blog.csdn.net/m0_66238867/article/details/125471185