Design und Implementierung einer Plattform zur Meldung von Falschinformationen im Internet auf Basis von JavaWeb

1. Einleitung

Mit der rasanten Entwicklung des Internets ist das Problem schlechter Informationen im Internet immer deutlicher geworden, was zu ernsthaften Problemen im Leben und in der sozialen Ordnung der Menschen geführt hat. Zu den schlechten Informationen im Internet gehören Pornografie, Gewalt, Glücksspiel, Betrug und andere schlechte Inhalte. Die Verbreitung solcher Informationen wirkt sich negativ auf die körperliche und geistige Gesundheit junger Menschen aus und zerstört außerdem die gute Ordnung und Moral der Gesellschaft. Angesichts dieses Problems ist es dringend notwendig, eine effiziente und bequeme Plattform für die Meldung schlechter Informationen im Internet einzurichten.

Ziel dieses Projekts ist der Aufbau einer auf der JavaWeb-Technologie basierenden Netzwerkplattform für die Meldung fehlerhafter Informationen, um Internetnutzern einen sicheren, schnellen und anonymen Meldekanal für die Meldung illegaler und fehlerhafter Informationen bereitzustellen. Über diese Plattform können Benutzer Materialien zur Meldung schlechter Informationen, einschließlich Text, Bilder, Audio- und Videomaterial usw., einreichen und detaillierte Beschreibungen und relevante Hinweise auf schlechte Informationen bereitstellen. Das System führt automatisch eine vorläufige Prüfung und Klassifizierung der übermittelten Informationen durch und leitet die Informationen dann zur Verarbeitung an die zuständigen Strafverfolgungsbehörden oder Regulierungsbehörden weiter.

Kurz gesagt, dieses Projekt zielt darauf ab, eine auf JavaWeb basierende Plattform zum Melden schlechter Informationen im Internet einzurichten. Durch die Bereitstellung eines sicheren, schnellen und anonymen Meldekanals kann es Benutzern helfen, schlechte Informationen im Internet rechtzeitig zu entdecken und zu melden. den Netzwerkraum reinigen und die soziale Ordnung aufrechterhalten. Durch soziales Design werden Benutzer dazu ermutigt, Informationen untereinander weiterzugeben, eine Gemeinschaft der gegenseitigen Beteiligung zu bilden und gemeinsam eine grüne und gesunde Netzwerkumgebung zu schaffen.

2. Entwicklungstechnologie

2.1 Einführung in JSP

Das von der JSP-Technologie entwickelte Webanwendungsprogramm basiert auf Java und verfügt über die Eigenschaften einer plattformübergreifenden Java-Plattform sowie über die Trennung von Geschäftscode, die Wiederverwendung von Komponenten, eine grundlegende Java-Servlet-Funktion und eine Vorkompilierungsfunktion. Es weist folgende Eigenschaften auf: 

Das Arbeitsprinzip von JSP besteht darin, dass, wenn der Browser des Benutzers eine JSP-Datei vom WEB-Server anfordert, der WEB-Server auf die HTTP-Anfrage antwortet, die JSP-Engine das JSP-Logo und das kleine Skript interpretiert und mithilfe der JDBC-Technologie auf die zu generierende Datenbank zugreift Der angeforderte Inhalt wird durch Zugriff auf die Java-Bean-Komponente bereitgestellt. Das Ergebnis wird in Form einer Htm1- oder XML-Seite an den Browser zurückgegeben.

Servlet bietet Webentwicklern einen einfachen und konsistenten Mechanismus zur Erweiterung der Funktionen des Webservers und zur Interaktion mit vorhandenen Geschäftssystemen. Servlet kann als ein Applet betrachtet werden, das auf der Serverseite ausgeführt wird. Ein Java Bean ist eine „Klasse“, die durch Kapselung von Eigenschaften und Methoden zu einem Objekt mit bestimmten Funktionen oder der Verarbeitung eines bestimmten Geschäfts wird. JavaBeans werden zur Verwaltung in Paketen organisiert. Tatsächlich wird eine Gruppe von Java Beans vor der Definition jeder Klasse im XX-Verzeichnis mit Paket XX abgelegt. Sie müssen im Verzeichnis CLASS PATH der Systemumgebung abgelegt werden Das System kann sie finden. Die Java Bean. Die JSP-Technologie ist eine Erweiterung der Servlet-Technologie und bietet Unterstützung für die Erstellung von HTML- und XML-Seiten. Webdesigner können problemlos feste oder statische Vorlagendaten mit dynamischen Inhalten kombinieren.

2.2 Übersicht über die B/S-Struktur

Die B/S-Struktur ist ein Netzwerkstrukturmodell nach dem Aufkommen des Webs. Es handelt sich um eine Architektur, in der der Browser und der Server interagieren, und ihr Betriebsmechanismus ist wie folgt. Zuerst sendet der Browser eine Anfrage über den Domänennamen und die URL an den Browser. Nachdem der Browser die Anfrage akzeptiert hat, beginnt er mit der Analyse der URL, um die Moduldatei zu finden, und generiert eine HTML-Datei gemäß den Parametern in der URL und im Modul Datei und sendet die generierte HTML-Datei an den Browser. Akzeptieren Sie das Antwort-HTML-Dokument, analysieren und organisieren Sie die zugehörigen Ressourcendateien und zeigen Sie dann die Seite an. Ein vollständiger Vorgang sieht folgendermaßen aus. Das B/S basiert auf dem WAN, benötigt in der Regel nur ein Betriebssystem und einen Browser und richtet sich an unbekannte Benutzergruppen. Die Fähigkeit, die Sicherheit zu kontrollieren, ist relativ schwach, aber die Zugriffsgeschwindigkeit ist relativ hoch und muss kontinuierlich optimiert werden. Seine Komponenten sind unabhängig und erfüllen ihre eigenen Aufgaben. Jeder Teil kann eine wichtige Rolle spielen. Durch den Austausch einzelner Komponenten kann das System verbessert werden wird nahtlos aktualisiert. Die Kosten für die Systemwartung werden minimiert und Benutzer können ein Upgrade durchführen, indem sie es aus dem Internet herunterladen und installieren. B/S basiert auf dem Browser und verfügt über umfangreichere und lebendigere Ausdrücke für die Kommunikation mit Benutzern. Die meisten davon sind sehr schwierig, wodurch die Entwicklungskosten gesenkt werden.

2.3 Einführung in Servlets

Servlet (Server Applet) ist die Abkürzung für Java Servlet und wird als kleines Dienstprogramm oder Dienstanschluss bezeichnet. Es handelt sich um ein serverseitiges Programm  , das in Java geschrieben ist und die Eigenschaften aufweist, Protokollenunabhängig von Plattformen und Webinhalt . Ein Servlet ist eine Klasse in der Programmiersprache Java, die verwendet wird, um die Fähigkeiten von Servern zu erweitern , die Anwendungen hosten, auf die über ein „Anfrage-Antwort“-Programmiermodell zugegriffen werden kann. Obwohl Servlets auf jede Art von Anfrage reagieren können, werden sie normalerweise nur zur Erweiterung von Webserveranwendungen verwendet.

