TIL - 20250711

juni·2025년 7월 11일

TIL

목록 보기
62/315

0711 학습 정리 - JSP, MVC 패턴, Spring 기본 컨트롤러

✅ JSP 핵심 문법 복습

1. 지시어 (<%@ ... %>)

  • JSP 페이지의 동작 방식 설정.

  • 예시:

    <%@ page language="java" contentType="text/html; charset=UTF-8" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

2. 스크립틀릿 (<% ... %>)

  • JSP 안에 자바 코드를 삽입.

  • 반복문, 조건문 등 가능.

    <% for (int i = 1; i <= 3; i++) { %>
      <a href="#">링크 <%= i %></a>
    <% } %>

3. 표현식 (<%= ... %>)

  • 변수 출력용.

    <%= dancer.getName() %>

4. JSP에서 HTML 폼 전송 처리

  • request.getParameter("name") 등으로 폼 데이터 받기.
  • request.getParameterValues("genres")로 다중 값 처리.

✅ MVC V1 버전 흐름

1. 서블릿 클래스 작성

예: MvcProcessServlet

  • 폼 데이터 수집 → 객체 생성 → 저장소 저장 → request에 데이터 전달 → JSP 포워딩
  • 핵심 포인트: RequestDispatcher 이용해서 view로 이동
RequestDispatcher dp = request.getRequestDispatcher("/WEB-INF/chap04/dancer/result.jsp");
dp.forward(request, resp);

2. JSP 포워딩 및 EL 활용

  • request.setAttribute("dancerName", name);
  • ${dancerName} 으로 출력

✅ MVC 흐름 요약

  1. 사용자가 /mvc/v1/new 요청

    • 등록 폼을 보여주는 JSP로 이동 (AddNewDancerServlet)
  2. 등록 폼에서 submit → /mvc/v1/process로 이동

    • 데이터 받아 Dancer 객체 생성 및 저장 → 결과 JSP로 포워딩
  3. 목록 조회 /mvc/v1/show

    • 저장된 dancer 리스트를 JSP로 넘김 → JSTL로 출력
  4. 삭제 /mvc/v1/remove

    • 리스트 인덱스를 받아 삭제 후 /mvc/v1/show로 리다이렉트

✅ JSTL과 EL

  • c:forEach를 통해 서버 데이터 반복 출력
  • ${} : request 영역 데이터 접근 표현

✅ Spring Controller 기본

1. 컨트롤러 작성 예시

@Controller
public class HelloController {
    @RequestMapping("/chap01/hello")
    @ResponseBody
    public Map<String, Object> hello() {
        return Map.of("name", "김철수", "age", 50);
    }

    @RequestMapping("/chap02/bye")
    public String bye() {
        return "bye"; // view 이름만 리턴
    }
}

2. @ResponseBody vs 뷰 리턴

  • @ResponseBody가 있으면 JSON으로 응답.
  • 없으면 view 이름으로 간주하여 포워딩함.

✅ 상품 관리 REST 컨트롤러

1. 메모리 기반 상품 저장소

  • Map으로 상품 목록 저장
  • @RestController + @RequestMapping으로 REST 방식 컨트롤러 작성
@GetMapping
public Product getProduct(
  @RequestParam("id") long id,
  @RequestParam(value = "price", required = false, defaultValue = "1000") int price
) {
    return productMap.get(id);
}

✅ 요약 정리

  • JSP는 서버 사이드 렌더링 기술, EL과 JSTL 활용.
  • MVC 흐름은 요청 → 서블릿 처리 → JSP 출력.
  • Spring에서는 @Controller와 @RestController 사용.
  • JSON 응답은 @ResponseBody, View는 String으로 포워딩.
  • REST 방식 컨트롤러에서는 @RequestParam으로 쿼리 파라미터 처리.

0개의 댓글