index.jsp
Cette page sert de tableau de bord principal pour le système de gestion des résumés quotidiens. Elle affiche différentes options en fonction du type d'utilisateur (catégorie d'utilisateur).
<%@ page import="com.QixunQiu.pojo.User" %>
<%@ page import="java.util.Objects" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>
<%@ page isELIgnored="false" %>
<%
User currentUser = (User) session.getAttribute("user");
%>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Système de gestion des résumés quotidiens</title>
<script>
function navigateTo(page) {
window.location.href = page;
}
</script>
</head>
<body>
<h1>Système de gestion des résumés quotidiens</h1>
<%if (currentUser.getUsercategory() == 0 || currentUser.getUsercategory() == 1) { %>
<button onclick="navigateTo('addReport.jsp')">Ajouter un rapport</button>
<button onclick="navigateTo('/EndTest/SelectAllReport')">Voir tous les rapports</button>
<button onclick="navigateTo('findReport.jsp')">Rechercher un rapport</button>
<%}%>
<%if (currentUser.getUsercategory() == 1) { %>
<button onclick="navigateTo('/EndTest/ToCheckReport')">Approuver les rapports</button>
<button onclick="navigateTo('addMassage.jsp')">Envoyer un message</button>
<button onclick="navigateTo('/EndTest/SelectAllReport')">Voir tous les rapports</button>
<%}%>
<%if (currentUser.getUsercategory() == 2) { %>
<button onclick="navigateTo('/EndTest/AllReport')">Noter les rapports</button>
<button onclick="navigateTo('addMassage.jsp')">Envoyer un message</button>
<button onclick="navigateTo('/EndTest/AllReport')">Voir tous les rapports</button>
<button onclick="navigateTo('findReport.jsp')">Rechercher un rapport</button>
<%}%>
</body>
<br>
</html>
addReport.jsp
Cette page fournit un formulaire pour que les utilistaeurs soumettent de nouveaux rapports quotidiens. Elle comprend des champs pour l'identifiant de l'étudiant, le nom, le temps passé, la quantité de code, le nombre de blogs, et les points de connaissance.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Ajouter un rapport quotidien</title>
</head>
<body>
<h2>Informations sur le rapport quotidien</h2>
<form action="${pageContext.request.contextPath}/addReportServlet" method="post">
<label for="studentId">Numéro d'étudiant:</label><br>
<input type="text" id="studentId" name="stuno" required><br>
<label for="studentName">Nom:</label><br>
<input type="text" id="studentName" name="name" required><br>
<label for="timeSpent">Temps passé aujourd'hui (heures):</label><br>
<input type="number" id="timeSpent" name="spenttime" required><br>
<label for="codeLines">Lignes de code:</label><br>
<input type="number" id="codeLines" name="codeamount" required><br>
<label for="blogCount">Nombre de blogs publiés:</label><br>
<input type="number" id="blogCount" name="blogsnumber" required><br>
<label for="knowledgePoints">Points de connaissance acquis:</label><br>
<input type="text" id="knowledgePoints" name="knowledgepoints" required><br>
<input type="submit" value="Soumettre">
</form>
</body>
</html>
addMassage.jsp
Cette page permet aux utilisateurs d'envoyer des messages. Elle offre une liste déroulante pour sélectionner la catégorie du message (retard, forme non conforme, contenu non conforme) et des champs pour le nom et le numéro du destinataire, ainsi que le contenu du message.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Ajouter un message</title>
</head>
<body>
<h2>Ajouter des informations</h2>
<form action="${pageContext.request.contextPath}/addMassage" method="post">
<label for="messageCategory">Catégorie du message:</label>
<select name="category" id="messageCategory">
<option value="0">Rappel</option>
<option value="1">Forme non conforme</option>
<option value="2">Contenu non conforme</option>
</select>
<br/><br/>
<label for="recipientName">Nom du destinataire:</label><br>
<input type="text" id="recipientName" name="receiverName" required><br>
<label for="recipientId">Identifiant du destinataire:</label><br>
<input type="text" id="recipientId" name="receiverNo" required><br>
<label for="messageContent">Contenu:</label><br>
<input type="text" id="messageContent" name="content" required><br>
<input type="submit" value="Soumettre">
</form>
</body>
</html>
ChangePassword.jsp
Cette page permet aux utilisateurs de modifier leur mot de passe. Elle demande l'ancien mot de passe, le nouveau mot de passe et la confirmation du nouveau mot de passe.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Changer le mot de passe</title>
</head>
<body>
<h1>Modifier le mot de passe</h1>
<c:if test="${not empty message}">
<div style="color: green;">${message}</div>
</c:if>
<form action="${pageContext.request.contextPath}/ChangePasswordServlet" method="post">
<div>
<label for="oldPasswordInput">Ancien mot de passe:</label>
<input type="password" id="oldPasswordInput" name="oldPassword" required>
</div>
<div>
<label for="newPasswordInput">Nouveau mot de passe:</label>
<input type="password" id="newPasswordInput" name="newPassword" required>
</div>
<div>
<label for="confirmNewPasswordInput">Confirmer le nouveau mot de passe:</label>
<input type="password" id="confirmNewPasswordInput" name="confirmNewPassword" required>
</div>
<div>
<button type="submit">Modifier le mot de passe</button>
</div>
</form>
</body>
</html>
addReportServlet
Ce servlet gère la réception des données du formulaire addReport.jsp. Il extrait les informations du rapport, crée un objet Report, et utilise le ReportService pour ajouter le rapport à la base de données. Il génère également une date de publication formatée.
package com.QixunQiu.web;
import com.QixunQiu.pojo.Report;
import com.QixunQiu.service.ReportService;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/addReportServlet")
public class addReportServlet extends HttpServlet {
private ReportService reportManager = new ReportService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
Date currentDate = new Date();
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd");
String publicationDate = dateFormatter.format(currentDate);
String studentId = request.getParameter("stuno");
String studentName = request.getParameter("name");
String timeSpentStr = request.getParameter("spenttime");
String codeAmountStr = request.getParameter("codeamount");
String blogCountStr = request.getParameter("blogsnumber");
String knowledgePoints = request.getParameter("knowledgepoints");
String reportStatus = "En attente d'approbation";
Report newReport = new Report();
newReport.setPublishdate(publicationDate);
newReport.setStuno(studentId);
newReport.setName(studentName);
newReport.setSpenttime(Integer.parseInt(timeSpentStr));
newReport.setCodeamount(Integer.parseInt(codeAmountStr));
newReport.setBlogsnumber(Integer.parseInt(blogCountStr));
newReport.setKnowledgepoints(knowledgePoints);
newReport.setState(reportStatus);
reportManager.add(newReport);
response.sendRedirect(request.getContextPath() + "/index.jsp"); // Redirection après ajout
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
addMassage
Ce servlet gère la soumission des messages à partir de addMassage.jsp. Il récupère les détails du message, y compris la catégorie, le destinataire et le contenu, ainsi que les informations de l'expéditeur à partir de la session. Il crée ensuite un objet Massage et utilise le MassageService pour l'enregistrer.
package com.QixunQiu.web;
import com.QixunQiu.pojo.Massage;
import com.QixunQiu.pojo.User;
import com.QixunQiu.service.MassageService;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/addMassage")
public class addMassage extends HttpServlet {
private MassageService messageService = new MassageService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
HttpSession session = request.getSession();
User senderUser = (User) session.getAttribute("user");
String categoryStr = request.getParameter("category");
String receiverName = request.getParameter("receiverName");
String receiverId = request.getParameter("receiverNo");
String content = request.getParameter("content");
String senderName = senderUser.getUsername();
String senderId = senderUser.getUserID();
String messageStatus = "Non lu";
Massage newMessage = new Massage();
newMessage.setCategory(Integer.parseInt(categoryStr));
newMessage.setReceiverName(receiverName);
newMessage.setReceiverNo(receiverId);
newMessage.setContent(content);
newMessage.setSenderName(senderName);
newMessage.setSenderNo(senderId);
newMessage.setState(messageStatus);
messageService.add(newMessage);
response.sendRedirect(request.getContextPath() + "/index.jsp"); // Redirection après ajout
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
ChangePasswordServlet
Ce servlet gère la logique de modification du mot de passe. Il vérifie si le nouveau mot de passe correspond à sa confirmation et si l'ancien mot de passe fourni correspond à celui de l'utilisateur actuel dans la session. Si toutes les vérifications sont réussies, il met à jour le mot de passe de l'utilisateur via le UserService.
package com.QixunQiu.web;
import com.QixunQiu.pojo.User;
import com.QixunQiu.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ChangePasswordServlet")
public class ChangePasswordServlet extends HttpServlet {
private UserService userService = new UserService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String oldPassword = request.getParameter("oldPassword");
String newPassword = request.getParameter("newPassword");
String confirmNewPassword = request.getParameter("confirmNewPassword");
if (!newPassword.equals(confirmNewPassword)) {
request.setAttribute("message", "Le nouveau mot de passe et la confirmation ne correspondent pas.");
request.getRequestDispatcher("/ChangePassword.jsp").forward(request, response);
return;
}
User currentUser = (User) request.getSession().getAttribute("user");
if (currentUser == null || !currentUser.getPassword().equals(oldPassword)) {
request.setAttribute("message", "Ancien mot de passe incorrect.");
request.getRequestDispatcher("/ChangePassword.jsp").forward(request, response);
return;
}
// Logique de mise à jour du mot de passe
currentUser.setPassword(newPassword);
userService.updatePassword(currentUser);
request.setAttribute("message", "Modification réussie.");
request.getRequestDispatcher("/login.html").forward(request, response); // Rediriger vers la page de connexion ou un message de succès
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}