2.4 Einführung in MYSQL

Die Datenbank ist als Datenspeicherort ein Muss für das Projekt. MySQL ist eine sehr gute relationale Datenbank. Das frühe MySQL gehörte nicht Oracle, sondern wurde später von ihm erworben. MySQL ist sehr klein, das Installationspaket ist nur wenige Megabyte groß und das Schreiben der SQL-Sprache ist relativ einfach zu erlernen. Das Wichtigste ist, dass MySQL auch eine Open-Source-Software ist, sodass keine zusätzlichen Kosten anfallen Das System selbst fasst auch das durch Lernen erlernte Wissen zusammen. Bei der Entwicklung des Systems ist es vor allem am besten, so viel wie möglich freie Software zu verwenden. Wählen Sie daher MySQL für die Datenbankverwaltung. Die Kapazität von MySQL ist ebenfalls sehr groß und unterstützt gleichzeitig den Betrieb von Unterdatenbanken und Untertabellen sowie die Verteilung. Daher entscheiden sich immer mehr kleine und mittlere Unternehmen für dieses Datenbankverwaltungstool. Erwähnenswert ist auch, dass Open Source auch einen Nachteil hat, nämlich dass es leicht zu knacken und zu hacken ist, sodass die Verwendung von MySQL immer noch hauptsächlich auf kleine und mittlere Unternehmen konzentriert ist.

2.5  JavaScript

Als dynamisch kompilierte Skriptsprache sind die Vorteile von JavaScript selbstverständlich. Mit der Geburt der Webentwicklung kamen verschiedene Entwicklungstechniken auf den Markt. Um in der großen Umgebung zu bestehen, hat JavaScript auch begonnen, sich an die Nicht-Browser-Umgebung anzupassen. Wie Java kann auch JavaScript objektorientiert sein, was Schülern, die die Java-Sprache gelernt haben, beim Erlernen von JavaScript helfen kann. Darüber hinaus kann JavaScript mit CSS kombiniert werden, um viele interessante Seiteneffekte zu erzeugen, was der Hauptgrund dafür ist, dass JavaScript im allgemeinen Umfeld immer noch beliebt ist.

2.6  Tomcat-Server

Tomcat kann nach einfacher Konfiguration auf Entwicklungstools (wie IDEA, Eclipse) verwendet werden. Der Hauptgrund für die Verwendung des Tomcat-Servers besteht darin, dass es sich zunächst einmal um eine Open-Source-Software handelt und keine zusätzliche Zahlung erforderlich ist. Sie können den Quellcode und die Dokumente einfach auf der offiziellen Website von Apache herunterladen, was sehr praktisch ist. Zweitens ist Tomcat sehr klein. Da die Entwicklung und der Betrieb des Systems hohe Anforderungen an die Computerkonfiguration stellen, kann es sonst sehr leicht zu einem Einfrierphänomen kommen. Daher ist es bei der Auswahl von Software von Drittanbietern besser, diese zu verwenden So viel kleinere Software wie möglich, daher ist Tomcat auch unter diesem Gesichtspunkt sehr gut geeignet.

2.7  Eclipse-Entwicklungstools

Eclipse ist eine erweiterbare Open- Source - Entwicklungsplattform auf Java -Basis. An sich handelt es sich nur um ein Framework und eine Reihe von Diensten zum Aufbau einer Entwicklungsumgebung mithilfe von Plug-In- Komponenten . Eclipse wird jedoch mit einem Standardsatz von Plug-Ins geliefert, einschließlich Java- Entwicklungstools (Java Development Kit, JDK ). Weil es ihnen ermöglicht, Tools zu erstellen, die sich nahtlos in die Eclipse-Umgebung integrieren lassen. Da der größte Teil von Eclipse über Plug-Ins bereitgestellt wird, kann es Benutzern eine konsistente und einheitliche integrierte Entwicklungsumgebung bieten. Wählen Sie ihn, weil er tragbar, praktisch und schnell zu realisierende Projekte ist.

3. Detailliertes Systemdesign

Die Plattform zur Meldung illegaler und schlechter Informationen ist je nach Geschäftsinhalt in ein Administratorsystem und ein Benutzeranmeldesystem unterteilt. Das Moduldesign des Systems basiert auf der Anforderungsspezifikation und der Systemarchitektur, indem die Architektur verfeinert, die Anwendungsfälle analysiert und Module entworfen werden, um die Designelemente zu identifizieren, die Verhaltensdetails der Designelemente zu ermitteln und die Definition der zu verfeinern Designelemente, um sicherzustellen, dass die Anwendungsfälle insgesamt auf dem neuesten Stand sind.

3.1 Benutzermoduldesign

Das Benutzermodul dient hauptsächlich der Benutzerregistrierung, der Benutzeranmeldung, der Meldung und Ausfüllung illegaler Informationen, der Änderung persönlicher Daten, der Änderung von Passwörtern und der Anzeige meiner Aufzeichnungen. Im Folgenden finden Sie eine detaillierte Beschreibung dieser Funktionen, wobei repräsentative Funktionen ausgewählt werden:

3.1.1 Benutzeranmeldung

An der Benutzeranmeldung beteiligte Klassen und JSP-Dateien, einschließlich cuslogin.jsp (Ansichtsschicht), LoginUserServlet (Kontrollschicht), UserService (Geschäftslogikschicht), UserDao (Datenzugriffsschicht) und User (Entitätsschicht), wie in Abbildung 3 dargestellt. 1 gezeigt.

Abbildung 3-1 Geschäftsdiagramm für die Benutzeranmeldung

(1)login.jsp

Die Aktion (userlogin) von cuslogin.jsp ist für die Verarbeitung des Anmeldeereignisses des Benutzers, den Aufruf der doPost()-Methode in der LoginUserServlet-Klasse, die Kapselung der Anmeldeeingabeinformationen des Benutzers in der Entität User und den Aufruf der UserService-Klasse in der doPost( ) Methode Logische Verarbeitungsmethode login(Benutzerbenutzer).

(2) UserService-Klasse

Die Methode login (Benutzerbenutzer) in der UserService-Klasse ist für die Geschäftslogik zur Beurteilung, ob Benutzername und Kennwort korrekt sind, verantwortlich und ruft die Methode login (Benutzerbenutzer) in der Klasse UserDao auf.

(3) UserDao-Klasse

Die Methode login(User user) in der UserDao-Klasse ist für die Ausführung der Anweisung „select * from suser where cusname=? and password=?“ in der MySQL-Datenbank verantwortlich, um festzustellen, ob der Benutzername und das Passwort korrekt sind.

(4) Benutzerklasse

Die Benutzerklasse realisiert die objektorientierte Verarbeitung der Suser-Tabelle in der Datenbank und die Kapselung von Daten.

3.1.2 Benutzerregistrierung

