🚀 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이 변경됨 (브라우저가 다른 페이지로 이동하는 것이 보임)
📌 최종 요약
MVC 패턴
- Model2는 JSP/Servlet 기반의 MVC 적용 방식 (Spring MVC도 Model2 구조)
- 컨트롤러(서블릿)에서 데이터를 처리하고, JSP(View)에서 화면을 출력
Spring과 서블릿
- Spring은 서블릿을 내부적으로 활용하여 개발을 편리하게 함
- Spring Boot는 복잡한 설정을 줄이기 위해 등장
HTTP 전송 방식
GET
: URL에 데이터를 포함하여 전송 (조회)POST
: 본문(Body)에 데이터를 포함하여 전송 (등록/수정)- 체크박스나 다중 선택 요소에서는
getParameterValues()
사용
데이터 스코프
page
→request
→session
→application
순으로 공유 범위 증가session
은 로그인 정보 유지,request
는 일시적인 데이터 전달에 사용
페이지 이동 방식
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 |