[java graduation design] Conception et implémentation du système de microblog d'architecture BS basé sur javaEE+SSM+MySql (thèse de fin d'études + code source du programme) - Système de microblog d'architecture BS

Conception et implémentation d'un système de microblog d'architecture BS basé sur javaEE+SSM+MySql (thèse de doctorat + code source du programme)

Bonjour à tous, aujourd'hui je vais vous présenter la conception et l'implémentation du système de microblog d'architecture BS basé sur javaEE+SSM+MySql. En fin d'article, la thèse et l'adresse de téléchargement du code source de ce projet de fin d'études sont jointes. Les amis qui ont besoin de télécharger le modèle PPT du rapport d'ouverture et le modèle PPT de la soutenance de thèse, etc., peuvent accéder à la page d'accueil de mon blog et vérifier la méthode de téléchargement en libre-service dans la colonne du bas à gauche.

Annuaire d'articles :

1. Présentation du projet

  1. En tant que plate-forme d'échange et de partage d'informations, Weibo est particulièrement important dans cette ère de l'information. Les gens peuvent parcourir et publier des informations à volonté pour obtenir la consultation la plus récente et la plus chaude, et sa rapidité et son interaction élevée le rendent populaire parmi les gens. Avec la popularité de Weibo parmi les internautes, les effets de microblog tels que les célébrités Internet et les mots chauds Internet se sont progressivement formés. Le système de microblog adopte l'architecture B/S pour réaliser les fonctions de base originales du microblog. Dans le système Weibo précédent, nous avons ajouté des récompenses pour les questions, les points adoptés et d'autres nouvelles fonctions pour améliorer l'expérience utilisateur et réalisé une gestion complète de Weibo et des utilisateurs dans la gestion en arrière-plan. En termes de technologie de mise en œuvre, la page utilise JSP, javaScript, ajax et d'autres technologies pour améliorer l'interaction entre la page système et l'utilisateur utilise le langage Java en arrière-plan, le serveur Tomcat est utilisé comme serveur, le framework SSM est utilisé pour réaliser des fonctions spécifiques et la base de données Oracle est utilisée pour stocker des données dans la base de données.
  2. Les principales fonctions du système de microblog basé sur l'architecture B/S comprennent : la connexion et la déconnexion de l'utilisateur, la maintenance des informations de l'utilisateur, la publication de microblog, l'attention des amis, la publication de questions, etc. La structure du système est la suivante :
    (1) Module utilisateur :
    réalisez la fonction de connexion
    , réalisez la sortie de la connexion de l'utilisateur
    , réalisez l'enregistrement de l'utilisateur
    , réalisez la modification des informations de l'utilisateur enregistré
    (2) Module Weibo :
    réalisez les fonctions de publication, de modification et afficher Weibo ;
    réaliser Weibo Les utilisateurs d'exploitation peuvent afficher Weibo personnel, ami Weibo, Weibo préféré et d'autres informations, comme, republier, favori, commenter, supprimer, etc. sur Weibo (3) Module Amis : réaliser l'attention de l'utilisateur, nombre d'abonnés +1 , nombre de
    fans
    + 1. Se désabonner, bloquer les utilisateurs, les utilisateurs de recherche de messages privés, etc. ;
    (4) Module Conch :
    réaliser l'affichage des questions, répondre aux questions, augmenter les points, etc.
    (5) Module administrateur en arrière-plan
    Réaliser la connexion de l'administrateur
    et utiliser la barre graphique pour afficher Weibo, résultats statistiques des utilisateurs, commentaires, conque, commentaires, réponses, etc.
    Recherche d'utilisateur, interdiction d'utilisateur
    Recherche Weibo, suppression de Weibo
    Recherche de conque, suppression de conque

2. Détails des ressources

Difficulté du projet : Difficulté moyenne Scénarios applicables : Conception de l'obtention du diplôme Documents d'appui
sur des sujets connexes Nombre de mots : 28 461 mots, 77 pages Contenu : Ensemble complet de code source + thèse de fin d'études complète + soutenance PPT + cahier de tâches + vidéo de tutorat + captures d'écran en cours d'exécution


3. Mots-clés :

Weibo ; architecture B/S ; java ; cadre SSM ; Oracle ;

4. Brève introduction :

Rappel : Ce qui suit est une brève introduction au projet de fin d'études, le code source du projet et l'adresse de téléchargement du mémoire de fin d'études complet se trouvent en fin d'article.

Introduction
omise

Et Sina Weibo continue toujours son propre effet de célébrité. Un compte ordinaire, sans l'attention des fans, il est difficile pour les autres de voir le Weibo. Si vous avez besoin de demander de l'aide sur Weibo, il n'y a pas de "célébrité grand V" C'est difficile de se faire remarquer par les autres. Si vous souhaitez demander de l'aide sur Weibo, vous avez besoin de Weibo pour fournir plus de services. Et ce système permet aux utilisateurs de récompenser leurs propres questions en utilisant la fonction de récompense en points, afin que davantage d'utilisateurs puissent répondre à leurs propres questions et obtenir l'aide de davantage de personnes.

Chapitre 2 Introduction des technologies associées

2.1 Vue d'ensemble de l'architecture Architecture
B/S (navigateur/serveur, mode navigateur/serveur) : il s'agit d'un mode de structure de réseau qui utilise le navigateur comme client, utilise la technologie de navigateur Web progressivement mature et combine les différentes fonctions du navigateur, utilisez le navigateur en tant que client complexe sous l'ancienne architecture C/S (Client/Serve), utiliser l'architecture C/S pour unifier le client de l'utilisateur, concentrer les fonctions principales du système logiciel sur le serveur, mettre à niveau le système et la maintenance est plus simple Les développeurs n'ont qu'à gérer les serveurs pour mettre à jour et maintenir les systèmes logiciels.Les nombreux avantages apportés par l'architecture B/S en font la direction principale du développement futur de l'informatisation.

Mode MVC : modèle (modèle), vue (vue) et contrôleur (contrôleur) sont un modèle de conception pour le développement de logiciels. Le modèle est principalement responsable de l'interaction des données de la logique métier séparée, la vue est principalement responsable de la soumission et de l'affichage des données, et le contrôleur Principalement responsable de l'obtention des demandes et de l'acheminement des demandes.

Framework SSM (SpringMVC+Spring+Mybatis) : le framework des projets Web composés de ces trois frameworks open source est un modèle MVC standard. Spring MVC est responsable du transfert des requêtes et de la gestion des vues. Spring implémente la gestion des objets métier et le contrôle des transactions. Mybatis sert en tant que moteur de persistance. Comparé au framework SSH (Struts+Spring+Hibernate), SSM, en tant que framework léger, est plus adapté au développement de projets de petite et moyenne taille.

2.2 Introduction aux technologies clés
Technologie frontale :
1. JSP (Java Server Pages) : pages HTML embarquées avec des codes java, essentiellement une servlet, qui implémente l'extension des codes java dans la syntaxe de htmld, en utilisant le format <% %> .

2. JavaScript : Il s'agit d'un langage de script faiblement typé, composé de trois parties : ECMAScript décrit les objets de base et la syntaxe de JavaScript, Document Object Model (DOM) et Browser Object Model (BOM).

3. Ajax (Javascript asynchrone et XML) : JavaScript et XML asynchrones, réalisent une interaction asynchrone entre le recto et le verso et actualisent partiellement certains contenus sur la page sans recharger la page entière.

Technologie d'arrière-plan :
1.java : un langage de programmation orienté objet, dont les principales caractéristiques incluent : (1) Simplicité : abandonnant la syntaxe complexe et l'héritage multiple des pointeurs en C++, les développeurs n'ont pas besoin de prêter attention à l'optimisation sous-jacente, faire attention à la logique métier, c'est bien, (2) orienté objet, pour les programmeurs, ils n'ont qu'à faire attention aux données correspondantes et à la méthode de traitement des données, et n'ont pas besoin d'écrire du code strictement conforme au processus, parce que le langage java est orienté objet, il l'est donc également. de JVM (machine virtuelle java). Une fois le fichier Java compilé, il ne générera pas directement le fichier binaire que la machine exécute directement, mais le compilera dans un fichier de classe. La JVM générera le fichier binaire du système correspondant en fonction de la JVM sous différents systèmes d'exploitation. Il n'a besoin d'être compilé qu'une seule fois et peut fonctionner sur différentes plates-formes.

2. SpringMVC : Il s'agit d'un module fourni par le framework Spring, qui simplifie le développement Web en implémentant le modèle MVC pour séparer les données, les affaires et la présentation. Comme les autres frameworks MVC, il est piloté par les requêtes et contrôle le transfert. Son noyau Servlet est DispatcherServlet, qui est le contrôleur frontal, qui est utilisé pour distribuer les requêtes au contrôleur. Il est entièrement intégré au framework Spring. Cela fait également de SpringMVC un framework MVC très populaire.

3. Spring : Un framework de développement Java léger, le framework Spring a une architecture en couches, vous pouvez donc utiliser n'importe quelle partie indépendante de Spring. Et son architecture est toujours intrinsèquement stable. Spring fournit des solutions pour chaque couche d'applications J2EE, fonctionnant à travers chaque couche de l'architecture à trois niveaux, mais Spring est toujours très compatible avec d'autres frameworks. Ce projet utilise principalement l'IOC dans Spring (Inversion de Control) et AOP (Programmation Orientée Aspect).

4. Mybatis : Il s'agit d'un framework open source léger qui simplifie la couche de persistance Java. Et il prend en charge l'annotation Mapper, Mybatis élimine la majeure partie du code JDBC, ce qui facilite le processus de persistance des objets Java dans la base de données.Par rapport à d'autres frameworks de persistance Java, Mybatis a l'avantage d'éliminer une grande partie de la redondance JDBC.Le reste du code , faciles à apprendre et les instructions Sql visibles permettent une intégration avec Spring et introduisent de meilleures performances.

2.3 Outil de développement
Serveur Tomcat : c'est un serveur d'applications Web, il est léger et open source, c'est le premier choix pour les projets Web de petite et moyenne taille et le développement, le débogage et l'apprentissage.

Oracle Database (Oracle Database): est une base de données relationnelle développée par Oracle Corporation. C'est la première base de données relationnelle pour les applications commerciales. Le système est facile à utiliser, puissant et hautement portable. Il convient à divers environnements de grande, moyenne et petite taille.À l'ère du Big Data, en tant que base de données distribuée, il réalise la fonction de traitement distribué, avec des fonctions de gestion de données complètes, des bases de données relationnelles complètes et des fonctions de traitement distribué.