Zu den an der Benutzerregistrierung beteiligten Klassen und JSP-Dateien gehören cusregister.jsp (Ansichtsschicht), RegisterUserServlet (Kontrollschicht), UserService (Geschäftslogikschicht), UserDao (Datenzugriffsschicht) und User (Entitätsschicht), wie in Abbildung 3 dargestellt. 2 dargestellt.

Abbildung 3-2 Geschäftsdiagramm zur Benutzerregistrierung

(1)cusregister.jsp

Die Aktion (userregister) von cusregister.jsp ist für die Verarbeitung des Registrierungsereignisses des Benutzers verantwortlich, ruft die Methode doPost() in der Klasse RegisterUserServlet auf, kapselt die Registrierungseingabeinformationen des Benutzers in die Entität User und ruft die Klasse UserService in doPost( ) Methode Logische Verarbeitungsmethode insert(Benutzer Benutzer).

(2) UserService-Klasse

Die Methode insert(User user) in der Klasse UserService ist für die Verarbeitung der Geschäftslogik der Benutzerregistrierung verantwortlich und ruft die Methode insert(User user) in der Klasse UserDao auf.

(3) UserDao-Klasse

Die Methode insert(User user) in der UserDao-Klasse ist für die Ausführung von „INSERT INTO suser (cusName, realName, phone, email, idcard, sex, Province, city, address, password, status) VALUES(?,?,? , ?,?,?,?,?,?,?,?)“-Anweisung zum Speichern der bei der Benutzerregistrierung eingegebenen Informationen.

(4) Benutzerklasse

Die Benutzerklasse realisiert die objektorientierte Verarbeitung der Suser-Tabelle in der Datenbank und die Kapselung von Daten.

3.1.3 Modul zur Meldung illegaler Informationen

Klassen und JSP-Dateien, die an der Meldung illegaler Benutzerinformationen beteiligt sind, einschließlich cusindex.jsp (Ansichtsschicht), CusSubmitInfoServlet (Kontrollschicht), InfoService (Geschäftslogikschicht), InfoDao (Datenzugriffsschicht) und Info (Entitätsschicht), wie in Abbildung dargestellt 3 -3 dargestellt.

Abbildung 3-3 Geschäftskarte der Meldung illegaler Benutzerinformationen

(1)cusindex.jsp

Die Aktion (cussubmitsave) von cusindex.jsp ist für die Verarbeitung des Melde- und Speicherereignisses illegaler Informationen des Benutzers, den Aufruf der doPost()-Methode in der Klasse CusSubmitInfoServlet und die Kapselung der vom Benutzer eingegebenen illegalen und kriminellen Informationen in der Entität Info verantwortlich Aufruf in der doPost()-Methode Die Logikverarbeitungsmethode insert(Info info) in der InfoService-Klasse.

(2) InfoService-Klasse

Die Methode insert(Info info) in der Klasse InfoService ist für die Verarbeitung der Geschäftslogik zum Melden der vom Benutzer eingegebenen illegalen Informationen verantwortlich und ruft die Methode insert(Info info) in der Klasse InfoDao auf.

(3) InfoDao-Klasse

Die Methode insert (Info info) in der InfoDao-Klasse ist für die Ausführung von „INSERT INTO info (cusName, eventName, eventTime, eventPlace, eventType, pic, subscribeTime, flag, param1, param2, param3) VALUES (?, ?, ? , ?, ?, ?, ?, ?, ?, ?, ?)“-Anweisung zum Speichern der gemeldeten Informationen.

(4) Infokurs

Die Info-Klasse implementiert die objektorientierte Verarbeitung der Infotabelle in der Datenbank und realisiert die Kapselung von Daten.

3.1.4 Modul zur Änderung persönlicher Benutzerinformationen

Klassen und JSP-Dateien, die an der Änderung persönlicher Benutzerinformationen beteiligt sind, einschließlich cusindex.jsp (Ansichtsschicht), UserAddServlet (Kontrollschicht), UserService (Geschäftslogikschicht), UserDao (Datenzugriffsschicht) und User (Entitätsschicht), wie in Abbildung dargestellt 3 -4 dargestellt.

Abbildung 3-4 Geschäftsdiagramm zur Änderung persönlicher Benutzerinformationen

 (1)cusindex.jsp

Die Aktion (usersave) von cusindex.jsp ist für die Verarbeitung des Ereignisses zur Änderung persönlicher Informationen des Benutzers verantwortlich, ruft die Methode doPost () in der Klasse UserAddServlet auf, kapselt die geänderten persönlichen Informationen des Benutzers in die Entität Benutzer und ruft UserService in doPost auf ( ) Methode Die logische Verarbeitungsmethode update(Benutzerbenutzer) in der Klasse.

(2) UserService-Klasse

Die Update-Methode (Benutzerbenutzer) in der UserService-Klasse ist für die Verarbeitung der Geschäftslogik der Änderung persönlicher Benutzerinformationen verantwortlich und ruft die Update-Methode (Benutzerbenutzer) in der UserDao-Klasse auf.

(3) UserDao-Klasse

Die Methode insert(User user) in der UserDao-Klasse ist für die Ausführung von „update suser set cusName=?,realName=?,phone=?,email=?,idcard=?,sex=?,province=?,city= ?“ verantwortlich. ,address=?,password=?,status=? where id=?Anweisung, aktualisieren Sie die vom Benutzer eingegebenen Informationen.

(4) Benutzerklasse

Die Benutzerklasse realisiert die objektorientierte Verarbeitung der Suser-Tabelle in der Datenbank und die Kapselung von Daten.

3.1.5 Modul zur Ansicht meiner Datensätze

Zu den Klassen und JSP-Dateien, die an meiner Datensatzanzeige beteiligt sind, gehören cusindex.jsp (Ansichtsschicht), CusSubmitInfoServlet (Kontrollschicht), InfoService (Geschäftslogikschicht), InfoDao (Datenzugriffsschicht) und Info (Entitätsschicht), wie in Abbildung 3 dargestellt -5 angezeigt.

Abbildung 3-5 Geschäftsdiagramm zur Anzeige meiner Datensätze

 (1)cusindex.jsp

Das href(/waitinfolist?flag=0) von cusindex.jsp ist für die Verarbeitung der vom Benutzer gemeldeten ausstehenden Prüfdatensätze verantwortlich, ruft die Methode doPost() in der Klasse InfoListWaitServlet auf und kapselt den Statuswert der in das übertragenen illegalen und kriminellen Informationen Entität Info und rufen Sie gleichzeitig die Logikverarbeitungsmethode selectAllInfos(Info info) in der Klasse InfoService in der Methode doPost() auf.

(2) InfoService-Klasse

Die Methode selectAllInfos(Info info) in der Klasse InfoService ist für die Verarbeitung der Geschäftslogik verantwortlich, mit der Benutzer persönliche Berichtsdatensätze abfragen können, und ruft die Methode selectAllInfos(Info info) in der Klasse InfoDao auf.

(3) InfoDao-Klasse

