GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ try {
+ int id = Integer.parseInt((String) request.getParameter("id"));
+ Integer firstId = DaoFactory.getArticleDao().getFirstId();
+ Integer lastId = DaoFactory.getArticleDao().getLastId();
+ if (firstId == null || lastId == null || id > lastId || id < firstId) {
+ throw new NumberFormatException();
+ }
+ request.setAttribute("firstId", firstId);
+ request.setAttribute("lastId", lastId);
+ request.setAttribute("articleOrm", new ArticleOrm(DaoFactory.getArticleDao().getById(id)));
+ request.getServletContext()
+ .getRequestDispatcher(VIEW)
+ .forward(request, response);
+ } catch (NumberFormatException nfe) {
+ response.sendRedirect(request.getContextPath() + "/home");
+ }
+ }
+
+}
diff --git a/src/main/java/fr/ldnr/servelets/Home.java b/src/main/java/fr/ldnr/servelets/Home.java
index f380163026eb7f2b35a5389b1837caf728ea6ae5..bfe1aec3925108ecf0e6c61dbb2e3169fb9f63f5 100644
--- a/src/main/java/fr/ldnr/servelets/Home.java
+++ b/src/main/java/fr/ldnr/servelets/Home.java
@@ -1,9 +1,7 @@
package fr.ldnr.servelets;
-import fr.ldnr.beans.Article;
+import fr.ldnr.dao.DaoFactory;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
@@ -13,23 +11,31 @@ import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "home", urlPatterns = {"/home"})
public class Home extends HttpServlet {
+ private static final String VIEW = "/WEB-INF/Home.jsp";
+
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
-
- // a remplacer par une base de donnees
- ListGET method.
@@ -32,10 +38,18 @@ public class Logout extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
+ if (request.getSession().getAttribute("user") == null) {
+ RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher(VIEW);
+ dispatcher.forward(request, response);
+ } else {
//invalidation
request.getSession().invalidate();
//redirection vers accueil
response.sendRedirect(request.getContextPath() + "/home");
+
+ }
+
+
}
}
diff --git a/src/main/java/fr/ldnr/servelets/Profile.java b/src/main/java/fr/ldnr/servelets/Profile.java
new file mode 100644
index 0000000000000000000000000000000000000000..90d69c3c62f2799ca9260c25420639611fcdf26b
--- /dev/null
+++ b/src/main/java/fr/ldnr/servelets/Profile.java
@@ -0,0 +1,56 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package fr.ldnr.servelets;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author stag
+ */
+@WebServlet(name = "Profile", urlPatterns = {"/profile"})
+public class Profile extends HttpServlet {
+
+
+ private static final String VIEW = "/WEB-INF/Profile.jsp";
+
+
+
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ //verifier que user est connecté
+ if (request.getSession().getAttribute("user") != null) {
+ request.getRequestDispatcher(VIEW)
+ .forward(request, response);
+ } else {
+ response.sendRedirect(request.getContextPath() + "/login");
+ }
+
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ }
+
+}
diff --git a/src/main/java/fr/ldnr/servelets/Signin.java b/src/main/java/fr/ldnr/servelets/Signin.java
index a5bc2a87b69559b9ef9b085a3d0a0b80c9dea20a..222499d8e5f5fabad12e04516e69956deb5cdeb7 100644
--- a/src/main/java/fr/ldnr/servelets/Signin.java
+++ b/src/main/java/fr/ldnr/servelets/Signin.java
@@ -13,11 +13,21 @@ import static sun.security.krb5.KrbException.errorMessage;
@WebServlet(name = "sign-in", urlPatterns = {"/sign-in"})
public class Signin extends HttpServlet {
+
+ private static final String VIEW = "/WEB-INF/Signin.jsp";
+
+
+
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
- RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/Signin.jsp");
- dispatcher.forward(request, response);
+ if (request.getSession().getAttribute("user") == null) {
+ RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher(VIEW);
+ dispatcher.forward(request, response);
+ } else {
+ response.sendRedirect(request.getContextPath() + "/home");
+
+ }
}
@Override
@@ -32,12 +42,17 @@ public class Signin extends HttpServlet {
boolean authenticated = false;
if (checker.checkForm()) {
+ //je met l'utilisateur en session
+ request.getSession().setAttribute("user", checker.getBean());
response.sendRedirect(request.getContextPath() + "/home");
} else {
+ //Assurer que l'utilisateur n'est plus en session
+ request.getSession().invalidate();
+
request.setAttribute("errors", checker.getErrors());
- request.setAttribute("userData", checker.getUser());
+ request.setAttribute("userData", checker.getBean());
request.getServletContext()
- .getRequestDispatcher("/WEB-INF/Signin.jsp")
+ .getRequestDispatcher(VIEW)
.forward(request, response);
}
}
diff --git a/src/main/java/fr/ldnr/servelets/createArticle.java b/src/main/java/fr/ldnr/servelets/createArticle.java
new file mode 100644
index 0000000000000000000000000000000000000000..d7fd5ef8112dc05c4c31bbe0fab947d01dbb76b3
--- /dev/null
+++ b/src/main/java/fr/ldnr/servelets/createArticle.java
@@ -0,0 +1,74 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package fr.ldnr.servelets;
+
+import Forms.CreateArticleFormChecker;
+import fr.ldnr.beans.User;
+import java.io.IOException;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @author stag
+ */
+@WebServlet(name = "createArticle", urlPatterns = {"/back/createArticle"})
+public class createArticle extends HttpServlet {
+
+ private static final String VIEW = "/WEB-INF/createArticle.jsp";
+
+ // GET method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ Integer id_author = ((User) (request.getSession().getAttribute("user"))).getId_user();
+
+ if (request.getSession().getAttribute("isAdmin") != null) {
+ request.getServletContext()
+ .getRequestDispatcher(VIEW)
+ .forward(request, response);
+ } else {
+ response.sendRedirect(request.getContextPath() + "/login");
+ }
+
+ }
+
+ /**
+ * Handles the HTTP POST method.
+ *
+ * @param request servlet request
+ * @param response servlet response
+ * @throws ServletException if a servlet-specific error occurs
+ * @throws IOException if an I/O error occurs
+ */
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ CreateArticleFormChecker checker = new CreateArticleFormChecker(request);
+ if (!checker.checkForm()) {
+ request.setAttribute("article", checker.getBean());
+ request.setAttribute("errors", checker.getErrors());
+ request.getServletContext()
+ .getRequestDispatcher(VIEW)
+ .forward(request, response);
+ } else {
+ response.sendRedirect(request.getContextPath() + "/home");
+ }
+ }
+
+}
diff --git a/src/main/webapp/WEB-INF/Article.jsp b/src/main/webapp/WEB-INF/Article.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..5997bc6f469196401ce08cdbc079d9b5740a1f51
--- /dev/null
+++ b/src/main/webapp/WEB-INF/Article.jsp
@@ -0,0 +1,36 @@
+<%--
+ Document : Article
+ Created on : 5 mai 2023, 06:33:42
+ Author : stag
+--%>
+
+<%@page contentType="text/html" pageEncoding="UTF-8"%>
+
+
+
+
+ ${requestScope.articleOrm.article.titre}
+Voici mes articles
+ +Vos informations personnelles
+| Votre id : | +${sessionScope.user.id} | +
| Votre Pseudo : | +${sessionScope.user.pseudo} | +
| Votre adresse mail : | +${sessionScope.user.email} | +
| Votre mot de passe : | +${sessionScope.user.password} | +
Créer un article
+ +Ceci est un footer que je veut include!
- + diff --git a/src/main/webapp/WEB-INF/jspf/Header.jsp b/src/main/webapp/WEB-INF/jspf/Header.jsp index 45032659d2bad50af6f9019b0e035e3d7d226d29..af1fa9bb477b35733a8ff7dfecb5304a5c12c496 100644 --- a/src/main/webapp/WEB-INF/jspf/Header.jsp +++ b/src/main/webapp/WEB-INF/jspf/Header.jsp @@ -6,51 +6,61 @@ <%@page contentType="text/html" pageEncoding="UTF-8"%> - + nav li a:hover { + background-color: #111; + } + + diff --git a/src/main/webapp/WEB-INF/taglibs.jsp b/src/main/webapp/WEB-INF/taglibs.jsp index 7ea6af02be3c18f6bb0102e0694154c981dc90eb..b402b33c463836edf795938796e4bb2f6068c824 100644 --- a/src/main/webapp/WEB-INF/taglibs.jsp +++ b/src/main/webapp/WEB-INF/taglibs.jsp @@ -1 +1 @@ -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> diff --git a/src/main/webapp/rsc/css/Style.css b/src/main/webapp/rsc/css/Style.css index 900e4abc32549e2bc2b9e3370ca8b6b174ac6ba3..3d9fffa2e4f33e0eb063c36e565d9dbc8a961b3b 100644 --- a/src/main/webapp/rsc/css/Style.css +++ b/src/main/webapp/rsc/css/Style.css @@ -40,7 +40,7 @@ input[type=text],input[type=email], input[type=password] { font-size: 1.2rem; } -input[type=submit] { +input[type=submit], input[type=reset] { background-color: #F7DC6F; color: #2B3A42; padding: 15px 30px; @@ -50,34 +50,34 @@ input[type=submit] { cursor: pointer; } -input[type=submit]:hover { +input[type=submit]:hover , input[type=reset]:hover{ background-color: #34495E; color: #F7DC6F; } .error-message { - color: #ff0000; - font-size: 18px; - font-family: 'Bebas Neue', sans-serif; - text-transform: uppercase; - background-color: #0d0d0d; - border: 2px solid #ff0000; - padding: 10px; - margin-bottom: 10px; + color: #ff0000; + font-size: 18px; + font-family: 'Bebas Neue', sans-serif; + text-transform: uppercase; + background-color: #0d0d0d; + border: 2px solid #ff0000; + padding: 10px; + margin-bottom: 10px; } .error-message:before { - content: "!"; - color: #ff0000; - font-weight: bold; - font-size: 32px; - display: inline-block; - margin-right: 10px; - transform: translateY(-10%); + content: "!"; + color: #ff0000; + font-weight: bold; + font-size: 32px; + display: inline-block; + margin-right: 10px; + transform: translateY(-10%); } -.container { +.containerArticle { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; @@ -132,7 +132,7 @@ input[type=text],input[type=email], input[type=password] { font-size: 1.2rem; } -input[type=submit] { +input[type=submit] , input[type=reset]{ background-color: #F7DC6F; color: #2B3A42; padding: 15px 30px; @@ -142,7 +142,7 @@ input[type=submit] { cursor: pointer; } -input[type=submit]:hover { +input[type=submit]:hover , input[type=reset]:hover{ background-color: #34495E; color: #F7DC6F; } @@ -151,17 +151,120 @@ input[type=submit]:hover { color: red; font-weight: bold; } -input[type=submit] { - background-color: #F7DC6F; - color: #2B3A42; - padding: 15px 30px; +textarea { + padding: 15px; border: none; border-radius: 10px; + margin-bottom: 20px; + width: 100%; + height: 150px; /* Hauteur du textarea */ + background-color: #F7DC6F; + color: #2B3A42; font-size: 1.2rem; - cursor: pointer; + resize: vertical; /* Permet à l'utilisateur de redimensionner verticalement le textarea */ +} +.footer { + background-color: #333; + color: #fff; + padding: 20px; + text-align: center; +} +.pagination { + display: flex; + justify-content: center; + margin-top: 20px; + padding-bottom: 40px; } -input[type=submit]:hover { - background-color: #34495E; - color: #F7DC6F; +.pagination ul { + display: flex; + list-style: none; + padding: 0; + margin: 0; +} + +.pagination ul li { + margin-right: 5px; +} + +.pagination ul li.disabled a { + color: #ccc; + cursor: not-allowed; + text-decoration: none; +} + +.pagination ul li.active a { + color: #fff; + background-color: #007bff; + border-color: #007bff; + text-decoration: none; +} + +.pagination ul li a { + display: block; + padding: 5px 10px; + color: #007bff; + background-color: #fff; + border: 1px solid #007bff; + text-decoration: none; +} + +.pagination ul li a:hover { + background-color: #007bff; + color: #fff; + text-decoration: none; +} + +.article-container { + text-align: center; + max-width: 800px; + margin: 0 auto; + padding: 20px; + border: 1px solid #ccc; +} + +#pageArticle > h2 { + font-size: 2.5rem; + font-weight: bold; + margin-bottom: 1rem; +} + +#pageArticle > .sub { + font-size: 1rem; + color: gray; + margin-bottom: 1rem; +} + +#pageArticle > div { + font-size: 1.2rem; + line-height: 1.5; + margin-bottom: 2rem; +} + +#pageArticle > .pagingArticle { + display: flex; + justify-content: space-between; + margin-top: 2rem; +} + +#pageArticle > a { + font-size: 1.2rem; + color: black; + text-decoration: none; + border: 1px solid black; + padding: 0.5rem 1rem; + border-radius: 5px; + transition: all 0.2s ease-in-out; + +} + +#pageArticle > a:hover { + background-color: black; + color: white; +} +#pageArticle > .disabled { + color: gray; + border-color: gray; + pointer-events: none; + opacity: 0.6; } \ No newline at end of file diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties index bfe9a495f7367cf4e3ede8433fc0548a6ec39008..0e2eb9ad402f4d684857977fd6c6caa6c2738aa8 100644 --- a/target/maven-archiver/pom.properties +++ b/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Tue Apr 25 17:03:54 CEST 2023 +#Fri May 05 03:13:49 CEST 2023 groupId=fr.ldnr.mycompany artifactId=mavenproject3 version=1.0-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 8c965aa53aeab316cec0a8f107a6b4faeaf17d67..0167b32dab60a7eef71b3379e84d232c6cd15fbe 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,4 +1,13 @@ -fr/ldnr/servelets/SteackServelet.class -fr/ldnr/servelets/Burger.class -Carotte.class +fr/ldnr/servelets/Logout.class +Forms/LoginFormChecker.class +fr/ldnr/servelets/createArticle.class +Forms/CreateArticleFormChecker.class +fr/ldnr/beans/Article.class +Forms/SigninFormChecker.class +Forms/FormChecker.class +fr/ldnr/servelets/Signin.class +fr/ldnr/beans/Personne.class +fr/ldnr/beans/User.class +fr/ldnr/servelets/Login.class fr/ldnr/servelets/Home.class +Forms/Checkable.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 52a37845d58000199f4ef85ea4c30b93c32acbb4..1027c00fec642013b75861cfde0fc88cc4de10bf 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,4 +1,13 @@ -/home/stag/NetBeansProjects/mavenproject3/src/main/java/fr/ldnr/servelets/Home.java -/home/stag/NetBeansProjects/mavenproject3/src/main/java/fr/ldnr/servelets/Carotte.java -/home/stag/NetBeansProjects/mavenproject3/src/main/java/fr/ldnr/servelets/Burger.java -/home/stag/NetBeansProjects/mavenproject3/src/main/java/fr/ldnr/servelets/SteackServelet.java +/home/stag/Desktop/tester/java-web-td/src/main/java/fr/ldnr/servelets/Logout.java +/home/stag/Desktop/tester/java-web-td/src/main/java/fr/ldnr/beans/Article.java +/home/stag/Desktop/tester/java-web-td/src/main/java/fr/ldnr/beans/User.java +/home/stag/Desktop/tester/java-web-td/src/main/java/Forms/SigninFormChecker.java +/home/stag/Desktop/tester/java-web-td/src/main/java/Forms/LoginFormChecker.java +/home/stag/Desktop/tester/java-web-td/src/main/java/fr/ldnr/beans/Personne.java +/home/stag/Desktop/tester/java-web-td/src/main/java/fr/ldnr/servelets/createArticle.java +/home/stag/Desktop/tester/java-web-td/src/main/java/Forms/CreateArticleFormChecker.java +/home/stag/Desktop/tester/java-web-td/src/main/java/fr/ldnr/servelets/Login.java +/home/stag/Desktop/tester/java-web-td/src/main/java/Forms/FormChecker.java +/home/stag/Desktop/tester/java-web-td/src/main/java/fr/ldnr/servelets/Signin.java +/home/stag/Desktop/tester/java-web-td/src/main/java/Forms/Checkable.java +/home/stag/Desktop/tester/java-web-td/src/main/java/fr/ldnr/servelets/Home.java diff --git a/target/mavenproject3-1.0-SNAPSHOT.war b/target/mavenproject3-1.0-SNAPSHOT.war index 4f050cc6222b347a9931808f3d2b4c5af7945964..bd2e6c4b57d37bb8f250b0dc413aad51da2ce67a 100644 Binary files a/target/mavenproject3-1.0-SNAPSHOT.war and b/target/mavenproject3-1.0-SNAPSHOT.war differ diff --git a/target/mavenproject3-1.0-SNAPSHOT/WEB-INF/web.xml b/target/mavenproject3-1.0-SNAPSHOT/WEB-INF/web.xml index a718bcfadba7604ab5419890c7d6edae93a3f188..8e105b3c0a7d8dfea3a5434c521afe016977ce51 100644 --- a/target/mavenproject3-1.0-SNAPSHOT/WEB-INF/web.xml +++ b/target/mavenproject3-1.0-SNAPSHOT/WEB-INF/web.xml @@ -1,18 +1,22 @@Ma page d'accueil
-- la page steack