Outil de développement Eclipse : une plate-forme de développement extensible basée sur java open source, qui comprend non seulement un environnement de développement intégré java, mais également un environnement de développement de plug-ins, tels que SVN, CVS et d'autres équipes pour développer des plug-ins.

2.4 Résumé de ce chapitre
Ce chapitre présente principalement certaines des principales technologies utilisées dans le projet de développement, l'architecture et les modèles de conception utilisés dans le projet, les principales technologies de cadre utilisées dans le projet, la technologie frontale et les méthodes d'affichage utilisées dans le affichage du projet côté navigateur, Le langage de développement utilisé par le code en arrière-plan, la technologie serveur utilisée, la base de données utilisée par la couche de persistance des données, etc., et les outils de développement utilisés pour le développement sont présentés à la fin de ce chapitre.

Chapitre trois Analyse des exigences système

3.1 Analyse de faisabilité
3.1.1 Faisabilité technique
Au regard des technologies existantes, afin d'unifier le client et d'éliminer la complexité causée par les montées de version et la maintenance, il est tout à fait envisageable d'adopter une architecture B/S mature dans la réalisation du projet. En termes de langages de développement et de frameworks, les puissants systèmes java et j2ee permettent aux développeurs de construire soigneusement des projets Web, et une série de frameworks open source fournissent une base solide pour la faisabilité du projet. serveur Tomcat est utilisé, est suffisant pour prendre en charge l'utilisation normale de ce petit projet, et la technologie frontale et le cadre frontal en constante évolution peuvent créer de belles pages frontales et améliorer l'expérience et l'interaction de l'utilisateur. Ceci est tout à fait réalisable dans le technologie d'affichage des pages du projet Une puissante base de données relationnelle est La persistance des données du projet fournit un support solide. En résumé, les systèmes java et j2ee de plus en plus matures, le framework et le serveur java entièrement open source, la puissante base de données relationnelle et l'utilisation de la technologie Web frontale pour fournir des pages d'interaction utilisateur, de sorte que le projet est techniquement réalisable.

3.1.2 Faisabilité économique
Omettre


3.1.3 Omission de faisabilité opérationnelle

3.2 Analyse des besoins
3.2.1 Configuration système requise globale
Le système Weibo est principalement composé du module utilisateur frontal et du module de gestion en arrière-plan. Lorsque l'utilisateur accède à la page d'accueil, il peut choisir de se connecter ou non. Lors de la connexion, il peut se connecter avec un compte existant ou enregistrer un nouveau compte. Lorsque l'utilisateur n'est pas connecté, le Weibo populaire récemment mis à jour est affiché sur la page d'accueil, et l'utilisateur connecté peut voir le Weibo récemment mis à jour de l'utilisateur qu'il suit sur la page d'accueil.

Les utilisateurs non connectés peuvent uniquement rechercher et afficher les informations Weibo et visiter les pages d'accueil des utilisateurs. Les utilisateurs connectés peuvent modifier leurs informations de base telles que la signature, le sexe, etc. après s'être connectés au système, et peuvent également modifier les mots de passe et les informations confidentielles. après avoir vérifié les informations de l'utilisateur. En plus de modifier l'avatar et le mot de passe de l'utilisateur, de modifier votre propre page d'accueil personnelle, comme, de commenter, de mettre en signet et d'autres fonctions sur Weibo, vous pouvez également suivre/ne plus suivre les utilisateurs, bloquer les utilisateurs, les utilisateurs de chat privé et d'autres opérations.

L'administrateur en arrière-plan peut afficher toutes les données du système, y compris les utilisateurs, les microblogs, les commentaires, les conques, le nombre total de réponses, la dernière base de données et la quantité de données de la semaine dernière. Les fonctions spécifiques incluent la gestion des mauvaises informations Weibo et des mauvais comptes, la suppression et la restauration de Weibo, les commentaires Weibo, la conque, les réponses et autres informations, et le blocage des mauvais comptes.

Module de recherche de microblogs : les utilisateurs peuvent saisir des mots-clés pour trouver les microblogs ou les utilisateurs correspondants.
Module de publication de micro-blogs : l'utilisateur clique sur la publication et ajoute le contenu qu'il souhaite envoyer dans le contenu. Vous pouvez choisir des émoticônes ou insérer des images, mais le nombre de caractères saisis est limité, et vous pouvez également insérer un image en même temps.

Module de commentaires Weibo, les utilisateurs peuvent afficher les commentaires Weibo, publier des commentaires Weibo, etc.

Module Magic Conch : les utilisateurs peuvent publier une conque magique, qui est principalement utilisée pour enregistrer diverses questions soulevées par les utilisateurs, et d'autres utilisateurs peuvent voir et répondre aux questions. Lorsque la réponse du répondant est adoptée par le questionneur, le répondant peut ajouter la sienne Points de conque, différents points de conque ont des titres de conque différents.

Module de points : les utilisateurs peuvent augmenter leurs points en se connectant tous les jours, en publiant Weibo, en effectuant des tâches, etc. Différents points ont des titres différents. Les points du module de conque magique ont des titres différents, et les titres sont affichés derrière le nom de l'utilisateur.

Module ami : les utilisateurs peuvent voir d'autres utilisateurs dans le système, trouver leurs utilisateurs préférés et les suivre. Après les avoir suivis, ils peuvent voir les utilisateurs qu'ils suivent dans le module ami, ainsi que les dernières informations sur Weibo et d'autres publiées par des amis. Ils peut également envoyer un message privé à des amis, envoyer Envoyer un message privé à un ami.

3.2.2 Exigences du diagramme de cas d'utilisation
1. Lorsque l'utilisateur entre dans le système, il peut choisir de se connecter ou de s'enregistrer en tant qu'utilisateur. S'il oublie le mot de passe, il peut réinitialiser le mot de passe via la question de sécurité.
insérez la description de l'image ici

Figure 3.1 Diagramme de cas d'utilisation initial de l'utilisateur

2. Une fois que l'utilisateur s'est connecté, il peut gérer les informations personnelles de base de l'utilisateur, modifier les informations de base de l'utilisateur et modifier les informations confidentielles de l'utilisateur. Modifier l'avatar de l'utilisateur et d'autres fonctions.
insérez la description de l'image ici

Figure 3.2 Diagramme de cas d'utilisation de la gestion des informations utilisateur

3. Système de gestion de microblog utilisateur, lorsque l'utilisateur se connecte au système, il peut publier un microblog sur la page d'accueil et rechercher les informations de microblog de mots-clés dans le contenu du microblog via des mots-clés. Afficher Weibo, y compris l'affichage de Weibo personnel, ami Weibo et Weibo recommandé.
insérez la description de l'image ici

Figure 3.3 Diagramme de cas d'utilisation de gestion Weibo

4. Gestion des commentaires, la gestion des commentaires dépend du module Weibo, les utilisateurs peuvent afficher les commentaires sur Weibo, publier des commentaires sur les informations Weibo et supprimer leurs propres commentaires.
insérez la description de l'image ici

Figure 3.4 Diagramme de cas d'utilisation de la gestion des commentaires Weibo

5. Gestion de la conque. Une fois connectés, les utilisateurs peuvent publier des questions sur la conque dans le module de conque. Lors de la publication de questions, ils peuvent choisir le nombre de points de récompense et réduire leurs propres points. Les utilisateurs peuvent participer à la réponse aux questions de la conque des autres. Lorsque la réponse est accepté, Vous pouvez obtenir le nombre de points récompensés par l'utilisateur.
insérez la description de l'image ici

Figure 3.5 Diagramme de cas d'utilisation de la gestion des conques

6. Gestion des amis, lorsque l'utilisateur se connecte, il peut suivre le système pour recommander des amis ou rechercher des utilisateurs, afficher la page d'accueil de l'utilisateur, ajouter ou ne plus suivre des utilisateurs, envoyer des messages privés aux utilisateurs ou bloquer des utilisateurs.
insérez la description de l'image ici

Figure 3.6 Diagramme de cas d'utilisation de la gestion des amis

7. Notification de message, lorsque l'utilisateur fait attention, commente Weibo, aime et favoris, la notification de message est appelée.
insérez la description de l'image ici

Figure 3.7 Diagramme de cas d'utilisation de la gestion des amis

8. Administrateur : les administrateurs peuvent gérer les utilisateurs de Weibo en se connectant au système, en bannissant et en annulant les comptes des utilisateurs malveillants, et peuvent également restaurer le statut de l'utilisateur. Dans le même temps, les administrateurs peuvent également gérer les informations de Weibo, telles que la suppression de Weibo, la restauration de la suppression et récupérer les commentaires de microblog supprimés par les administrateurs, etc., comme illustré à la figure 3.2.
insérez la description de l'image ici

Figure 3.8 Diagramme de cas d'utilisation de l'administrateur

Chapitre 4 Conception des fonctions du système
4.1 Analyse des classes système
4.1.1 Classes d'entités
Les classes d'entités sont principalement utilisées pour transférer des données, notamment User, Friend, PointAction, PointRecord, Weibo, WeiboCollect, WeiboComm, WeiboLike, WeiboTrans, etc. Les classes d'utilisateurs incluent l'utilisateur Basic informations, la catégorie Weibo comprend les informations de base de Weibo et comprend également la catégorie d'utilisateur de l'entité, la catégorie d'ami comprend le numéro d'ami, l'heure de création de l'ami et la catégorie d'utilisateur des deux parties, etc. La classe de collection de microblogs comprend des attributs de collection tels que la classe de microblogs et l'identifiant d'utilisateur préférés, la classe de commentaires de microblogs comprend des attributs tels que la classe de microblogs, la classe d'utilisateurs et le contenu des commentaires, et la classe de transfert de microblogs comprend des attributs tels que la classe d'utilisateurs, la classe de microblogs et l'heure de transfert, la catégorie similaire à Weibo comprend attributs tels que la catégorie Weibo, la catégorie d'utilisateur et l'heure. La relation d'association de classes entre les classes d'entités est illustrée à la Figure 4.1.
insérez la description de l'image ici

Figure 4.1 Diagramme de classes de couche de bean

4.1.2 La classe contrôleur
comprend quatre classes JAVA MainController, WeiboController, FrendController et AdminController dans la couche contrôleur. Dans le cadre SpringMVC, il est principalement utilisé pour recevoir la requête envoyée par le navigateur au serveur et traiter les données et contrôler le envoi de la demande Les données obtenues sont répondues au navigateur. MainController est principalement utilisé pour recevoir des demandes de formulaire ou de lien soumises à partir de pages liées à l'utilisateur, et transmettre les paramètres demandés à la méthode correspondante dans le contrôleur, transmettre la réponse de données au navigateur et afficher les données, les attributs spécifiques et les méthodes sur le navigateur côté Comme le montre la Figure 4.2.
insérez la description de l'image ici