Die Methode selectAllInfos(Info info) in der InfoDao-Klasse ist für die Ausführung der Anweisung „select * from info where 1=1 and cusname =? and flag=?“ in der MySQL-Datenbank verantwortlich, um die erforderlichen Datensätze abzufragen und zu kapseln.

(4) Infokurs

Die Info-Klasse implementiert die objektorientierte Verarbeitung der Infotabelle in der Datenbank und realisiert die Kapselung von Daten.

3.2 Design des Administratormoduls

Das Administratormodul dient hauptsächlich der Administratoranmeldung, der Verwaltung von Administratoren, d. h. Abfragen, Hinzufügen, Ändern und Löschen, der Verwaltung von Benutzerinformationen, d besteht darin, Funktionen hinzuzufügen, zu löschen, zu ändern und abzufragen; die Verwaltung der Überprüfung von Berichtsinformationen, d Information.

Im Folgenden finden Sie eine detaillierte Beschreibung dieser Funktionen, wobei repräsentative Funktionen ausgewählt werden:

3.2.1 Administrator -Anmeldefunktion

Zu den an der Administratoranmeldung beteiligten Klassen und JSP-Dateien gehören login.jsp (Ansichtsschicht), LoginServlet (Kontrollschicht), AdminService (Geschäftslogikschicht), AdminDao (Datenzugriffsschicht) und Admin (Entitätsschicht), wie in Abbildung 3 dargestellt. 6.

Abbildung 3-6 Diagramm des Administrator-Anmeldedienstes

 (1)login.jsp

Die Aktion (Anmeldung) von login.jsp ist für die Verarbeitung des Anmeldeereignisses des Administrators, den Aufruf der doPost()-Methode in der LoginServlet-Klasse, die Kapselung der Anmeldeeingabeinformationen des Administrators in der Entität Admin und den Aufruf der AdminService-Klasse verantwortlich in der doPost()-Methode Die logische Verarbeitungsmethode in login(Admin admin).

(2) AdminService-Klasse

Die Methode login(Admin admin) in der Klasse AdminService ist für die Geschäftslogik zur Beurteilung, ob Benutzername und Passwort korrekt sind, verantwortlich und ruft die Methode login(Admin admin) in der Klasse AdminDao auf.

(3) AdminDao-Klasse

Die Methode login (Admin admin) in der AdminDao-Klasse ist für die Ausführung der Anweisung „select * from admin where username=? and password=?“ in der MySQL-Datenbank verantwortlich, um festzustellen, ob der Benutzername und das Passwort korrekt sind.

(4) Admin-Klasse

Die Admin-Klasse implementiert die objektorientierte Verarbeitung der Admin-Tabelle in der Datenbank und realisiert die Kapselung von Daten.

3.2.2 Neue Administratorfunktion

Zu den an der neuen Administratorfunktion beteiligten Klassen und JSP-Dateien gehören add.jsp (Ansichtsschicht), AdminAddServlet (Kontrollschicht), AdminService (Geschäftslogikschicht), AdminDao (Datenzugriffsschicht) und Admin (Entitätsschicht), wie in der Abbildung gezeigt Abbildung 3-7 dargestellt.

 Abbildung 3-7 Der Administrator fügt eine Geschäftskarte hinzu

(1)add.jsp

Die Aktion (adminsave) von add.jsp ist für die Verarbeitung des neuen Administratorereignisses verantwortlich, ruft die Methode doPost () in der Klasse AdminAddServlet auf und kapselt die von der neuen Seite des Administrators eingegebenen Informationen in die Entität Admin und ruft sie im doPost auf ()-Methode Die logische Verarbeitungsmethode insert(Admin admin) in der AdminService-Klasse.

(2) AdminService-Klasse

Die Methode insert(Admin admin) in der Klasse AdminService ist für die Verarbeitung der vom Administrator hinzugefügten Geschäftslogik verantwortlich und ruft die Methode insert(Admin admin) in der Klasse AdminDao auf.

(3) AdminDao-Klasse

Die Methode insert(Admin admin) in der Klasse AdminDao ist für die Ausführung von „INSERT INTO admin(username,password,realname,sex,phone,idcard,province,city) VALUES(?,?,?,?,?,? , ?,?)“-Anweisung, um die neu hinzugefügten Administratorinformationen in der Datenbank zu speichern.

(4) Admin-Klasse

Die Admin-Klasse implementiert die objektorientierte Verarbeitung der Admin-Tabelle in der Datenbank und realisiert die Kapselung von Daten.

3.2.3 Funktion zum Abfragen von Administratorinformationen

Zu den Klassen und JSP-Dateien, die an der Abfrage von Administratorinformationen beteiligt sind, gehören list.jsp (Ansichtsschicht), AdminListServlet (Kontrollschicht), AdminService (Geschäftslogikschicht), AdminDao (Datenzugriffsschicht) und Admin (Entitätsschicht), wie in der Abbildung dargestellt 3-8 dargestellt.

 Abbildung 3-8 Geschäftsdiagramm des Abfrageadministrators

(1)list.jsp

Die Aktion (adminlist) von list.jsp ist für die Verarbeitung des Abfrageereignisses des Administrators, den Aufruf der doPost()-Methode in der AdminListServlet-Klasse, die Kapselung der Abfragebedingungsinformationen in der Entität Admin und den Aufruf der Logik in der AdminService-Klasse verantwortlich doPost()-Methode Die Verarbeitungsmethode ist selectAllAdmin(Admin admin).

(2) AdminService-Klasse

Die Methode selectAllAdmin(Admin admin) in der Klasse AdminService ist für die Verarbeitung der Geschäftslogik der abfragenden Administratoren verantwortlich und ruft die Methode selectAllAdmin(Admin admin) in der Klasse AdminDao auf.

(3) AdminDao-Klasse

Die Methode selectAllAdmin(Admin admin) in der AdminDao-Klasse ist für die Ausführung der Anweisung „select * from admin where 1=1“ in der MySQL-Datenbank verantwortlich, um die Liste der Administratorinformationen abzufragen.

(4) Admin-Klasse

Die Admin-Klasse implementiert die objektorientierte Verarbeitung der Admin-Tabelle in der Datenbank und realisiert die Kapselung von Daten.

3.2.4 Administratorfunktion löschen

Zu den Klassen und JSP-Dateien, die an der Funktion zum Löschen von Administratorinformationen beteiligt sind, gehören list.jsp (Ansichtsschicht), AdminDeleteServlet (Kontrollschicht), AdminService (Geschäftslogikschicht), AdminDao (Datenzugriffsschicht) und Admin (Entitätsschicht), wie in gezeigt siehe Abbildung 3-9.

Abbildung 3-9 Löschen des Administrator-Geschäftsdiagramms 

(1)list.jsp

Das a-Tag (admindelete) von list.jsp ist für die Verarbeitung des Löschereignisses des Administrators verantwortlich, ruft die Methode doPost () in der Klasse AdminDeleteServlet auf, kapselt die Löschbedingungsinformationen in die Entität Admin und ruft die Klasse AdminService in auf doPost()-Methode Logische Verarbeitungsmethode delete(Admin admin).

