/
itokar98
/
HomeWorkJSPRServlets
Обзор
Документация
Войти
/
itokar98
/
HomeWorkJSPRServlets
Код
Запросы
2
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/com/organization/servlet/MainServlet.java
82 строки
3 KB
Ilya Tokar
first_commit
14 янв 2026, 01:32
14 янв 2026, 01:32
a683d55
Код
Авторство
О чём код?
package com.organization.servlet; import com.organization.controller.PostController; import com.organization.repository.PostRepository; import com.organization.service.PostService; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MainServlet extends HttpServlet { private static final String API_POSTS = "/api/posts"; private static final String GET = "GET"; private static final String POST = "POST"; private static final String DELETE = "DELETE"; private static final String ID_PATH_REGEX = "/api/posts/\\d+"; private PostController controller; @Override public void init() { final var repository = new PostRepository(); final var service = new PostService(repository); controller = new PostController(service); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) { try { final var path = req.getRequestURI(); final var method = req.getMethod(); if (GET.equals(method) && API_POSTS.equals(path)) { controller.all(resp); return; } if (GET.equals(method) && path.matches(ID_PATH_REGEX)) { handleIdRequest(path, controller::getById, resp); return; } if (POST.equals(method) && API_POSTS.equals(path)) { controller.save(req.getReader(), resp); return; } if (DELETE.equals(method) && path.matches(ID_PATH_REGEX)) { handleIdRequest(path, controller::removeById, resp); return; } resp.setStatus(HttpServletResponse.SC_NOT_FOUND); } catch (NumberFormatException e) { sendError(resp, HttpServletResponse.SC_BAD_REQUEST, "Invalid ID format"); } catch (Exception e) { e.printStackTrace(); resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } private void handleIdRequest(String path, IdHandler handler, HttpServletResponse resp) throws IOException { final var id = extractId(path); handler.handle(id, resp); } private long extractId(String path) { return Long.parseLong(path.substring(path.lastIndexOf("/") + 1)); } private void sendError(HttpServletResponse resp, int status, String message) { try { resp.setStatus(status); resp.setContentType("application/json"); resp.setCharacterEncoding("UTF-8"); resp.getWriter().write(String.format("{\"error\": \"%s\"}", message)); } catch (IOException ignored) { } } @FunctionalInterface private interface IdHandler { void handle(long id, HttpServletResponse response) throws IOException; } }