Figure 4.2 Diagramme de classe du contrôleur utilisateur

WeiboController est principalement utilisé pour recevoir des demandes de formulaire ou de lien soumises à partir des pages Weibo pertinentes, transmettre les paramètres demandés aux méthodes correspondantes dans le contrôleur, obtenir les données renvoyées dans la couche de traitement métier et envoyer la réponse des données au navigateur, pour afficher les données côté navigateur, les propriétés et méthodes spécifiques sont présentées dans la Figure 4.3.
insérez la description de l'image ici

Figure 4.3 Diagramme de classe du contrôleur Weibo

FriendController est principalement utilisé pour recevoir des demandes de formulaire ou de lien soumises à partir de pages liées à des amis, et transmettre les paramètres demandés à la méthode correspondante dans le contrôleur, et obtenir les données renvoyées dans la couche de traitement métier, et transmettre la réponse des données au navigateur , pour afficher les données côté navigateur, les propriétés et méthodes spécifiques sont présentées dans la Figure 4.4.
insérez la description de l'image ici

Figure 4.4 Diagramme de classe de contrôleur ami

AdminController est principalement utilisé pour recevoir des demandes de formulaire ou de lien soumises à partir des pages pertinentes de l'administrateur, et transmettre les paramètres demandés à la méthode correspondante dans le contrôleur, et obtenir les données renvoyées dans la couche de traitement métier, et transmettre la réponse des données au navigateur Le navigateur affiche les données côté navigateur, les propriétés et méthodes spécifiques sont présentées dans la Figure 4.5.
insérez la description de l'image ici

Figure 4.5 Diagramme des classes du contrôleur d'administration

4.1.3 Classe de logique métier
La couche Service comprend principalement quatre interfaces de service et leurs classes d'implémentation, y compris IUserService utilisé pour gérer les activités de l'utilisateur telles que l'enregistrement de l'utilisateur, la connexion et la modification des informations personnelles, comme illustré à la Figure 4.6. IWeiboService est utilisé pour gérer les activités liées à Weibo telles que la recherche de Weibo, la publication de Weibo, la suppression de Weibo et les opérations connexes sur Weibo telles que les likes et les commentaires, comme illustré à la Figure 4.7. IFriendService est utilisé pour gérer les affaires liées aux amis de l'utilisateur, telles que like, cancel like, message privé, blacklisting et d'autres fonctions, comme le montre la figure 4.8. IAdmoinService est utilisé pour gérer les activités liées aux administrateurs, telles que la connexion de l'administrateur, l'affichage des graphiques, la gestion des utilisateurs, la gestion Weibo et les fonctions de gestion des conques, comme illustré à la Figure 4.8.
insérez la description de l'image ici

Figure 4.6 Diagramme de classes de traitement métier utilisateur

insérez la description de l'image ici

Figure 4.7 Diagramme de classes de traitement métier Weibo
insérez la description de l'image ici

Figure 4.8 Diagramme de classe du contrôleur Weibo

4.1.4 Classe d'interaction de la base de données
Le système adoptant le framework de persistance MyBatis, les développeurs n'ont pas besoin de faire attention au code JDBC spécifique entre la base de données et la base de données, mais doivent uniquement traiter la logique métier, ils n'ont donc qu'à déclarer des méthodes dans l'interface de couche Dao sans écriture La classe d'implémentation de l'interface implémente la méthode en configurant le fichier de configuration correspondant, et écrit l'instruction SQL dans la méthode d'interface correspondante dans le fichier de configuration pour interagir avec la base de données.

4.2 Conception commerciale clé
4.2.1 Système de connexion
insérez la description de l'image ici

Figure 4.9 Diagramme de séquence de connexion au système

Une fois que l'utilisateur est entré dans la page d'accueil, il peut sélectionner un utilisateur enregistré sur la gauche ou se connecter au système sur la droite. Dans le module d'enregistrement, l'utilisateur entre l'adresse e-mail, le mot de passe, le surnom et d'autres informations de l'utilisateur. Lorsque l'utilisateur entre l'adresse e-mail, l'adresse e-mail saisie par l'utilisateur sera envoyée en arrière-plan via Ajax. Vérifiez si l'adresse e-mail de l'utilisateur a été enregistrée. S'il est enregistré, l'utilisateur sera invité sur la page où l'adresse e-mail a été Après avoir entré les informations de base et cliqué sur Enregistrer, les informations d'enregistrement de l'utilisateur seront enregistrées.

Fonction de connexion, lorsque l'utilisateur entre l'adresse e-mail et le mot de passe, si l'utilisateur clique sur le prochain mot de passe de connexion automatique, après avoir cliqué sur la connexion, il est jugé si l'heure de connexion actuelle de l'utilisateur et la dernière heure de connexion sont le même jour, sinon , ajoutez l'heure de connexion de l'utilisateur Points, puis accédez à la page d'accueil Weibo.

4.2.1 Système d'information des utilisateurs
insérez la description de l'image ici

Figure 4.10 Diagramme de séquence des informations de modification de l'utilisateur

Informations de base de l'utilisateur : Après avoir cliqué sur les paramètres du compte personnel sur la page d'accueil du système, il passera à la page de modification des informations de base de l'utilisateur, où l'utilisateur peut modifier ces informations de base et enregistrer les informations modifiées dans la base de données.

Changer le mot de passe : cliquez sur Changer le mot de passe sur la page du profil utilisateur, passez à la page de changement du mot de passe, l'utilisateur peut entrer le mot de passe actuel de l'utilisateur, le système juge si le mot de passe est correct, si le mot de passe est incorrect, il affichera le face à -erreur de mot de passe face, si le mot de passe est correct, l'utilisateur peut saisir un nouveau mot de passe et cliquer sur Modifier pour mettre à jour le mot de passe modifié dans la base de données.

Modifier l'avatar de l'utilisateur : Cliquez pour modifier l'avatar dans le profil de l'utilisateur, accédez à la page de modification de l'avatar, l'utilisateur sélectionne le fichier de l'avatar, clique sur le téléchargement et l'avatar de l'utilisateur est enregistré sur le serveur. Il est jugé que l'ancien utilisateur l'avatar est l'avatar par défaut du système, sinon, supprimez l'utilisateur. Pour l'image d'avatar précédente, cliquez sur Modifier pour enregistrer l'adresse de l'avatar modifié dans la base de données.

Modifier le mot de passe : l'utilisateur doit d'abord remplir la réponse en fonction de la question de sécurité définie précédemment. Si la réponse de sécurité est erronée, l'utilisateur sera averti que la réponse de sécurité est erronée. Si la réponse de sécurité est correcte, l'utilisateur peut saisir une nouvelle question de sécurité et une nouvelle réponse de sécurité. Cliquez sur Modifier pour enregistrer la nouvelle question de sécurité et la réponse de l'utilisateur.

4.2.2 Module Weibo
insérez la description de l'image ici

Figure 4.11 Diagramme de séquence de connexion au système

Publier Weibo : les utilisateurs peuvent publier Weibo sur la page d'accueil, insérer des émoticônes dans les informations Weibo ou choisir d'insérer une image. Lorsque l'utilisateur clique sur publier, le navigateur envoie une demande pour télécharger les informations Weibo et les informations sur l'image dans le formulaire de la page d'accueil Pass vers le contrôleur d'arrière-plan, enregistrez les informations de l'image sur le serveur, enregistrez uniquement le chemin de l'image dans la base de données et enfin enregistrez les informations Weibo dans la base de données.

Rechercher sur Weibo : les utilisateurs peuvent saisir le contenu mentionné dans Weibo dans la zone de recherche de la page d'accueil pour effectuer une recherche, et le système interrogera les informations Weibo associées dans la base de données par le biais de requêtes floues. Affichez les pages recherchées sur la page, et affichez les mots clés en rouge.

Opérations Weibo : les utilisateurs peuvent afficher leur Weibo personnel, leur ami Weibo, leur Weibo préféré et d'autres informations, comme, republier, mettre en favori, commenter, supprimer, etc. sur Weibo.

4.2.3
Fonction de suivi du module ami : lorsque l'utilisateur se connecte au système, il peut choisir l'utilisateur à suivre parmi les utilisateurs recommandés sur le côté droit de la page, ou rechercher des utilisateurs via la fonction de recherche sur la page, et suivre les utilisateurs recherchés. Après avoir suivi l'utilisateur, l'attention personnelle +1 et le nombre de fans de l'utilisateur suivi +1.

Ne plus suivre : et suivre le type de fonction, cliquez sur mes amis dans la barre de navigation, vérifier mes amis sur la page d'accueil de mes amis, vous pouvez vérifier tous les amis que je suis, le nombre d'amis et leurs informations personnelles, en cliquant sur Le désabonnement correspondant peut se désabonner Après avoir abandonné l'utilisateur, le nombre d'abonnés personnels est de -1 et le nombre d'abonnés de l'utilisateur suivi est de -1.

Bloquer les utilisateurs : c'est-à-dire modifier l'état de l'enregistrement correspondant dans la table des amis, et les messages privés et les informations Weibo publiés par les utilisateurs bloqués ne seront pas vus par les utilisateurs bloqués.

Messages privés : vous pouvez afficher le nombre de messages privés non lus de l'utilisateur actuellement connecté sur l'utilisateur recommandé sur la page. Le nombre de messages privés non lus passera par la base de données pour tous les messages privés de tous les destinataires de l'utilisateur actuellement connecté. dans l'utilisateur, et l'état de l'information est non lu. La valeur obtenue est affichée sur la page d'accueil.

Envoyer un message privé : l'utilisateur sélectionne d'abord l'utilisateur à envoyer, entre les informations du message privé à envoyer et peut insérer des émoticônes dans le message privé. Après avoir cliqué sur envoyer, les informations du message privé seront envoyées à l'utilisateur correspondant. Dans le même temps, augmentez le nombre de messages privés non lus qui invitent l'utilisateur.

Rechercher des utilisateurs : sur la page de recherche d'utilisateurs, les utilisateurs peuvent saisir des mots-clés de surnoms d'utilisateurs pour rechercher de manière approximative des utilisateurs pertinents, afficher les utilisateurs interrogés sur la page et marquer les mots-clés saisis par les utilisateurs en rouge.