(2) AdminService-Klasse

Die Methode delete(Admin admin) in der Klasse AdminService ist für die Verarbeitung der Geschäftslogik zum Löschen von Administratoren verantwortlich und ruft die Methode delete(Admin admin) in der Klasse AdminDao auf.

(3) AdminDao-Klasse

Die Methode delete(Admin admin) in der AdminDao-Klasse ist für die Ausführung der Anweisung „delete from admin where id=?“ in der MySQL-Datenbank verantwortlich, um Administratorinformationen zu löschen.

(4) Admin-Klasse

Die Admin-Klasse implementiert die objektorientierte Verarbeitung der Admin-Tabelle in der Datenbank und realisiert die Kapselung von Daten.

3.2.5 Administratorinformationsfunktion ändern

Zu den Klassen und JSP-Dateien, die an der Änderung der Administratorinformationsfunktion beteiligt sind, gehören add.jsp (Ansichtsschicht), AdminAddServlet (Kontrollschicht), AdminService (Geschäftslogikschicht), AdminDao (Datenzugriffsschicht) und Admin (Entitätsschicht), wie in gezeigt siehe Abbildung 3-10.

 Abbildung 3-10 Ändern Sie die Administrator-Geschäftskarte

(1)add.jsp

Die Aktion (adminsave) von add.jsp ist für die Verarbeitung des Änderungsereignisses des Administrators verantwortlich, ruft die Methode doPost () in der Klasse AdminAddServlet auf, kapselt die geänderten Administratorinformationen in die Entität Admin und ruft die Klasse AdminService in doPost auf () Methode Die logische Verarbeitungsmethode update(Admin admin).

(2) AdminService-Klasse

Die Methode update(Admin admin) in der Klasse AdminService ist für die Verarbeitung und Änderung der Geschäftslogik des Administrators verantwortlich und ruft die Methode update(Admin admin) in der Klasse AdminDao auf.

(3) AdminDao-Klasse

Die update(Admin admin)-Methode in der AdminDao-Klasse ist für die Ausführung von „UPDATE admin SET username=?,password=?,realname=?,sex=?,phone=?,idcard=?,province=?,city= ?“ verantwortlich. WHERE id=?“-Anweisung zum Ändern der Administratorinformationen.

(4) Admin-Klasse

Die Admin-Klasse implementiert die objektorientierte Verarbeitung der Admin-Tabelle in der Datenbank und realisiert die Kapselung von Daten.

3.2.6 Überprüfungs- und Genehmigungsfunktion für Berichtsinformationen

Zu den Klassen und JSP-Dateien, die an der Überprüfungs- und Genehmigungsfunktion für Berichtsinformationen beteiligt sind, gehören list.jsp (Ansichtsschicht), InfoPassServlet (Kontrollschicht), InfoService (Geschäftslogikschicht), InfoDao (Datenzugriffsschicht) und Info (Entitätsschicht). Dies ist in der Abbildung 3-11 dargestellt.

Abbildung 3-11 Geschäftsdiagramm „Berichtetes Informationsaudit bestanden“.

 (1)list.jsp

Das a-Tag (infopass) von list.jsp ist für die Verarbeitung des Ereignisses des Bestehens der Prüfung der Berichtsinformationen, den Aufruf der doPost()-Methode in der InfoPassServlet-Klasse, die Kapselung der geprüften Informationen in der Entität Info und den Aufruf von InfoService verantwortlich Klasse in der doPost()-Methode Die logische Verarbeitungsmethode in update(Info info).

(2) InfoService-Klasse

Die Methode update(Info info) in der Klasse InfoService ist für die Verarbeitung der genehmigten Geschäftslogik verantwortlich und ruft die Methode update(Info info) in der Klasse InfoDao auf.

(3) InfoDao-Klasse

Die update(Info info)-Methode in der InfoDao-Klasse ist für die Ausführung von „update info set cusName=?, eventName=?, eventTime=?, eventPlace=?, eventType=?, pic=?, subscribeTime=?, flag= ?“ verantwortlich. ,param1=?,param2=?,param3=? where id=?“-Anweisung zum Ändern des Status der gemeldeten Informationen.

(4) Infokurs

Die Info-Klasse implementiert die objektorientierte Verarbeitung der Infotabelle in der Datenbank und realisiert die Kapselung von Daten.

3.2.7  Funktion der Meldung eines Fehlers bei der Überprüfung von Informationen

Zu den Klassen und JSP-Dateien, die an der Fehlerfunktion zur Überprüfung von Berichtsinformationen beteiligt sind, gehören check.jsp (Ansichtsschicht), RecordSaveServlet (Kontrollschicht), InfoService (Geschäftslogikschicht), InfoDao (Datenzugriffsschicht) und Info (Entitätsschicht), wie gezeigt in der Abbildung 3-12 dargestellt.

Abbildung 3-12 Geschäftsdiagramm eines fehlgeschlagenen Berichtsinformationsaudits

(1)check.jsp

Die Aktion (recordsave) von check.jsp ist dafür verantwortlich, das Ereignis eines gemeldeten Informationsprüfungsfehlers zu behandeln, die doPost()-Methode in der RecordSaveServlet-Klasse aufzurufen, die Prüfungsfehlerinformationen in die Entität Info zu kapseln und die InfoService-Klasse in aufzurufen doPost()-Methode Die logische Verarbeitungsmethode update(Info info).

(2) InfoService-Klasse

Die Methode update(Info info) in der Klasse InfoService ist für die Verarbeitung der Geschäftslogik von Prüffehlern verantwortlich und ruft die Methode update(Info info) in der Klasse InfoDao auf.

(3) InfoDao-Klasse

Die update(Info info)-Methode in der InfoDao-Klasse ist für die Ausführung von „update info set cusName=?, eventName=?, eventTime=?, eventPlace=?, eventType=?, pic=?, subscribeTime=?, flag= ?“ verantwortlich. ,param1=?,param2=?,param3=? where id=?“-Anweisung zum Ändern des Status der gemeldeten Informationen.

(4) Infokurs

Die Info-Klasse implementiert die objektorientierte Verarbeitung der Infotabelle in der Datenbank und realisiert die Kapselung von Daten.

3.2.8 Exportfunktion für Berichtsinformationen

Zu den an der Berichtsinformationsexportfunktion beteiligten Klassen und JSP-Dateien gehören list.jsp (Ansichtsschicht), DataExportServlet (Kontrollschicht), InfoService (Geschäftslogikschicht), InfoDao (Datenzugriffsschicht) und Info (Entitätsschicht), wie in gezeigt Abbildung 3-13 dargestellt.

 Abbildung 3-13 Geschäftsdiagramm der Exportfunktion für Berichtsinformationen

(1)list.jsp

