From 73b6f86aabc6c7c2a076190677eb6481ad6e6775 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Mon, 9 Mar 2026 11:19:49 +0300 Subject: [PATCH] feat: add filter --- resources/WEB-INF/jsp/profiles.jsp | 156 +++++++++++++----- .../back/controller/ProfileController.java | 5 +- .../back/controller/ProfilesController.java | 33 ++++ src/ru/charm/back/utils/UrlUtils.java | 13 +- 4 files changed, 156 insertions(+), 51 deletions(-) create mode 100644 src/ru/charm/back/controller/ProfilesController.java diff --git a/resources/WEB-INF/jsp/profiles.jsp b/resources/WEB-INF/jsp/profiles.jsp index 922c73b..0974fc8 100644 --- a/resources/WEB-INF/jsp/profiles.jsp +++ b/resources/WEB-INF/jsp/profiles.jsp @@ -1,48 +1,116 @@ <%@ page contentType="text/html;charset=UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - - Charm Profiles - <%@ include file="style.html" %> - - - <%@ include file="header.jsp" %> -
- - - - - - - - - - - - - - - - - - - -

id

${requestScope.wordBundle.getWord("email")}

${requestScope.wordBundle.getWord("name")}

${requestScope.wordBundle.getWord("surname")}

${requestScope.wordBundle.getWord("age")}

${requestScope.wordBundle.getWord("status")}

${profile.id}

${profile.email}

${profile.name}

${profile.surname}

${profile.age}

-
- - - - -
-
-
- <%@ include file="footer.jsp" %> - + + Charm Profiles + <%@ include file="style.html" %> + + +<%@ include file="header.jsp" %> +
+
+ + + + + + + +
+ + + + + + + + + + + +
${wordBundle.getWord("email")}
${wordBundle.getWord("name")}
+
+ + + + + + + + + +
${wordBundle.getWord("surname")}
${wordBundle.getWord("status")} + +
+
+ + + + + + + +
${wordBundle.getWord("age")}-
+
+
+ + + + + + + + + + + + + + + + + + + +

id

${wordBundle.getWord("email")}

${wordBundle.getWord("name")}

${wordBundle.getWord("surname")}

${wordBundle.getWord("age")}

${wordBundle.getWord("status")}

${profile.id}

${profile.email}

${profile.name}

${profile.surname}

${profile.age}

+
+ + + + +
+
+
+<%@ include file="footer.jsp" %> + \ No newline at end of file diff --git a/src/ru/charm/back/controller/ProfileController.java b/src/ru/charm/back/controller/ProfileController.java index d3ce703..41f7695 100644 --- a/src/ru/charm/back/controller/ProfileController.java +++ b/src/ru/charm/back/controller/ProfileController.java @@ -10,6 +10,7 @@ import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; import ru.charm.back.dto.ProfileFilter; import ru.charm.back.dto.ProfileGetDto; import ru.charm.back.dto.ProfileUpdateDto; @@ -22,9 +23,11 @@ import java.io.OutputStream; import java.util.Optional; import static jakarta.servlet.http.HttpServletResponse.SC_NOT_FOUND; +import static ru.charm.back.utils.UrlUtils.PROFILE_URL; -@WebServlet("/profile/*") +@WebServlet(PROFILE_URL + "/*") @MultipartConfig +@Slf4j public class ProfileController extends HttpServlet { private final ProfileService service = ProfileService.getInstance(); diff --git a/src/ru/charm/back/controller/ProfilesController.java b/src/ru/charm/back/controller/ProfilesController.java new file mode 100644 index 0000000..dc72961 --- /dev/null +++ b/src/ru/charm/back/controller/ProfilesController.java @@ -0,0 +1,33 @@ +package ru.charm.back.controller; + +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; +import ru.charm.back.dto.ProfileFilter; +import ru.charm.back.mapper.RequestToProfileFilterMapper; +import ru.charm.back.service.ProfileService; + + +import java.io.IOException; + +import static ru.charm.back.utils.UrlUtils.PROFILES_URL; +import static ru.charm.back.utils.UrlUtils.getJspPath; + + +@WebServlet(PROFILES_URL) +@Slf4j +public class ProfilesController extends HttpServlet { + private final ProfileService service = ProfileService.getInstance(); + private final RequestToProfileFilterMapper requestToProfileFilterMapper = RequestToProfileFilterMapper.getInstance(); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + ProfileFilter filter = requestToProfileFilterMapper.map(req); + req.setAttribute("profiles", service.findAll(filter)); + req.setAttribute("filter", filter); + req.getRequestDispatcher(getJspPath(PROFILES_URL)).forward(req, res); + } +} diff --git a/src/ru/charm/back/utils/UrlUtils.java b/src/ru/charm/back/utils/UrlUtils.java index dd5615a..b40191a 100644 --- a/src/ru/charm/back/utils/UrlUtils.java +++ b/src/ru/charm/back/utils/UrlUtils.java @@ -8,15 +8,19 @@ import java.util.Set; public class UrlUtils { public static final String PROFILE_URL = "/profile"; + public static final String PROFILES_URL = "/profiles"; public static final String CREDENTIALS_URL = "/credentials"; public static final String LOGIN_URL = "/login"; public static final String LOGOUT_URL = "/logout"; public static final String REGISTRATION_URL = "/registration"; public static final String LANG_URL = "/lang"; public static final String CONTENT_URL = "/content"; - public static final String BASE_CONTENT_PATH = "/Users/andrey.s.eliseev/Downloads"; + public static final String PDF_URL = "/pdf"; + public static final String REST_URL = "/api/v1"; + public static final String LOGIN_REST_URL = REST_URL + LOGIN_URL; + public static final String BASE_CONTENT_PATH = ConfigFileUtils.get("app.base-content-path"); - public static final Set PRIVATE_PATHS = Set.of(PROFILE_URL, CREDENTIALS_URL); + public static final Set PRIVATE_PATHS = Set.of(PROFILE_URL, PROFILES_URL, CREDENTIALS_URL, REST_URL); public static final Set ENTRY_PATHS = Set.of(LOGIN_URL, REGISTRATION_URL); @@ -24,10 +28,7 @@ public class UrlUtils { return "/WEB-INF/jsp" + url + ".jsp"; } - public static final String REST_URL = "/api/v1"; - public static final String LOGIN_REST_URL = REST_URL + LOGIN_URL; - public static String getProfilePhotoPath(Long id, String fileName) { return "/profiles/" + id + "/" + fileName; } -} +} \ No newline at end of file