Page d'accueil de l'utilisateur : sur la page, cliquez sur le nom ou la photo de profil d'un utilisateur pour accéder à la page d'accueil personnelle de l'utilisateur correspondant. La page d'accueil personnelle de l'utilisateur affiche les informations personnelles de l'utilisateur et le dernier Weibo de l'utilisateur, classés par ordre chronologique inverse, et l'utilisateur peut également exploiter les goûts, les transferts, les commentaires et les favoris de Weibo.

4.2.4 Publication du module Conch
 : l'utilisateur accède à la page d'accueil de Conch en cliquant sur la conque magique dans la barre de navigation. En haut de la page Conch se trouve la boîte de questions pour publier la conque, les boutons d'émoticônes qui peuvent être insérés en dessous et les points de récompense pour les questions, et la barre de navigation au milieu Vous pouvez choisir d'afficher la dernière version, résolue, à résoudre, ma conque différentes conditions de filtre.

Afficher les questions Conch : lorsque l'utilisateur clique sur une question Conch, le système passe à une page affichant les informations spécifiques du Conch. Le nom d'utilisateur, le nom d'utilisateur, la date de sortie, la question Conch, les points de récompense, l'état de la question, etc. l'utilisateur postant sont affichés en haut et affichés au milieu Toutes les informations de réponse à la question, le nom d'utilisateur de la personne qui répond, le titre, le contenu de la réponse, la date de réponse, si elle est acceptée, etc.

Répondez aux questions sur les conques : vous pouvez répondre aux questions sur les conques en bas de la page d'informations détaillées des questions sur les conques, saisir la réponse dans la zone de saisie, insérer des informations sur les émoticônes, etc., puis cliquer sur répondre pour enregistrer les informations de réponse dans la base de données.

Acceptez la réponse à la question : sur la page d'accueil de Conch Questions, les utilisateurs peuvent accéder à la page Conch Questions publiée par l'utilisateur en cliquant sur My Conch Questions. Dans la page Conch Questions publiée par eux-mêmes, ils peuvent choisir la réponse qu'ils pensent être Après avoir cliqué sur Accepter Modifier le statut de la conque, la réponse acceptée devient la réponse acceptée et les points de conque de l'adoptant sont augmentés.

4.2.5 Module administrateur en arrière-plan
Connexion administrateur : Les administrateurs peuvent cliquer sur Connexion administrateur sur la page de connexion pour accéder à la page de connexion administrateur. Une fois que l'administrateur a entré les informations sur le compte et le mot de passe, si le nom d'utilisateur et le mot de passe sont corrects, il passera à la page d'accueil de l'administrateur. Invite en cas d'erreur.

Page d'accueil de l'administrateur : la barre de navigation est affichée en haut de la page d'accueil de l'administrateur. En termes de contenu de la page, quatre graphiques sont utilisés pour afficher le nombre total de Weibo, d'utilisateurs, de commentaires, de conques, de commentaires, de réponses, etc. et le nombre de le mois en cours. Le graphique à barres ci-dessous Il affiche le nombre des 7 derniers jours à partir d'aujourd'hui.

Page d'accueil de gestion des utilisateurs : affichez la barre de navigation en haut de la page et le contenu de la page affiche tous les identifiants d'utilisateur, les adresses e-mail, les surnoms, les dates d'enregistrement, les dates de dernière connexion et le statut de l'utilisateur. Compte tenu du grand nombre d'utilisateurs et de la commodité de recherche, les 10 éléments de données utilisateur sont affichés sur la page à la fois, et une fonction de recherche d'utilisateur est ajoutée en même temps. Les utilisateurs peuvent rechercher des utilisateurs après avoir entré les mots-clés du surnom de l'utilisateur et prendre en charge les requêtes vagues. Rechercher des utilisateurs : saisissez les mots-clés dans le surnom de l'utilisateur sur la page de gestion des utilisateurs pour rechercher des utilisateurs, et le système affichera la partie des informations utilisateur obtenues où le surnom est le mot-clé d'entrée en rouge.

Bannissement de l'utilisateur : l'administrateur peut cliquer sur le bouton de bannissement dans la colonne des opérations de la page de gestion des utilisateurs pour bannir l'utilisateur en infraction. L'administrateur peut entrer le nombre de jours pour le bannissement. Avant cette date, l'utilisateur ne peut pas se connecter normalement, et le l'administrateur peut débloquer des utilisateurs à l'avance en cliquant sur Débloquer.

Page d'accueil de gestion Weibo : les administrateurs cliquent sur Gestion Weibo dans la barre de navigation, le système passe à la page de gestion Weibo de l'utilisateur, affichant les informations Weibo utilisées dans le système, les administrateurs peuvent également saisir des mots-clés dans le contenu Weibo Rechercher Weibo, et en même temps , vous pouvez supprimer Weibo avec de mauvaises informations ou restaurer le Weibo supprimé.

Recherche de microblog : les administrateurs peuvent rechercher des microblogs avec le mot-clé dans le contenu du microblog en saisissant des mots-clés dans le contenu du microblog, et les mots-clés dans le contenu du microblog recherché seront marqués en rouge.

Suppression de Weibo : dans la page de gestion de Weibo, l'administrateur peut juger si le Weibo est illégal ou non en fonction du contenu du Weibo. Si les informations de Weibo contiennent de mauvaises informations, l'administrateur peut supprimer le Weibo via le bouton de suppression dans la barre d'opération Vous pouvez également restaurer les microblogs supprimés.

Page d'accueil de Conch Management : l'administrateur clique sur Conch Management dans la barre de navigation pour accéder à la page Conch Management. La barre de navigation se trouve en haut de la page et le contenu de la page affiche toutes les informations sur les conques, la zone de recherche de conques et la zone de pagination. ci-dessous, informations sur la conque Inclure le numéro, le nom de l'éditeur, le sujet de la conque, la date à laquelle elle a été publiée, le statut de la conque et les actions qu'elle peut entreprendre.

Conch Search : Sur la page d'accueil de Conch Management, compte tenu du grand nombre de conques, il est difficile de trouver le problème, la fonction de recherche est donc configurée. L'administrateur peut entrer les mots-clés dans le contenu de la conque dans la zone de recherche de la conque pour rechercher pour le problème de la conque Dans la recherche d'affichage Lorsque les résultats sont obtenus, les mots-clés de recherche seront marqués en rouge pour une visualisation facile.

4.3 Conception de la base de données
4.3.1 Vue d'ensemble
La table de base de données du système Microblog comprend principalement :
1. Table utilisateur : utilisée pour stocker les informations personnelles de l'utilisateur, telles que le numéro, le surnom, le nom, le mot de passe. Pour la boîte aux lettres et d'autres informations, utilisez le numéro d'utilisateur comme clé primaire, comme indiqué dans le Tableau 4-1.

2. Table des abonnés du microblog : utilisée pour enregistrer les informations sur les abonnés de l'utilisateur, avec l'ID de l'abonné comme clé primaire, comme indiqué dans le Tableau 4-2.

3. Table Weibo : utilisée pour enregistrer les informations Weibo, telles que l'heure de sortie de Weibo, le contenu Weibo, les likes Weibo, les retweets, le nombre de favoris, etc., avec le numéro Weibo comme clé primaire, comme indiqué dans le Tableau 4-3.

4. Table de collecte de microblog : utilisée pour enregistrer les informations de microblog collectées par les utilisateurs, telles que le numéro de microblog, l'heure de collecte, etc., avec le numéro de collecte comme clé primaire, comme indiqué dans le Tableau 4-4.

5. Tableau des commentaires : enregistrez les informations sur les commentaires Weibo, telles que l'ID du commentateur, la date du commentaire, le contenu du commentaire, etc., avec l'ID du commentaire comme clé principale, comme indiqué dans le Tableau 4-5.

6. Tableau des points : utilisé pour enregistrer la façon dont les utilisateurs obtiennent des points, comme l'obtention de points via une connexion quotidienne et la publication de Weibo, etc., avec le numéro de point comme clé primaire, comme indiqué dans le Tableau 4-6.

7. Tableau similaire : utilisé pour enregistrer les informations similaires de Weibo, y compris principalement le numéro similaire, le numéro similaire, le numéro Weibo similaire et d'autres informations. Utilisez le même numéro comme clé primaire, comme indiqué dans le Tableau 4-7.

8. Tableau de flux de points : utilisé pour enregistrer les informations sur les points obtenus par les utilisateurs, notamment le numéro de point, le numéro d'utilisateur, la date d'acquisition et d'autres informations, avec le numéro de point comme clé primaire, comme indiqué dans le tableau 4-8.

9. Table de transfert : utilisée pour enregistrer les informations transmises par l'utilisateur, notamment le numéro de transfert, la personne de transfert, le numéro Weibo et d'autres informations, avec le numéro de transfert comme clé primaire, comme indiqué dans le Tableau 4-9.

4.3.2 Conception conceptuelle
Un utilisateur peut publier plusieurs microblogs, il existe donc une relation un-à-plusieurs entre la table des utilisateurs et la table des microblogs, comme le montre la Figure 4.12.
insérez la description de l'image ici

Figure 4.12 Correspondance entre la table des utilisateurs et la table Weibo

Un microblog peut correspondre à plusieurs likes, forwards, favoris et commentaires, il existe donc une correspondance un-à-plusieurs entre la table du microblog et les tables des favoris, des likes, des forwards et des favoris, comme le montre la figure 4.13.
insérez la description de l'image ici

Figure 4.13 Correspondance entre la table Weibo et la table des opérations Weibo

Un utilisateur peut poster plusieurs conques, et chaque question de conque peut correspondre à plusieurs commentaires. Comme le montre la figure 4.14.
insérez la description de l'image ici

Figure 4.14 Correspondance entre table utilisateur et table conque

4.3.3 Table de base de données
1. Table utilisateur : nom de table de base de données USER_TAB, nom de séquence de référence SEQ_USER.

Tableau 4-1 Tableau utilisateur
insérez la description de l'image ici

2. Table concernée : table de base de données FRIEND_TAB, nom de séquence de référence SEQ_FRIEND.

Tableau 4-2 Formulaire de préoccupation
insérez la description de l'image ici

3. Table Weibo : le nom de la table de la base de données est WEIBO_TAB et le nom de l'index de référence est SEQ_WEIBO.

Tableau 4-3 Tableau Weibo
insérez la description de l'image ici

4. Table de collection : nom de table de base de données COLLECT_TAB, nom d'index de référence SEQ_COLLECT.