Die Aktion (exportdata) von list.jsp ist für die Verarbeitung des Berichtsinformationsexportereignisses, den Aufruf der doPost()-Methode in der DataExportServlet-Klasse und den Aufruf der Logikverarbeitungsmethode selectAllInfos(Info info) in der InfoService-Klasse in der doPost( ) Methode.

(2) InfoService-Klasse

Die Methode selectAllInfos(Info info) in der Klasse InfoService ist für die Verarbeitung der Geschäftslogik des Berichtsinformationsexports verantwortlich und ruft die Methode selectAllInfos(Info info) in der Klasse InfoDao auf.

(3) InfoDao-Klasse

Die Methode selectAllInfos(Info info) in der InfoDao-Klasse ist für die Ausführung der Anweisung „select * from info“ in der MySQL-Datenbank verantwortlich, um alle Daten abzufragen, die exportiert werden müssen.

(4) Infokurs

Die Info-Klasse implementiert die objektorientierte Verarbeitung der Infotabelle in der Datenbank und realisiert die Kapselung von Daten.

4. Datenbankdesign

4.1 Logikdesign

Das Design der Datenbanklogik ist in drei Phasen unterteilt: Benutzeranforderungen, Erstellung eines ER-Modells und Design des Datenbankschemas.

Die erste Stufe des Datenbanklogikentwurfs besteht darin, Benutzeranforderungen in den folgenden vier Schritten zu sammeln und zu analysieren: Benutzeraktivitäten analysieren, den Umfang des Systems bestimmen, an Benutzeraktivitäten beteiligte Daten analysieren und Systemdaten analysieren. Die zweite Stufe des logischen Entwurfs besteht darin, das ER-Modell in zwei Schritten zu erstellen: Zuerst sollte der Entwurf des lokalen ER-Modells durchgeführt werden, und dann sollte der Entwurf des gesamten ER-Modells durchgeführt werden. Die dritte Stufe des Logikentwurfs ist in der Entwurfsphase des Datenbankschemas in zwei Schritte unterteilt: Der erste Schritt ist der vorläufige Entwurf, der das ER-Diagramm in ein relationales Modell umwandelt, und der zweite Schritt ist der Optimierungsentwurf, der das Schema anpasst und verbessert.

Was wir untersuchen möchten, ist der dritte Schritt des logischen Designs, der darin besteht, das relationale ER-Bildmodell zu transformieren. Im Folgenden werden die Entität und die Beziehung zwischen Entitäten in ein relationales Modell umgewandelt. Das aus der Entität konvertierte Beziehungsmodell:

Benutzerinformationsformular { Benutzer-ID , Passwort, Geschlecht, E-Mail, Sicherheitsfrage, Sicherheitsantwort, Bemerkungen}.

Administratorinformationstabelle { Administrator-ID , Passwort}.

Beitragsinformationstabelle { Beitrags-ID , Inhalt, Veröffentlichungszeit, Inhalt, Benutzer-ID, Nachrichten-ID}.

Nachrichteninformationstabelle { Nachrichten-ID , Nachrichtentitel, Nachrichteninhalt, Aktualisierungszeit, Zonen-ID}.

Zoneninformationstabelle { Zonen-ID , Zonenname, Zonennummer}.

4.2 Physisches Design

Der physische Entwurf der Datenbank umfasst: Auswahl der Speicherstruktur, Festlegung der Zugriffsmethode, Auswahl des Zugriffspfads und Festlegung des Speicherorts der Daten.

Es löst hauptsächlich die Probleme der Auswahl der Dateispeicherstruktur und der Bestimmung der Dateizugriffsmethode. Der Pfad zum Zugriff auf Daten in der Datenbank zeigt sich hauptsächlich darin, wie ein Index erstellt wird. Wenn Sie den gesuchten Datensatz direkt finden möchten, sollten Sie die Zugriffsmethode der Indexmethode (Indextabelle) verwenden. Die Sequenztabelle kann nur einzeln vom Startpunkt nach hinten auf Datensätze zugreifen. Auf der Grundlage der oben genannten Entitäten und der Beziehungsmuster zwischen Entitäten werden die Tabellen in der Datenbank und die Beziehungen zwischen den Tabellen gebildet.

Die Benutzerinformationstabelle ist in Tabelle 4-1 dargestellt.

Tabelle 4-1 Benutzerinformationstabelle

Feldname

veranschaulichen

Typ

Länge

Kann es leer sein?

Primärschlüssel

Ausweis

Tabellen-ID

Int

20

NEIN

Ja

cusName

Nutzername

Varchar

30

NEIN

NEIN

echter Name

tatsächlicher Name

Varchar

50

Ja

NEIN

Telefon

Telefonnummer

Varchar

11

Ja

NEIN

Email

Post

Varchar

30

Ja

NEIN

Ausweis

ID-Nummer

Varchar

18

Ja

NEIN

Sex

Geschlecht

Varchar

10

NEIN

NEIN

Provinz

Provinz

Varchar

30

Ja

NEIN

Stadt

Stadt

Varchar

30

Ja

NEIN

Adresse

Adresse

Varchar

255

Ja

NEIN

Passwort

Passwort

Varchar

50

Ja

NEIN

Status

Zustand

Int

10

Ja

NEIN

Die Beitragsinformationstabelle ist in Tabelle 4-2 dargestellt.

Tabelle 4-2 Beitragsinformationstabelle

Feldname

veranschaulichen

Typ

Länge

Kann es leer sein?

Primärschlüssel

Ausweis

Beitrags-ID

Int

20

NEIN

Ja

cusName

Benutzer-Anmeldename

Varchar

30

Ja

NEIN

Veranstaltungsname

Zeitname

Varchar

255

Ja

NEIN

Ereigniszeit

Zeitpunkt des Auftretens

Varchar

30

Ja

NEIN

eventPlace

Vorkommensplattform

Varchar

100

Ja

NEIN

Ereignistyp

Veranstaltungskategorie

Varchar

30

Ja

NEIN

Bild

Bildschirmfoto

Varchar

255

Ja

NEIN

SubmitTime

Zeitpunkt des Auftretens

Varchar

30

Ja

NEIN

Flagge

Freigabestand

Int

20

Ja

NEIN

Die Typentabelle ist in Tabelle 4-3 dargestellt.

Tabelle 4-3 Typtabelle

Feldname

veranschaulichen

Typ

Länge

Kann es leer sein?

Primärschlüssel

Ausweis

Typ-ID

Int

50

NEIN

Ja

Typschlüssel

Kategorienummer

varchar2

20

NEIN

NEIN

Modellname

Klassifizierungsname

varchar2

50

NEIN

NEIN

Die Tabelle mit den Administratorinformationen ist in Tabelle 4-4 dargestellt.

Tabelle 4-4 Tabelle mit Administratorinformationen

Feldname

veranschaulichen

Typ

Länge

Kann es leer sein?

Primärschlüssel

Administratorname

Admin-ID

varchar2

20

NEIN

Ja

Passwort

Administrator-Passwort

varchar2

20

NEIN

NEIN

