복습

250207 1교시 정리

Blue_bull 2025. 2. 7. 21:03

🚀 Servlet과 MVC 패턴 정리 (최종 버전)


1. MVC 패턴과 Model2

MVC (Model-View-Controller) 패턴웹 애플리케이션의 유지보수와 확장성을 높이기 위한 구조.

  • M(Model): 데이터 처리 (DTO, VO, DAO 등)
  • V(View): 사용자에게 보여지는 부분 (JSP, HTML, PDF 등)
  • C(Controller): 사용자의 요청을 받아 적절한 Model과 View를 연결 (Servlet, Spring Controller)

Model2는 JSP/Servlet 기반의 MVC 적용 방식

  • Model1 (JSP 중심)보다 유지보수와 확장성이 뛰어남
  • Spring MVC도 Model2 구조를 기반으로 동작함

📌 Model1 vs Model2 비교
| 비교 항목 | Model1 | Model2 (MVC) |
|-----------|---------|--------------|
| 컨트롤러 | 없음 (JSP에서 직접 로직 처리) | 서블릿이 컨트롤러 역할 |
| 로직 처리 위치 | JSP 안에서 직접 처리 | Model과 Controller에서 처리 |
| 유지보수 | 어려움 (코드가 섞임) | 용이 (역할 분리) |
| 사용 예시 | 작은 규모 프로젝트 | Spring MVC, JSP+Servlet 프로젝트 |


2. 서블릿과 Spring

서블릿 등장 이유: Java에서 동적인 웹 페이지를 만들기 위해 필요함.
Spring 프레임워크: 서블릿을 미리 만들어 제공하여 웹 개발을 편리하게 함.
Spring Boot: Spring의 복잡한 설정을 줄이기 위해 등장.


3. HTTP 전송 방식

GET: 데이터를 URL에 포함하여 전송 (조회 요청)
POST: 데이터를 요청 본문(Body)에 포함하여 전송 (등록/수정 요청)

📌 다중 데이터 전송 (체크박스, 다중 선택 드롭다운)

String[] hobbies = request.getParameterValues("hobby"); 
// 체크박스나 다중 선택 요소에서 여러 개의 값을 받을 때 사용

단일 값과 다중 값 처리 비교
| 메서드 | 사용 예시 | 반환값 |
|--------|---------|------|
| getParameter() | <input type="text" name="username"> | String |
| getParameterValues() | <input type="checkbox" name="hobby"> | String[] |


4. 스코프(Scope)

스코프(Scope): 데이터의 유지 범위를 결정하는 개념.

스코프 공유 범위 사용 예시
page 현재 JSP 페이지에서만 유지 거의 사용하지 않음
request 하나의 요청 내에서 유지 검색 결과, 일시적인 데이터
session 브라우저 종료 전까지 유지 로그인 정보, 장바구니
application 서버가 종료될 때까지 유지 웹 애플리케이션 전체 공유 데이터

📌 예제

// 세션에 로그인 정보 저장
HttpSession session = request.getSession();
session.setAttribute("userId", "admin");

// 요청(request)에 메시지 저장
request.setAttribute("message", "로그인 성공!");

5. 페이지 이동 방식

페이지 이동 방법: forward() vs sendRedirect()

비교 항목 포워드 (forward()) 리다이렉트 (sendRedirect())
요청 방식 기존 요청 유지 새로운 요청 생성
URL 변경 여부 변경 없음 변경됨
request 데이터 유지됨 유지되지 않음
속도 빠름 (서버 내부 이동) 느림 (네트워크 왕복 발생)
사용 예시 로그인 후 페이지 이동, JSP 간 데이터 전달 외부 사이트 이동, 특정 URL 강제 이동

📌 포워드 방식 (forward())

String gotopage = "example/servlerTo01.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(gotopage);
dispatcher.forward(request, response);

서버 내부에서 이동하며 request 데이터 유지됨
클라이언트가 보는 URL은 변경되지 않음

📌 리다이렉트 방식 (sendRedirect())

response.sendRedirect("example/servlerTo01.jsp");

새로운 요청을 보내므로 request 데이터가 유지되지 않음
URL이 변경됨 (브라우저가 다른 페이지로 이동하는 것이 보임)


📌 최종 요약

  1. MVC 패턴

    • Model2는 JSP/Servlet 기반의 MVC 적용 방식 (Spring MVC도 Model2 구조)
    • 컨트롤러(서블릿)에서 데이터를 처리하고, JSP(View)에서 화면을 출력
  2. Spring과 서블릿

    • Spring은 서블릿을 내부적으로 활용하여 개발을 편리하게 함
    • Spring Boot는 복잡한 설정을 줄이기 위해 등장
  3. HTTP 전송 방식

    • GET: URL에 데이터를 포함하여 전송 (조회)
    • POST: 본문(Body)에 데이터를 포함하여 전송 (등록/수정)
    • 체크박스나 다중 선택 요소에서는 getParameterValues() 사용
  4. 데이터 스코프

    • pagerequestsessionapplication 순으로 공유 범위 증가
    • session은 로그인 정보 유지, request는 일시적인 데이터 전달에 사용
  5. 페이지 이동 방식

    • forward() → 서버 내부에서 이동, request 데이터 유지, URL 변경 없음 (빠름)
    • sendRedirect() → 새로운 요청 발생, request 데이터 유지되지 않음, URL 변경 (느림)

🚀 완벽한 정리 끝!

이제 MVC 패턴과 서블릿에 대한 개념이 확실해졌을 거예요! 😃
추가로 궁금한 점이 있으면 질문 주세요. 💡

'복습' 카테고리의 다른 글

250207 복습3  (0) 2025.02.07
250207 복습2  (0) 2025.02.07
250131(4교시 복습)  (0) 2025.01.31
250131(3교시 복습)  (0) 2025.01.31
250131(2교시 복습)  (0) 2025.01.31