Tableau 4-4 Tableau de collecte
insérez la description de l'image ici

5. Table de commentaires : nom de table de base de données COMM_TAB, nom d'index de référence SEQ_COMM.

Tableau 4-5 Formulaire de commentaire
insérez la description de l'image ici

6. Table intégrale : nom de table de base de données INTEGRAL_TAB, nom d'index de référence SEQ_INTEGRAL.

Tableau 4-6 Tableau des intégrales
insérez la description de l'image ici

7. Table similaire : nom de la table de base de données LIKE_TAB, nom de l'index de référence SEQ_LIKE.

Tableau 4-7 Comme tableau
insérez la description de l'image ici

8. Table de flux intégral : nom de table de base de données RECORD_TAB, nom d'index de référence SEQ_RECORD.

Tableau 4-8 Débitmètre intégré
insérez la description de l'image ici

9. Table d'acheminement : nom de table de base de données TRANS_TAB, nom d'index de référence SEQ_TRANS.

Tableau 4-9 Tableau de transfert
insérez la description de l'image ici

Chapitre 5 Réalisation de la fonction système

5.1 Système de connexion
Sur la page d'enregistrement de connexion au système, lorsque l'utilisateur entre dans la boîte aux lettres, la boîte aux lettres sera envoyée au contrôleur d'arrière-plan via Ajax, et la méthode correspondante dans la couche Service sera appelée. L'interface de la couche Dao est appelée dans la couche Service. méthode pour savoir si la boîte aux lettres de l'utilisateur a été enregistrée. Si elle est enregistrée, elle sera affichée sur la page via le javascript frontal pour demander à l'utilisateur que la boîte aux lettres a été enregistrée. Après avoir entré les informations de base et cliqué sur enregistrer, la les informations d'enregistrement saisies par l'utilisateur seront envoyées au contrôleur d'arrière-plan via le navigateur, et le contrôleur contrôlera la demande. Transférer la page et transmettre les informations d'enregistrement de l'utilisateur au service, initialiser certaines informations de base de l'utilisateur dans le service, telles que comme avatar par défaut, statut par défaut, initialisez les points utilisateur et d'autres opérations, assemblez la source de données utilisateur et appelez la méthode de couche Dao pour enregistrer les informations d'enregistrement de l'utilisateur, comme indiqué dans la figure 5.1 illustrée. Le code de base est le suivant :

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); 	//保存用户注册信息

Fonction de connexion, si vous cliquez sur le mot de passe de connexion automatique suivant, après avoir cliqué sur connexion, transmettez d'abord les informations de nom d'utilisateur et de mot de passe à la couche Service pour le traitement commercial, puis appelez l'interface de couche Dao pour juger si l'adresse e-mail et les informations de mot de passe sont correctes S'ils sont corrects et cliquez la prochaine fois que vous vous connectez, enregistrez le nom de la boîte aux lettres et le mot de passe dans le cookie du navigateur, enregistrez l'utilisateur connecté dans la session et déterminez si l'heure de connexion actuelle et l'heure de la dernière connexion de l'utilisateur sont identiques. jour dans le service qui traite la connexion de l'utilisateur, si ce n'est pas le même jour, ajoutez des points de connexion pour les utilisateurs, modifiez le nombre de points dans la base de données des utilisateurs, puis accédez à la page d'accueil de Weibo, comme illustré à la figure 5.2. Le code de base est le suivant :

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);	//更改用户信息
			}
}

insérez la description de l'image ici

Figure 5.1 Interface de connexion et d'enregistrement de l'utilisateur
insérez la description de l'image ici

Figure 5.2 Interface de la page d'accueil de Weibo

5.2 Système d'information de l'utilisateur
Informations de base de l'utilisateur : comme le montre la figure 5.3, lorsque l'utilisateur clique pour modifier, le navigateur soumet le formulaire, envoie une demande avec les informations de base de l'utilisateur au contrôleur de SpringMVC pour recevoir la demande et assemble le les données du formulaire dans un objet utilisateur, transmises en tant que paramètre à la méthode correspondante dans la couche service pour traitement, appelant l'interface de la couche Dao pour modifier les informations de base de l'utilisateur et modifier les informations de l'objet utilisateur dans la session dans le serveur actuel. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.3 Modifier l'interface des informations de base de l'utilisateur

Changer le mot de passe : cliquez sur changer le mot de passe sur la page du profil utilisateur, il passera à la page de changement du mot de passe comme illustré à la figure 5-4, l'utilisateur peut entrer le mot de passe actuel de l'utilisateur, la page d'accueil envoie une demande asynchrone via Ajax, et l'arrière-plan controller reçoit la requête , si le mot de passe actuel de l'utilisateur est obtenu à partir de la base de données est correct. Si le mot de passe est incorrect, la page d'accueil avertira dynamiquement l'utilisateur via javaScript que le mot de passe est erroné. Si le mot de passe est correct, l'utilisateur peut entrer un nouveau mot de passe et confirmer le nouveau mot de passe. Cliquez sur Confirmer pour modifier Le navigateur soumet le formulaire et transmet le nouveau mot de passe de l'utilisateur à la méthode correspondante dans la couche Service d'arrière-plan. Dans la méthode Service, l'interface de la couche Dao est appelée pour modifier le mot de passe de l'utilisateur dans la base de données et les informations de l'utilisateur dans la session du serveur. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.4 Interface de modification du mot de passe

Modifier l'avatar de l'utilisateur : Cliquez pour modifier l'avatar dans le profil de l'utilisateur, il passera à la page de modification de l'avatar comme illustré à la figure 5.5, l'utilisateur sélectionne le fichier d'avatar, clique sur le téléchargement, le formulaire transférera l'image vers le contrôleur d'arrière-plan , et enregistrer l'avatar de l'utilisateur Sur le serveur, il est jugé que l'avatar précédent de l'utilisateur est l'avatar par défaut du système. Si ce n'est pas le cas, l'image de l'avatar précédent de l'utilisateur est supprimée et la nouvelle adresse de l'avatar de l'utilisateur est enregistrée dans les informations utilisateur, qui est transmis au service pour appeler l'interface de la couche Dao afin de modifier le profil de l'utilisateur dans la base de données. Informations sur l'avatar. Le code de base est le suivant :

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", "图片不存在");
}

insérez la description de l'image ici

Figure 5.5 Modifier l'interface de l'avatar

Modifier le mot de passe : lorsque l'utilisateur clique sur la page pour modifier le mot de passe, le navigateur passe à la page de modification du mot de passe, comme illustré à la figure 5-6. L'utilisateur doit d'abord remplir la réponse en fonction de la question de mot de passe précédemment définie, et la page d'accueil utilise Ajax pour saisir la réponse de l'utilisateur à la question secrète de sécurité est transmise au contrôleur d'arrière-plan, et la réponse à la question secrète de sécurité de l'utilisateur dans la base de données est jugée. Si la réponse secrète de sécurité est erronée, la réponse secrète de l'utilisateur La réponse s'affiche sur la page via JavaScript. Si la réponse de sécurité secrète est correcte, l'utilisateur peut saisir une nouvelle question de sécurité et une réponse de sécurité de l'utilisateur. Après avoir cliqué sur Modifier pour soumettre le formulaire, le navigateur envoie une demande de modification de la réponse de l'utilisateur. question et réponse de sécurité dans la base de données d'arrière-plan. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.6 Modifier l'interface de protection par mot de passe

5.3 Le module Microblog
publie des microblogs : comme le montre la Figure 5.7 sur la page d'accueil de l'utilisateur, les utilisateurs peuvent publier des microblogs, insérer des émoticônes dans les informations du microblog ou choisir d'insérer une image. Sur la page d'accueil, les émoticônes sont générées dynamiquement à l'aide de javaScript. La balise div est affiché sur la page. Lorsque l'utilisateur clique sur publier, le navigateur envoie une demande pour transférer les informations du microblog et les informations sur l'image dans le formulaire de la page d'accueil vers le contrôleur d'arrière-plan, enregistrer les informations sur l'image sur le serveur et enregistrer uniquement le chemin de l'image dans le database , obtenez l'utilisateur de connexion actuel à partir de la session, assemblez la source de données du microblog, transmettez la source de données au service, appelez l'interface de la couche Dao pour enregistrer les informations du microblog dans la base de données. Le code de base est le suivant :

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());
	}

insérez la description de l'image ici

Figure 5.7 Interface de publication d'informations Weibo

Rechercher Weibo : comme illustré à la figure 5.8, saisissez un mot-clé dans la zone de recherche sur la page d'accueil de Weibo, cliquez sur Rechercher pour soumettre le formulaire, le navigateur envoie une demande pour transmettre le mot-clé au contrôleur en arrière-plan et interrogez Weibo dans la base de données. via de vagues informations de requête. Dans la méthode spécifique de la couche Service, appelez l'interface de la couche Dao pour obtenir des informations pertinentes sur le microblog, parcourir la collection, assembler les informations de base du microblog et de l'objet éditeur, convertir l'expression du microblog en une image gif correspondante et ajuster le format horaire du microblog comme correspondant au format, modifiez les mots-clés de recherche dans le contenu Weibo à afficher en rouge, et renvoyez les données modifiées à la page d'accueil pour affichage, comme illustré à la Figure 5.9. Le code de base est le suivant :

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();
	}

insérez la description de l'image ici

Figure 5.8 Interface de publication des informations Weibo

insérez la description de l'image ici

Figure 5.9 Interface d'affichage de la recherche Weibo

Opération Weibo ; cliquez sur Weibo pour aimer, transférer et enregistrer les types de fonctions, soumettez la demande d'identifiant Weibo au contrôleur d'arrière-plan via Ajax, obtenez les informations de connexion de l'utilisateur à partir de la session et transmettez les paramètres à la méthode correspondante du service via Weibo Les différentes opérations du blog appellent l'interface de couche Dao correspondante pour enregistrer les likes, les retweets et les informations de collecte de Weibo dans la base de données. Après avoir cliqué sur le commentaire, passez à JavaScript via l'événement click sur la page de premier plan, envoyez une requête asynchrone au contrôleur d'arrière-plan via Ajax et transmettez l'identifiant Weibo à la méthode correspondante dans la couche Service.Utilisez l'interface de couche Dao pour trouver le numéro Weibo correspondant dans la base de données. Pour les informations de commentaire, la pagination des commentaires de microblog est contrôlée par la classe PageBean correspondante, le nombre d'éléments à afficher dans la pagination est contrôlé par l'instruction SQL au niveau de la couche de base de données, et le json les données sont transmises dans le contrôleur à la page d'accueil pour affichage. À la fin des informations de commentaire, les utilisateurs peuvent publier leurs propres commentaires, ajouter des émoticônes, cliquer sur publier pour soumettre le formulaire au contrôleur d'arrière-plan et appeler l'interface de la couche Dao dans le code d'arrière-plan pour enregistrer les informations de commentaire de l'utilisateur. Comme le montre la figure 5.10. Le code de base est le suivant :

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);