Die Verarbeitungsergebnistabelle ist in Tabelle 4-5 dargestellt.

Tabelle 4-5 Verarbeitungsergebnistabelle

Feldname

veranschaulichen

Typ

Länge

Kann es leer sein?

Primärschlüssel

Ausweis

Tabellen-ID

Int

20

NEIN

Ja

infoId

Informations-ID

Int

20

NEIN

NEIN

Ergebnis

Ergebnis

Varchar

255

NEIN

NEIN

returnPerson

Feedback-Person

Varchar

30

NEIN

NEIN

Zeit zurück drehen

Feedbackzeit

Varchar

30

NEIN

NEIN

Die Tabelle mit den Datensätzen nach der Ablehnung ist in Tabelle 4-6 dargestellt.

Tabelle 4-6 Tabelle mit Datensätzen nach Ablehnung

Feldname

veranschaulichen

Typ

Länge

Kann es leer sein?

Primärschlüssel

Ausweis

Tabellen-ID

Int

20

NEIN

Ja

infoId

Informations-ID

Int

20

NEIN

NEIN

Prüfname

Verweigerer

Varchar

40

NEIN

NEIN

nach der Uhr sehen

Ablehnungszeit

Varchar

30

NEIN

NEIN

noReson

Grund für die Ablehnung

Varchar

255

NEIN

NEIN

5. Realisieren Sie das Rendering

(1) Kundenanmeldung

(2) Seite zum Ausfüllen von Benutzerinformationen

 (3) Persönliches Kundenzentrum

 (4) Anmeldung am Hintergrundverwaltungsterminal

(5) Melden Sie sich auf der Hauptseite des Hintergrundverwaltungsterminals an

(6) Administratorverwaltung

(7) Benutzerverwaltung

(8) Kategoriemanagement

(9) Abwicklung der Informationsmeldung

 (10) Überprüfung der gemeldeten Informationen

 (11) Export von Berichtsinformationen

 6. Referenzcode

