TIL - 20250710

juni·2025년 7월 10일

TIL

목록 보기
61/317

0710 학습 내용 - 서블릿 & 객체 활용 종합정리


✅ HTTP 요청/응답 흐름 요약

  • Servlet 클래스를 상속하여 HTTP 요청과 응답을 제어할 수 있다.
  • 서비스 로직은 service() 메서드 안에서 처리한다.
@WebServlet("/hello")
public class BasicServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1. 요청 분석
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        String grade = req.getParameter("grade");

        // 2. 로직 처리
        int birthYear = LocalDate.now().getYear() - Integer.parseInt(age) + 1;
        String message = grade.equals("F") ? "재수강 대상입니다." : "통과했습니다";

        // 3. 응답 처리
        resp.setContentType("text/html");
        resp.setCharacterEncoding("UTF-8");
        PrintWriter w = resp.getWriter();

        w.write("<h1>%s님은 %d년생입니다.</h1>".formatted(name, birthYear));
        w.write("<h2>%s</h2>".formatted(message));

        w.close();
    }
}

✅ 객체 모델 설계

  • 댄서 객체 Dancer
  • 수준(enum) DanceLevel
  • 장르(enum) Genre
  • 저장소 클래스 DancerRepository
public class Dancer {
    private String name;
    private String crewName;
    private DanceLevel danceLevel;
    private List<Genre> genres;
    // 생성자, getter, setter, equals, hashCode, toString 구현
}

✅ 댄서 등록 기능 흐름

  1. /chap02/dancer/register (GET): 등록 폼 HTML 반환
  2. /chap02/dancer/process (GET): 등록 데이터 받아서 객체 생성, 저장소에 추가
  3. /chap02/dancer/show-list (GET): 저장된 댄서 리스트 HTML로 출력

✅ Repository 구조

public class DancerRepository {
    private static List<Dancer> dancerList;

    static {
        dancerList = new ArrayList<>(List.of(
            new Dancer("춘식이", "카카오프렌즈", DanceLevel.AMATEUR, List.of(Genre.HIPHOP, Genre.KPOP)),
            ...
        ));
    }

    public static List<Dancer> getDancerList();
    public static void addDancer(Dancer d);
    public static void removeDancer(int index);
}

✅ 등록 폼 예시

  • form 내부 구성: 이름, 크루명, 레벨 (라디오), 장르 (체크박스)
  • form 전송 시 /chap02/dancer/process로 GET 요청됨
<form action="/chap02/dancer/process" method="get">
  <input type="text" name="name">
  <input type="radio" name="danceLevel" value="PROFESSIONAL">
  <input type="checkbox" name="genres" value="KPOP">
  ...
</form>

📌 요약

  • 서블릿은 자바 웹 개발의 핵심 기술로 요청/응답 흐름을 처리한다.
  • 객체 설계와 컬렉션 활용으로 상태를 유지하며, 여러 화면 간 기능을 연결한다.
  • 레벨, 장르, 크루 등의 정보들을 enum과 List로 구성하여 관리한다.
  • HTML과 자바를 유기적으로 결합하여 웹 애플리케이션의 기능을 구성한다.

0개의 댓글