insérez la description de l'image ici

Figure 5.10 Interface d'opération de texte Weibo

Weibo personnel : Comme le montre la Figure 5.11 : Dans la barre de navigation en haut de la page, vous pouvez cliquer pour accéder à la page d'accueil personnelle de l'utilisateur afin d'afficher mon Weibo. Au milieu de la page, la barre de navigation s'affiche en haut de la page, et les informations de base de l'utilisateur sont affichées ci-dessous, et les messages postés par l'utilisateur sont affichés au milieu. Weibo, en cliquant sur l'image insérée dans Weibo peut également agrandir l'image via JavaScript, et afficher les amis recommandés par le système pour l'utilisateur sur le côté droit de la page. La demande envoyée après avoir cliqué sur le bouton My Weibo sera reçue par le contrôleur d'arrière-plan, et l'identifiant de l'utilisateur actuellement connecté sera obtenu à partir de la session du serveur, transmis à la couche Service, et l'interface de la couche Dao sera appelée dans la couche Service pour obtenir l'ID de l'utilisateur actuellement connecté à partir de la base de données. Les informations du microblog sont assemblées dans une collection List, parcourez la collection List, modifiez le format de date de la source de données du microblog, appelez la classe d'outils pour remplacer l'expression dans le texte du microblog avec les informations d'image correspondantes, et utiliser la base de données Oralce dans la pagination du microblog Pseudo-colonne pour obtenir les informations du microblog de l'intervalle correspondant, réaliser la pagination de la couche base de données, transmettre toutes les données qui doit être affiché sur la page au contrôleur, et le contrôleur encapsule ensuite les données dans la réponse Response et les transmet à la page d'accueil. Le code de base est le suivant :

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());

insérez la description de l'image ici

Figure 5.11 Interface personnelle Weibo

5.4 Module ami
Afficher le microblog ami : cliquez sur mon ami dans la barre de navigation de la page pour accéder à la page du microblog ami. Dans le contrôleur d'arrière-plan, obtenez d'abord la valeur d'identifiant de l'utilisateur actuellement connecté à partir de la session, et transmettez-la au Service Dans le service Appelez la méthode de la couche Dao pour trouver d'abord toutes les informations sur les amis de l'utilisateur correspondant dans la table des amis de la base de données, puis vérifiez les informations Weibo correspondant à ces amis dans la base de données Table Weibo dans l'ordre inverse de la version Weibo heure, et répertorier toutes les informations Weibo trouvées et les informations utilisateur publiées sont encapsulées dans une collection List, parcourir la collection List pour modifier la date Weibo, convertir les émoticônes Weibo en noms d'image correspondants, transmettre la collection traitée au contrôleur, et le contrôleur répond avec toutes les données assemblées Accédez à la page de premier plan et utilisez la balise C pour parcourir la liste dans la page de premier plan pour afficher les données Weibo, comme illustré à la Figure 5.12. Le code de base est le suivant :

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());

Fonction de suivi : lorsque l'utilisateur se connecte au système, il peut sélectionner l'utilisateur qui doit suivre parmi les utilisateurs recommandés sur le côté droit de la page. Après avoir cliqué sur Suivre, la page d'accueil envoie une demande asynchrone via la technologie Ajax pour envoyer le l'identifiant de l'utilisateur à suivre jusqu'au contrôleur en arrière-plan. Obtenez les informations de l'utilisateur connecté dans la session à partir du serveur, transmettez l'identifiant de l'utilisateur connecté et l'identifiant de l'utilisateur suivi à la méthode correspondante dans la couche Service, traitez-les dans la méthode correspondante de la couche Service, assemblez la source de données d'informations sur les amis et appelez l'interface de la couche Dao Enregistrez les informations d'attention de l'utilisateur, mettez à jour le numéro d'attention de l'utilisateur en même temps, mettez à jour le nombre de fans de l'utilisateur qui est suivi, puis modifiez les informations de texte de la page en suivant le javascript sur la page d'accueil. Le code de base est le suivant :

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

Ne plus suivre : et suivre le type de fonction, cliquez sur Mes amis dans la barre de navigation, cliquez sur Suivre au milieu, vous pouvez voir tous les amis que je suis, leur nombre d'amis et leurs informations personnelles, comme illustré à la figure 5.13, cliquez sur Ne plus suivre, passez le l'identifiant ami au contrôleur d'arrière-plan via Ajax, obtenez les informations utilisateur dans la demande dans le contrôleur, transmettez l'identifiant ami et l'identifiant utilisateur à la méthode correspondante dans la couche Service, et appelez l'interface de la couche Dao pour correspondre à l'identifiant utilisateur et à l'ami id Les informations d'ami de l'utilisateur sont supprimées et le nombre d'abonnés de l'utilisateur et le nombre de fans de l'utilisateur suivi sont modifiés en même temps. Renvoyez ensuite la réponse pour actualiser la liste d'amis sur la page de premier plan.

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

Blocage d'utilisateurs : Similaire aux utilisateurs non suivis, sauf que dans l'interface de la couche Dao, les enregistrements d'utilisateurs existants ne sont pas supprimés mais logiquement supprimés, c'est-à-dire que le statut de l'enregistrement correspondant dans la table des amis est modifié, et les messages privés et Weibo publiés par le utilisateur bloqué Les informations ne seront pas vues par les utilisateurs bloqués. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.12 Interface d'informations de l'ami Weibo

insérez la description de l'image ici

Figure 5.13 Interface de la liste d'amis

Message privé : Vous pouvez afficher le nombre de messages privés non vérifiés de l'utilisateur de connexion actuel sur la page des utilisateurs recommandés, comme illustré à la Figure 5.14, le nombre de messages privés non lus est à travers toutes les informations de message privé dans la base de données pour tous les destinataires du utilisateur de connexion actuel, et le statut des informations est Pour les messages privés non lus, transmettez la valeur obtenue à la page d'accueil, et toutes les valeurs affichées sur la page d'accueil sont obtenues à partir de la réponse renvoyée par le serveur via des expressions EL. Cliquez sur le message privé non lu ou cliquez sur le bouton de message privé dans la liste d'amis illustrée à la Figure 5.13 pour accéder à la page de message privé de l'utilisateur. Le code de base est le suivant :

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);

insérez la description de l'image ici

Figure 5.14 Interface de message privé non lu par l'utilisateur

Afficher les messages privés : comme le montre la figure 5.15, lorsqu'un utilisateur clique sur un message privé pour suivre un ami, le contrôleur d'arrière-plan accède à ma page d'utilisateur de message privé. Le côté gauche de la page affiche les dernières informations de message privé de l'utilisateur, et le côté droit de la page affiche tous les messages privés qui ont été envoyés. Cliquez sur un utilisateur dans la liste pour envoyer un message privé directement à l'utilisateur, et les émoticônes sont autorisées dans le message privé. Dans le code d'arrière-plan, passez l'ID utilisateur pour envoyer le message privé et l'ID utilisateur de connexion obtenu à partir de la Session à la méthode correspondante dans la couche Service, appelez l'interface de la couche Dao pour trouver tous les enregistrements de messages privés liés à l'utilisateur dans le base de données et le modifier en même temps Le statut de tous les messages privés est lu, assemblez les enregistrements obtenus dans une collection, parcourez la collection et appelez la classe outil pour modifier le format de date du message privé et le format d'expression dans le texte, et en même temps obtenir tous les utilisateurs qui ont des enregistrements de messages privés avec l'utilisateur de connexion actuel à partir de la base de données, renvoyer la collection assemblée au contrôleur, le contrôleur répond aux données sur la page d'accueil, parcourt les données de la collection et l'affiche sur la première page JSP. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.15 Interface de message privé de l'utilisateur

Envoyer un message privé : l'utilisateur sélectionne d'abord l'utilisateur à envoyer, entre les informations du message privé à envoyer et peut insérer des émoticônes dans le message privé. Après avoir cliqué sur envoyer, le formulaire sera soumis. Le navigateur envoie la demande en arrière-plan contrôleur, et le contrôleur obtient l'ID de l'utilisateur expéditeur Et recevez l'ID de l'utilisateur, appelez la méthode dans la couche Service, assemblez la source de données en tant qu'informations de message privé, définissez les informations de message privé comme non lues, appelez l'interface de couche Dao dans le méthode correspondante dans la couche Service pour enregistrer les informations de message privé dans la base de données. Le code de base est le suivant :

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");

Rechercher des utilisateurs : dans la page de recherche d'utilisateurs, les utilisateurs peuvent entrer des mots-clés de surnoms d'utilisateurs pour interroger de manière approximative les utilisateurs associés. Lorsque les utilisateurs entrent des surnoms d'utilisateurs à interroger, le navigateur envoie une demande avec des mots-clés et d'autres informations pour accéder à une méthode spécifique dans le contrôleur. , la logique de traitement de la méthode dans Service est appelée à l'intérieur de la méthode du contrôleur et la couche métier appelle la méthode de recherche dans l'interface de la couche Dao pour rechercher les utilisateurs dont les surnoms d'utilisateur contiennent des mots-clés, assembler les utilisateurs correspondants obtenus à partir de la base de données dans un ensemble et traverser l'ensemble à Les mots-clés contenus dans le surnom de l'utilisateur sont changés en rouge, le contrôleur renvoie une réponse et saute à la page de résultats de recherche, et parcourt la collection pour afficher toutes les informations trouvées sur l'utilisateur. Comme le montre la Figure 5.16. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.16 Interface utilisateur de recherche

Page d'accueil de l'utilisateur : sur la page, cliquez sur le nom ou la photo de profil d'un utilisateur pour accéder à la page d'accueil personnelle de l'utilisateur correspondant. La page d'accueil personnelle de l'utilisateur affiche les informations personnelles de l'utilisateur et le dernier Weibo de l'utilisateur, classés par ordre chronologique inverse, et l'utilisateur peut également exploiter les goûts, les transferts, les commentaires et les favoris de Weibo. Dans le code acquis, lorsqu'un utilisateur clique sur l'avatar ou le nom d'un autre utilisateur, le navigateur envoie une requête portant l'identifiant de l'utilisateur au contrôleur d'arrière-plan. Le contrôleur appelle la méthode correspondante dans le Service, appelle l'interface de la couche Dao dans la méthode Service pour afficher les informations de base de l'utilisateur et les informations Weibo de l'utilisateur à partir de la base de données, et stocke toutes les données dans la collection. Revenez au contrôleur, et le contrôleur ramène les données à la page d'accueil pour l'affichage, comme illustré à la Figure 5.17. Le code de base est le suivant :

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()));
}