@WebServlet("/adminsave")
public class AdminAddServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");

        //获取页面信息
        String id=req.getParameter("id");
        String username=req.getParameter("username");
        String realname=req.getParameter("realname");
        String sex=req.getParameter("sex");
        String phone=req.getParameter("phone");
        String idcard=req.getParameter("idcard");
        String province=req.getParameter("province");
        String city=req.getParameter("city");
        String password=req.getParameter("password");
        Admin admin=new Admin();

        admin.setUsername(username);
        admin.setRealname(realname);
        admin.setSex(sex);
        admin.setPhone(phone);
        admin.setIdcard(idcard);
        admin.setProvince(province);
        admin.setCity(city);
        admin.setPassword(password);
        AdminService adminService=new AdminServiceImpl();
        PrintWriter out = resp.getWriter();
        if(id==null||id==""){
            //增
            admin.setPassword("123456");
            int flag=adminService.insert(admin);
            if(flag==1){
                out.print("新增成功");
            }else{
                out.print("新增失败");
            }
            out.flush();
        }else {
            admin.setId(Integer.valueOf(id));
            //改
            int flag=adminService.update(admin);
            if(flag==1){
                out.print("修改成功");
            }else{
                out.print("修改失败");
            }
            out.flush();
        }

    }
}
@WebServlet("/admindelete")
public class AdminDeleteServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        String id=req.getParameter("id");
        AdminService adminService = new AdminServiceImpl();
        Admin admin=new Admin();
        admin.setId(Integer.valueOf(id));
        Integer flag=adminService.delete(admin);
        PrintWriter out = resp.getWriter();
        out.print("删除成功");
        req.getRequestDispatcher("/adminlist").forward(req,resp);
    }
}
@WebServlet("/adminedit")
public class AdminEditServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        String id=req.getParameter("id");
        AdminService adminService = new AdminServiceImpl();
        Admin admin=new Admin();
        admin.setId(Integer.valueOf(id));
        try {
            admin=adminService.selectOneById(admin);
            req.setAttribute("admin",admin);
            req.getRequestDispatcher("/files/admin/add.jsp").forward(req,resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
@WebServlet("/adminlist")
public class AdminListServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("UTF-8");
        AdminService adminService = new AdminServiceImpl();
        Page page=new Page();
        //获取当前页面
        String currno = req.getParameter("currPageNo");

        //获取条件
        String username = req.getParameter("username");

        Admin admin=new Admin();
        admin.setUsername(username);
        if(currno==null){
            currno="1";
        }else{
            page.setCurrPageNo(Integer.valueOf(currno));
        }

        List<Admin> adminlist = new ArrayList<>();
        try {
            List countList = adminService.selectAllAdmin(null);
            page.setTotalCount(countList.size());
            adminlist=adminService.selectAdminsByPage(admin,Integer.valueOf(currno),page.getPageSize());
            page.setList(adminlist);
            req.setAttribute("page",page);
            req.setAttribute("username",username);
            req.getRequestDispatcher("/files/admin/list.jsp").forward(req,resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
@WebServlet("/infoedit")
public class InfoEditServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        String id=req.getParameter("id");
        AdminService adminService = new AdminServiceImpl();
        Admin admin=new Admin();
        admin.setId(Integer.valueOf(id));
        try {
            admin=adminService.selectOneById(admin);
            req.setAttribute("admin",admin);
            req.getRequestDispatcher("/files/admin/info.jsp").forward(req,resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
@WebServlet("/infolist")
public class InfoListServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("UTF-8");
        InfoService infoService=new InfoServiceImpl();
        Page page=new Page();
        //获取当前页面
        String currno = req.getParameter("currPageNo");

        //获取条件
        String eventName = req.getParameter("eventName");
        //获取状态
        String flag = req.getParameter("flag");

        Info info=new Info();
        info.setFlag(Integer.valueOf(flag));
        info.setEventName(eventName);
        if(currno==null){
            currno="1";
        }else{
            page.setCurrPageNo(Integer.valueOf(currno));
        }

        List<Info> infolist = new ArrayList<>();
        try {
            List countList = infoService.selectAllInfos(info);
            page.setTotalCount(countList.size());
            infolist=infoService.selectInfosByPage(info,Integer.valueOf(currno),page.getPageSize());
            page.setList(infolist);
            req.setAttribute("page",page);
            req.setAttribute("eventName",eventName);
            req.setAttribute("flag",flag);
            req.getRequestDispatcher("/files/info/list.jsp").forward(req,resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
@WebServlet("/resultedit")
public class RecordEditServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        String id=req.getParameter("id");
        ResultService resultService = new ResultServiceImpl();
        Result result=new Result();
        result.setId(Integer.valueOf(id));
        req.setAttribute("id",id);
        req.getRequestDispatcher("/files/result/add.jsp").forward(req,resp);
    }
}
@WebServlet("/recordsave")
public class RecordSaveServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");

        //获取页面信息
        String id=req.getParameter("infoId");
        String noReson=req.getParameter("noReson");

        Record record=new Record();

        record.setInfoId(Integer.valueOf(id));
        record.setNoReson(noReson);
        Date nowdate=new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        record.setChecktime(sdf.format(nowdate));
        HttpSession session=req.getSession();
        Admin admin=(Admin)session.getAttribute("user");
        record.setCheckname(admin.getUsername());

        RecordService recordService=new RecordServiceImpl();
        PrintWriter out = resp.getWriter();
        //增
        int flag=recordService.insert(record);
        //修改信息表状态
        Info info=new Info();
        info.setId(Integer.valueOf(id));
        InfoService infoService=new InfoServiceImpl();
        try {
            info=infoService.selectInfoById(info);
            info.setFlag(-1);
            infoService.update(info);

            //获取当前用户虚构提交的次数
            Integer zs=infoService.countCusWg(info.getCusName());
            UserService userService=new UserServiceImpl();
            User user=new User();

            if(zs>=2){
                user=userService.selectUserByName(info.getCusName());
                user.setStatus(2);
                //封号
                userService.update(user);
            }
            if(flag==1){
                out.print("驳回成功");
            }else{
                out.print("驳回失败");
            }
            out.flush();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}
@WebServlet("/inforecord")
public class InfoRecordServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        String id=req.getParameter("infoId");
        RecordService recordService=new RecordServiceImpl();
        Record record=new Record();
        record.setInfoId(Integer.valueOf(id));
        List<Record> recordList=new ArrayList<>();
        try {
            recordList=recordService.selectRecords(record);
            if(recordList.size()!=0){
                record = recordList.get(0);
            }
            req.setAttribute("record",record);
            req.getRequestDispatcher("/files/info/inforecord.jsp").forward(req,resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
@WebServlet("/resultsave")
public class ResultAddServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");

        //获取页面信息
        String id=req.getParameter("infoId");
        String result1=req.getParameter("result");

        Result result=new Result();

        result.setInfoId(Integer.valueOf(id));
        result.setResult(result1);
        Date nowdate=new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        result.setReturnTime(sdf.format(nowdate));
        HttpSession session=req.getSession();
        Admin admin=(Admin)session.getAttribute("user");
        result.setReturnPerson(admin.getUsername());

        ResultService resultService=new ResultServiceImpl();
        PrintWriter out = resp.getWriter();
        //增
        int flag=resultService.insert(result);
        //修改信息表状态
        Info info=new Info();
        info.setId(Integer.valueOf(id));
        InfoService infoService=new InfoServiceImpl();
        try {
            info=infoService.selectInfoById(info);
            info.setFlag(2);
            infoService.update(info);
            if(flag==1){
                out.print("新增成功");
            }else{
                out.print("新增失败");
            }
            out.flush();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}
@WebServlet("/resultinfo")
public class ResultInfoServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        String id=req.getParameter("infoId");

        ResultService resultService=new ResultServiceImpl();
        Result result=new Result();
        result.setInfoId(Integer.valueOf(id));
        List<Result> results=new ArrayList<>();
        try {
            results=resultService.selectResults(result);
            if(results.size()!=0){
                result = results.get(0);
            }
            req.setAttribute("result",result);
            req.getRequestDispatcher("/files/result/inforesult.jsp").forward(req,resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
@WebServlet("/resultinfolist")
public class ResultListServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //编码
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("UTF-8");
        InfoService infoService=new InfoServiceImpl();
        Page page=new Page();
        //获取当前页面
        String currno = req.getParameter("currPageNo");

        //获取条件
        String eventName = req.getParameter("eventName");
        //获取状态
        String flag = req.getParameter("flag");

        Info info=new Info();
        info.setFlag(Integer.valueOf(flag));
        info.setEventName(eventName);
        if(currno==null){
            currno="1";
        }else{
            page.setCurrPageNo(Integer.valueOf(currno));
        }

        List<Info> infolist = new ArrayList<>();
        try {
            List countList = infoService.selectAllInfos(info);
            page.setTotalCount(countList.size());
            infolist=infoService.selectInfosByPage(info,Integer.valueOf(currno),page.getPageSize());
            page.setList(infolist);
            req.setAttribute("page",page);
            req.setAttribute("eventName",eventName);
            req.setAttribute("flag",flag);
            req.getRequestDispatcher("/files/result/list.jsp").forward(req,resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

7. Zusammenfassung

Bei der Entwicklung der auf JavaWeb basierenden Plattform zur Meldung fehlerhafter Netzwerkinformationen haben wir die Eigenschaften und Vorteile der JavaWeb-Technologie voll ausgeschöpft und erfolgreich eine voll funktionsfähige, sichere und zuverlässige Plattform aufgebaut. Im Folgenden sind einige unserer Schlussfolgerungen und Gewinne während des Entwicklungsprozesses aufgeführt:

(1) Angemessene Technologieauswahl: Die JavaWeb-Technologie bietet eine Fülle von Tools und Frameworks, die es uns ermöglichen, schnell eine voll funktionsfähige Plattform zu entwickeln. Wir haben die für dieses Projekt geeignete Java-Webentwicklungstechnologie ausgewählt - JDBC, Servlet. Diese Technologien können die Entwicklungseffizienz verbessern und weisen eine gute Skalierbarkeit und Wartbarkeit auf.

(2) Berücksichtigung der Benutzererfahrung: Bei der Gestaltung der Plattform achten wir auf die Benutzererfahrung und bemühen uns, eine einfache und intuitive Bedienoberfläche bereitzustellen, damit Benutzer schnell beginnen und den Berichtsvorgang abschließen können. Gleichzeitig wird unter Berücksichtigung der Privatsphäre und Sicherheit der Benutzer eine Berichtsfunktion bereitgestellt, um die persönlichen Daten und die Sicherheit der Benutzer zu schützen.

(3) Gute Sicherheitsmaßnahmen: Da es sich um die Meldung von von Benutzern hochgeladenen Materialien handelt, achten wir während des Entwicklungsprozesses besonders auf die Sicherheit der Plattform. Für die von Benutzern hochgeladenen Dateien haben wir strenge Prüfungen durchgeführt, um die Sicherheit zu gewährleisten.

Kurz gesagt, durch die JavaWeb-basierte Entwicklung haben wir erfolgreich eine Plattform zum Melden schlechter Informationen im Internet aufgebaut, sichere, schnelle und anonyme Meldefunktionen realisiert und soziales Design hinzugefügt, um die Beteiligung der Benutzer und den Informationsaustausch zu fördern. Während des Entwicklungsprozesses haben wir die Vorteile der JavaWeb-Technologie voll ausgenutzt und dabei die Funktionalität, Sicherheit und Benutzererfahrung der Plattform berücksichtigt, den Benutzern einen effizienten und bequemen Berichtskanal bereitgestellt und dabei geholfen, den Netzwerkraum zu reinigen und die soziale Ordnung aufrechtzuerhalten .

Supongo que te gusta

Origin blog.csdn.net/lf21qp/article/details/131549300
Recomendado
Clasificación