🎨
스프링 MVC
  • Initial page
  • 웹 애플리케이션 이해
    • 웹 서버, 웹 애플리케이션 서버
    • 서블릿
    • 동시 요청 - 멀티 쓰레드
    • HTML, HTTP API, CSR, SSR
    • 자바 백엔드 웹 기술 역사
  • 2. 서블릿
    • 프로젝트 생성
    • Hello 서블릿
    • HttpServletRequest - 개요
    • HttpServletRequest - 기본 사용법
    • HTTP 요청 데이터 - 개요
    • HTTP 요청 데이터 - GET 쿼리 파라미터
    • HTTP 요청 데이터 - POST HTML Form
    • HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트
    • HTTP 요청 데이터 - API 메시지 바디 - JSON
    • HttpServletResponse - 기본 사용법
    • HTTP 응답 데이터 - 단순 텍스트, HTML
    • HTTP 응답 데이터 - API JSON
    • Summary
  • 3. 서블릿, JSP, MVC 패턴
    • 회원관리 웹 애플리케이션 요구사항
    • 서블릿으로 회원 관리 웹 애플리케이션 만들기
    • NoClassDefFoundError(WebServlet) TroubleShooting
    • NumberFormatException TroubleShooting
    • HTML에서 한글이 보이지 않는 이슈 TroubleShooting
    • JSP로 회원 관리 웹 애플리케이션 만들기
    • MVC 패턴 - 개요
    • MVC 패턴 - 적용
    • MVC 패턴 - 한계
    • Summary
  • 4. MVC 프레임워크 만들기
    • 프론트 컨트롤러 패턴 소개
    • 프론트 컨트롤러 도입 - v1
    • View 분리 - v2
    • Model 분리 - v3
    • 단순하고 실용적인 컨트롤러 - v4
    • ⭐️유연한 컨트롤러1 - v5(어댑터 도입, 인터페이스3 처리)
    • ⭐️유연한 컨트롤러2 - v5(어댑터 도입, 인터페이스3,4 처리)
    • Summary
  • 5. 스프링 MVC - 구조 이해
    • ⭐️스프링 MVC 전체 구조
    • 핸들러 매핑과 핸들러 어댑터
    • 뷰 리졸버
    • 스프링 MVC - 시작하기
    • @Controller 등장!⭐️
    • 스프링 MVC - 컨트롤러 통합
    • 스프링 MVC - 실용적인 방식
    • Summary
  • 6. 스프링 MVC - 기본 기능
    • 프로젝트 생성
    • 로딩 간단히 알아보기
    • 요청 매핑
    • 요청 매핑 - API 예시
    • HTTP 요청 - 기본, 헤더 조회
    • HTTP 요청 파라미터 - 쿼리 파라미터, HTML, Form
    • HTTP 요청 파라미터 - @RequestParam
    • HTTP 요청 파라미터 - @ModelAttribute
    • HTTP 요청 메시지 - 단순 텍스트
    • HTTP 요청 메시지 - JSON
    • 응답 - 정적 리소스, 뷰 템플릿
    • HTTP 응답 - HTTP API, 메시지 바디에 직접 입력
    • HTTP 메시지 컨버터
    • 요청 매핑 핸들러 어댑터 구조
    • Summary
  • 7. 스프링 MVC - 웹 페이지 만들기
    • 프로젝트 생성
    • 요구사항 분석
    • 상품 도메인 개발
    • 상품 서비스 HTML
    • 상품 목록 - 타임리프
    • 상품 상세
    • 상품 등록 폼
    • 상품 등록 처리 - @ModelAttribute
    • 상품 수정
    • PRG Post/Redirect/Get
    • RedirectAttributes
    • Summary
  • What's Next?
Powered by GitBook
On this page

Was this helpful?

  1. 7. 스프링 MVC - 웹 페이지 만들기

상품 상세

타임리프 문법이 제대로 숙지되지 않아서 typo 때문에 몇번이고 오류가 났다. 다음 3가지 컨트롤러(메서드)와 뷰를 구현해보자.

  • 상품 상세페이지

  • 상품 수정 페이지 렌더링

  • 상품 목록으로

상품 상세페이지로 이동하는 메서드와 템플릿 구현

  1. 메서드 구현 단순 조회이기 때문에 GET 메서드로 매핑한다! 틀린 부분 @GetMapping 값으로 넣어준 경로 변수 ("/{varName}")의 varName이랑 메서드의 파라미터로 받을 것이기 때문에 동일해가 해줘야한다! 전자는 i를 소문자로 하고, 후자는 대문자로 해서 오류가 났었다! 치환할 속성 이름은 복붙해서 쓰도록 하자!!!

@GetMapping("/{itemId}")
public String itemDetail(@PathVariable itemId, Model model){
    Item item = itemRepository.findById(itemId);
    model.addAttribute("item",item);
    return "basic/item_practice";
}    

정답 소스

@GetMapping("/{itemId}")//경로 변수 설정
    public String item(@PathVariable long itemId, Model model){
        Item item = itemRepository.findById(itemId);
        model.addAttribute("item",item);
        return "basic/item_practice";
//        return "basic/item";
    }

2. 템플릿 뷰 구현

  1. 템플릿 등록 선언⭐️ 타임 문법 사용을 위해 필수!!!!⭐️

  2. 부트스트랩 css 경로 설정

  3. model에서 받은 데이터로 동적 페이지 구현

model로 받은 item 객체의 데이터들을 렌더링한다! 기존의 value들을 타임리프 문법으로 동적으로 수정한다! 기존 html 문법을 따라가되, 값을 넣어줄 때 타임리프 문법이 사용된다!!! 기존 => value="..." 타임리프=> th:value="${item.id}"

틀린 이유 : value 철자가 틀려서 치환할 데이터 값이 치환되지 않았다!!

타임리프 경로 설정(@{...} Tip 기존의 HTML 속성 설정 포맷을 들고오되, 동적으로 변경하고 싶은 데이터 자리에 타임리프 문법으로 작성해준다!

상품 수정 링크 설정 - 기존 코드

onclick="location.href='editForm.html'"

수정 후 : 타임리프의 리터럴을 사용해서 경로 설정해줄 것이기 때문에 HTML 속성값을 셋팅하는 큰 따옴표 바로 다음에 |로 시작하고 큰 따옴표 닫히기 바로 전에 |로 닫아준다!

href='...' 이 부분에 경로가 들어갈 것이기 때문에 @{..}문법 사용해서 경로 설정해준다!

th:onclick="|location.href='@{/basic/items/{itemId}/edit(itemId=${item.id})}'|"

상품 목록으로 링크 설정 - 기존 코드

onclick="location.href='items.html'"

수정 후 :

th:onclick="|location.href='@{/basic/items}'|"
Previous상품 목록 - 타임리프Next상품 등록 폼

Last updated 3 years ago

Was this helpful?