insérez la description de l'image ici

Figure 5.17 Interface de la page d'accueil de l'utilisateur

5.5
Sortie du module Conch : lorsque l'utilisateur accède à la page d'accueil Conch, la page du navigateur envoie une demande au contrôleur backend pour appeler une méthode spécifique dans la couche métier, et le service appelle l'interface de la couche Dao pour trouver des questions conques liées à différents filtrer les conditions dans la base de données et encapsuler les problèmes trouvés dans une collection, envoyer la réponse du serveur via le contrôleur, accéder à la page d'accueil de Conch et afficher tous les problèmes de Conch en boucle. Si l'utilisateur a besoin de publier une question, après avoir rempli la description de la question et le nombre de points à récompenser, cliquez sur Publier, et le navigateur soumet les données du formulaire au contrôleur d'arrière-plan. Dans la couche Service, il est d'abord jugé si les points de conque de l'utilisateur sont supérieurs aux points de récompense, s'ils sont inférieurs à Les points de récompense reviendront à la page du navigateur pour indiquer à l'utilisateur que les points sont insuffisants. Si les points sont suffisants, appelez l'interface de la couche Dao pour enregistrer les questions de conque de l'utilisateur dans la base de données et, en même temps, réduisez les points de conque de l'utilisateur pour modifier les informations de base de l'utilisateur. Le code de base est le suivant :

//海螺分页
	//获取海螺总数
	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());

insérez la description de l'image ici

Figure 5.18 Interface de la page d'accueil de Conch

Afficher les problèmes de conque : lorsqu'un utilisateur clique sur un problème spécifique sur la page d'accueil de la conque, le navigateur envoie une demande au contrôleur d'arrière-plan pour appeler la méthode correspondant à la couche Service, et appelle l'interface de la couche Dao dans la couche Service pour afficher le problème spécifique. informations sur la conque via le numéro du problème de la conque. L'identifiant de l'utilisateur qui a posté la question recherche les informations de l'éditeur correspondant dans la base de données, et le serveur renvoie une réponse au navigateur, affichant les informations spécifiques de la conque, et l'utilisateur le nom, le titre de l'utilisateur, la date de sortie, la question de la conque, les points de récompense et la question de l'utilisateur qui publie sont affichés en haut L'état de la question, etc., affiche toutes les informations de réponse de la question au milieu, l'utilisateur de la personne qui répond le nom, le titre, le contenu de la réponse, la date de la réponse, son acceptation, etc., comme illustré à la Figure 5.19. Le code de base est le suivant :

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);

insérez la description de l'image ici

La figure 5.19 visualise l'interface spécifique du problème

Répondez aux questions sur les conques : vous pouvez répondre aux questions sur les conques au bas de la page d'informations détaillées sur les questions sur les conques, saisir la réponse dans la zone de saisie, insérer des informations sur les émoticônes, cliquer sur répondre pour envoyer le formulaire, le navigateur demande de transmettre les données du formulaire à le contrôleur d'arrière-plan et est contrôlé La méthode spécifique du serveur reçoit, obtient le numéro d'utilisateur dans la session, assemble la source de données des informations de réponse, transmet les paramètres au service et appelle l'interface de couche Dao dans le service pour enregistrer les informations de réponse de la conque, comme le montre la Figure 5.20. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.20 Interface de réponse à la question Conch

Accepter la réponse à la question : sur la page d'accueil de Conch Questions, les utilisateurs peuvent accéder à la page Conch Questions publiée par l'utilisateur en cliquant sur My Conch Questions. Sur la page Conch Questions publiée par l'utilisateur, ils peuvent choisir la réponse qu'ils souhaitent pense est la plus correcte. La réponse devient une réponse acceptée, augmentant les points de conque de l'adoptant, comme le montre la figure 5.21. Dans le code d'arrière-plan, lorsque l'utilisateur clique pour accepter, la requête du navigateur portant l'identifiant de la question conque et la réponse à la question les informations sont reçues par la méthode spécifique dans le contrôleur d'arrière-plan, appelez la couche Service dans le contrôleur, appelez l'interface de la couche Dao dans la couche métier pour modifier l'état du problème de conque dans la base de données en résolu, modifiez l'état du commentaire de l'accepté utilisateur dans le tableau des commentaires à accepter, et actualisez la page du problème de la conque avant. Le code de base est le suivant :

//设置海螺状态为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());

insérez la description de l'image ici

Figure 5.21 Accepter l'interface question-réponse

5.6
Connexion de l'administrateur du module administrateur d'arrière-plan : l'administrateur peut cliquer sur la connexion de l'administrateur sur la page de connexion pour accéder à la page de connexion de l'administrateur, comme illustré à la figure 5.22. Une fois l'administrateur connecté, la page envoie une demande au contrôleur d'arrière-plan, et l'arrière-plan La couche Contrôleur reçoit la requête, appelle la méthode dans la couche métier avec le nom d'utilisateur et le mot de passe comme paramètres, appelle l'interface de la couche Dao dans la couche Service et interroge la table des comptes administrateur dans la base de données, renvoie la classe administrateur si elle existe , et la lance si elle n'existe pas Lorsqu'une exception se produit, l'exception est levée couche par couche, reçue dans la couche contrôleur, et les informations d'erreur sont enregistrées dans la valeur de retour de la méthode, et la page demande. Si l'utilisateur nom et mot de passe sont corrects, il passera à la méthode de traitement de la page d'accueil de l'administrateur dans le contrôleur. Dans la méthode de traitement de la page d'accueil de l'administrateur, les données à afficher sont obtenues et affichées. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.22 Interface de connexion de l'administrateur

Page d'accueil de l'administrateur : après la connexion, le système accédera à la page d'accueil de l'administrateur et la barre de navigation s'affichera en haut de la page d'accueil. En termes de contenu de la page, quatre graphiques seront utilisés pour afficher le nombre total d'utilisateurs Weibo. , commentaires, conque, commentaires, réponses, etc. Et le numéro du mois en cours, le graphique à barres ci-dessous montre le nombre des 7 jours les plus proches d'aujourd'hui. L'arrière-plan passe d'abord à la méthode de traitement correspondant à la page d'accueil de l'administrateur dans la couche Contrôleur, appelle la méthode correspondante dans la couche Service pour obtenir les données d'affichage de la page d'accueil, assemble les données obtenues dans une collection Map et appelle la couche Dao dans la couche de service La méthode pour obtenir l'utilisateur, Weibo, le commentaire, la réponse et d'autres données qui doivent être affichées sur la page d'accueil sont stockées dans la collection Map, les données de valeur de retour sont obtenues dans la couche de contrôle et stockées dans la réponse du serveur , et retour à la page d'accueil pour afficher les données à l'aide d'expressions EL , comme illustré à la Figure 5.23. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.23 Interface de la page d'accueil de l'administrateur

Page d'accueil de gestion des utilisateurs : le code d'arrière-plan appelle la méthode correspondante dans la couche Service, et la méthode Service appelle l'interface de la couche Dao pour interagir avec la base de données, obtenir toutes les informations utilisateur dans la base de données et les encapsuler dans une collection List, et la renvoyer à la couche Contrôleur pour répondre à l'utilisateur Collection de listes au navigateur Dans la page, les informations de l'utilisateur sont parcourues et affichées via la balise C. La pagination de la page utilise la classe de pagination personnalisée PageBean pour enregistrer les informations de pagination et effectue la pagination au niveau de la base de données pour obtenir 10 éléments de données à la fois. Le code de base est le suivant :

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);

insérez la description de l'image ici

Figure 5.24 Interface de gestion des utilisateurs

Rechercher des utilisateurs : saisissez les mots-clés dans le surnom de l'utilisateur sur la page de gestion des utilisateurs pour rechercher des utilisateurs, et le système affichera la partie des informations utilisateur obtenues où le surnom est le mot-clé d'entrée en rouge. Dans le code d'arrière-plan, cliquer sur Rechercher transmettra le mot-clé du surnom d'utilisateur saisi par l'administrateur au contrôleur d'arrière-plan, appellera la méthode utilisateur de recherche correspondante dans la couche Service du contrôleur et appellera l'interface de la couche Dao dans la couche Service de la base de données. utilisateurs via des requêtes floues. Et renvoyez les données obtenues couche par couche, répondez à la première page dans le contrôleur, puis affichez-les sur la page, comme illustré à la figure 5.25. Le code de base est le suivant :

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));
}

insérez la description de l'image ici

Figure 5.25 Interface utilisateur de recherche d'administration

Bannissement de l'utilisateur : l'administrateur peut cliquer sur le bouton de bannissement dans la colonne des opérations de la page de gestion des utilisateurs pour bannir l'utilisateur en infraction. L'administrateur peut entrer le nombre de jours pour le bannissement. Avant cette date, l'utilisateur ne peut pas se connecter normalement, et le l'administrateur peut débloquer des utilisateurs à l'avance en cliquant sur Débloquer. La page spécifique est illustrée à la Figure 5.26. Dans le code d'arrière-plan, l'interface de la couche Dao est appelée dans la couche Service pour modifier le statut de l'utilisateur et la date d'interdiction. L'annulation de l'interdiction est similaire à l'interdiction des utilisateurs, donc aucune instruction spécifique ne sera donnée. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.26 Interdire l'interface utilisateur

Page d'accueil de gestion Weibo : les administrateurs cliquent sur Gestion Weibo dans la barre de navigation, le système passe à la page de gestion Weibo de l'utilisateur, affichant les informations Weibo utilisées dans le système, les administrateurs peuvent également saisir des mots-clés dans le contenu Weibo Rechercher Weibo, et en même temps supprimer le Weibo avec de mauvaises informations, ou restaurer le Weibo supprimé. La page de gestion de Weibo est illustrée à la figure 5.27. Dans le code d'arrière-plan, lorsque l'utilisateur clique sur la gestion de Weibo dans la barre de navigation, le navigateur enverra la demande correspondante au contrôleur de le framework SpringMVC pour plus de méthodes de traitement, appelez la méthode d'affichage de tous les microblogs dans la couche Service dans le contrôleur, puis appelez la méthode de la couche Dao dans la couche Service pour obtenir toutes les informations Weibo, en termes de pagination, n'utilise pas la méthode de pagination dans la page d'accueil, mais utilise la pseudo-colonne d'Oracle pour effectuer la pagination dans la base de données, obtient 10 données à la fois et répond enfin aux informations Weibo obtenues dans le contrôleur Au navigateur, le navigateur affiche Weibo informations via la traversée de balises c. Le code de base est le suivant :

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));
		}
}

insérez la description de l'image ici

Figure 5.27 Interface de gestion Weibo

Recherche de microblog : les administrateurs peuvent rechercher des microblogs avec le mot-clé dans le contenu du microblog en saisissant des mots-clés dans le contenu du microblog, et les mots-clés dans le contenu du microblog recherché seront marqués en rouge, comme indiqué dans la page spécifique Comme indiqué dans 5.28, dans le code d'arrière-plan, une méthode spécifique dans le contrôleur reçoit la demande de recherche de microblog envoyée par la navigation, appelle la méthode correspondante dans la couche Service, passe des mots clés en tant que paramètres à l'interface de la couche Dao et recherche dans l'interface de la couche Dao Le contenu du microblog dans la base de données La table microblog contient les informations de microblog du mot-clé, et le microblog correspondant est trouvé dans la base de données via une requête floue. Ensuite, encapsulez les informations de microblog trouvées dans la collection List, et revenez à la méthode correspondante dans le contrôleur couche par couche, et répondez les données au navigateur dans la méthode, et le navigateur reçoit la réponse et affiche les données via la balise c sur la page. Le code de base est le suivant :

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

insérez la description de l'image ici

Figure 5.28 Interface Weibo de recherche d'administrateur

Suppression de Weibo : dans la page de gestion de Weibo, l'administrateur peut juger si le Weibo est illégal ou non en fonction du contenu du Weibo. Si les informations de Weibo contiennent de mauvaises informations, l'administrateur peut supprimer le Weibo via le bouton de suppression dans la barre d'opération . Blog ou vous pouvez restaurer le Weibo supprimé. Lorsque l'utilisateur clique pour supprimer, la page enverra une demande au serveur avec des paramètres tels que le numéro Weibo, et la demande sera reçue par la méthode correspondante dans le contrôleur, et le Le numéro Weibo sera En paramètre, utilisez la méthode correspondante dans Service, appelez l'interface de la couche Dao dans la méthode, et modifiez le statut du microblog correspondant au numéro de microblog dans la base de données à supprimer.La restauration d'un microblog est similaire à la suppression , sauf que l'état des informations de microblog correspondantes dans la base de données est modifié en Normal peut être. Le code de base est le suivant :

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

Page d'accueil de la gestion des conques : l'administrateur clique sur la gestion des conques dans la barre de navigation pour accéder à la page de gestion des conques, comme illustré à la Figure 5.29, la barre de navigation se trouve en haut de la page et le contenu de la page affiche toutes les informations sur les conques, le boîte de recherche de conque et en bas Les informations de conque incluent le numéro de série, le nom de l'éditeur, le contenu de la conque, la date de publication, l'état de la conque et les opérations pouvant être effectuées. En termes de code d'arrière-plan, lorsque l'utilisateur clique sur la gestion de la conque dans la barre de navigation, le le navigateur envoie une requête, requête reçue par la méthode correspondante dans le contrôleur, appelez l'interface de la couche Dao dans le service pour trouver toutes les informations de conque dans la table de conque de la base de données, enregistrez-la dans la collection List, parcourez la collection List pour assembler l'éditeur les informations de l'utilisateur, modifier le format de la date, etc., et enfin assembler la collection de la liste des numéros est renvoyée au contrôleur, et la réponse est envoyée au navigateur pour accéder à la page d'accueil de la gestion de la conque, et les informations de conque recherchées sont affichées en traversant la balise C. Parce que la méthode de pagination utilisée dans le système est la même, elle ne sera pas décrite ici. Le code de base est le suivant :

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);

insérez la description de l'image ici

Figure 5.29 Interface de la page d'accueil de la gestion des conques

Conch Search : Sur la page d'accueil de la gestion des conques, compte tenu du grand nombre de conques, il est difficile de trouver le problème, la fonction de recherche est donc configurée. L'administrateur peut rechercher des problèmes de conque en saisissant les mots-clés dans le contenu de la conque dans la conque. Dans l'affichage de la recherche Lorsque les résultats sont obtenus, les mots-clés de la recherche seront marqués en rouge pour faciliter la visualisation. La page spécifique est illustrée à la Figure 5.30. Dans le code d'arrière-plan, lorsque l'utilisateur entre un mot clé et clique pour effectuer une recherche, le navigateur envoie une requête à la méthode spécifiée dans le contrôleur pour la recevoir, appelle la méthode correspondante dans la couche Service du contrôleur pour traiter la logique métier, et appelle ensuite l'interface de la couche Dao dans la couche Service pour passer La requête floue recherche les informations de conque correspondantes dans la table de conque de la base de données, et répond enfin les informations de conque trouvées au navigateur dans le contrôleur, et parcourt et affiche les données à travers la balise c sur la page. Parce que le système utilise la même méthode de pagination, je n'entrerai donc pas dans les détails. Le code de base est le suivant :

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);

insérez la description de l'image ici

Figure 5.30 Interface de recherche de conque

Chapitre 6 Test du système

6.1 Vue d'ensemble des tests système
Au stade de l'écriture du code, les tests unitaires sont principalement utilisés pour tester si le code présente des défauts, si les fonctions du système peuvent fonctionner normalement et si le logiciel peut atteindre l'objectif attendu. les cas de test des modules correspondants Étapes pour tester s'il y a des défauts dans le système, tout en utilisant des tests de boîte noire et des tests de boîte blanche pour améliorer les fonctions du système, optimiser les codes logiciels et améliorer la qualité des systèmes logiciels.

6.2 Scénarios de test
6.2.1 Module d'enregistrement des utilisateurs
Tableau 6-1 Enregistrement des utilisateurs
insérez la description de l'image ici

6.2.2 Module de connexion utilisateur
Tableau 6-2 Connexion utilisateur
insérez la description de l'image ici

6.2.3 Module Modifier les informations utilisateur
Tableau 6-3 Modifier les informations utilisateur
insérez la description de l'image ici
insérez la description de l'image ici

6.2.4 Module Weibo
Tableau 6-4 Module utilisateur Weibo
insérez la description de l'image ici
insérez la description de l'image ici

6.2.5 Module ami utilisateur
Tableau 6-5 Module ami utilisateur
insérez la description de l'image ici

6.2.6 Module utilisateur Conch
Tableau 6-6 Module utilisateur Conch
insérez la description de l'image ici

6.2.7 Module administrateur
Tableau 6-7 Module administrateur
insérez la description de l'image ici
insérez la description de l'image ici

6.3
Omission d'analyse de test

6.4 Résumé de ce chapitre
Dans ce chapitre, les cas de test du système sont principalement écrits pour tester si le système peut réaliser les fonctions conçues et s'il contient divers défauts. Après avoir testé le système selon les cas de test, on constate qu'il y a il y a peu de défauts visibles dans le système, certains défauts découverts ont également été résolus, mais aucun système n'est absolument exempt de défauts, de sorte que les défauts du système doivent être découverts en permanence lors de l'utilisation ultérieure.

Résumé du chapitre 7
omis


[1] Jia Wenxiao, Deng Junjie. Analysis of Java-based Web Development Technology [J]. Electronic Testing, 2016 [ 2] Li Chuanyang. Design and
Implementation of Weibo Analysis System [D]. Beijing University of Posts and Telecommunications, 2015
[3] Liu Yunchen. Conception et construction de sites Web [M]. Presses universitaires de Tsinghua, 2008 [4]
Qin Yahua. Conception et mise en œuvre d'un site Web de microblog basé sur WEB2.0 [D]. Université de technologie de Pékin 2012
[5] Chen Ling, Xia Xun. Utilisation du SQL dynamique de Mybatis pour réaliser la pagination physique [J]. Technologie et application numériques. 2011(11) [6]
Sa Shixuan, Wang Shan. Introduction aux systèmes de base de données (troisième édition) [M]. Pékin : supérieur Education Press, 1998
[7] Java-based database access technology research [J]. Science and Technology Information. 2009 (04) [ 8]
Zhang Feng. Web application research and implementation based on Ajax technology and J2EE framework [D]. Chine Université des géosciences 2008
[9] Programmation réseau basée sur la technologie Java multithreading [J]. Compétences en programmation informatique et maintenance. 2009 (22)
[10] Li Wei. Conception d'un petit système pratique de chat instantané en réseau [J]. Journal of Yangtze University ( Natural Science Edition). 2011(12)
[11] Zhong Ruiqi. Analyse et conception basées sur Weibo Embedding Small Partner Reading Network [D]. South China University of Technology 2011 [
12] Rédigé par Wang Shaofeng. Objet- Oriented Technology UML Course [M]. Tsinghua University University Press, 2004
[13] Xu Chunmian. Recherche sur les questions liées au développement de sites Web [J]. Communication World. 2015 (09) [14] Zhang Yu, Wang Yinghui
, Zhang Xiangnan. Conception et implémentation d'un framework MVC basé sur Spring [J].Ingénierie informatique.2010(04)
[15] Hu Yiqiao, Zhang Liping. Choix du modèle de développement J2EE [J]. Application de système informatique. 2002 (08) [16] Wang Liai. Conception et mise en œuvre
du site Web du cours "Programmation Java" [J]. Connaissances et technologies informatiques 2016(27)
[17] Rong Yandong. Application Research on Mybatis Persistence Layer Framework [J]. Information Security and Technology. 2015(12)

Remerciements
omis


5. Téléchargement du code source :

Le code source et la thèse de ce projet sont les suivants, les amis dans le besoin peuvent cliquer pour télécharger. Si le lien échoue, vous pouvez cliquer sur la carte ci-dessous pour scanner le code afin de le télécharger vous-même.

numéro de série Un ensemble complet de ressources pour la conception de diplômes (cliquez pour télécharger)
Le code source de ce projet Conception et implémentation d'un système de microblog d'architecture BS basé sur javaEE+SSM+MySql (code source + document)_JAVAEE_SSM_BS architecture microblog system.zip

Je suppose que tu aimes

Origine blog.csdn.net/m0_66238867/article/details/125471185
conseillé
Classement