Skip to content

Commit

Permalink
Create TIL220323.md
Browse files Browse the repository at this point in the history
  • Loading branch information
wjddntjr555w authored Mar 23, 2022
1 parent 86c8c4d commit c92d8fe
Showing 1 changed file with 159 additions and 0 deletions.
159 changes: 159 additions & 0 deletions TIL220323.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# Daily to do list
## Java

- - -
## Spring

-- - -
## CS

- - -
## 알고리즘

---------
# 오늘의 회고

220323 Spring MVC

————————————————
웹 페이지 만들기


————————————
요구사항 분석

상품 도메인 모델 :
상품 ID, 상품명, 가격, 수량

상품 관리 기능 :
상품 목록, 상품 상세, 상품 등록, 상품 수정

——————————
상품 도메인 개발
@Data 애노테이션도 가능하지만 Data에는 여러가지 기능이 더 있으므로 핵심 모델에는 확인을 하면서 @Getter, @Setter등 하나씩 추가해주는 것이 좋다. (혹시 모를 기능이 들어가면 안되니까)

주석들을 좀 봐야할듯, 실제 서비스에서는 하면 안되는 것들이 있음.


설계 순서??
domain, Repository, Test,



——————————————
상품 서비스 HTML

부트스트랩 이용해서 HTML 파일 만든느 작업..


**** 참고
이렇게 정적 리소스가 공개되는 /resources/static폴더에 HTML을 넣어두면 실제 서비스에서도 공개가 된다… 서비스를 운영한다면 지금처럼 공개할 필요없는 HTML을 두는 것은 주의!!

타임리프는 th:href 이런식으로 쓰고 치환이 되는 형식

jsp랑 다르게 치ㄱ환 느낌, 음.. 크게 꺠지지 않음 그리고 소스코드가 많이 안들어간다? 원형 유지 가능


사용 방법 타임리프 :

<html xmlns:th="http://www.thymeleaf.org">

이걸로 사용 선언

속성 변경 : th:href

핵심은 바로 이거
기존 것을 대체 한다. th:xxx가 없으면 기존 html 사용하고 있으면 대치 되는 형식!

그리고 html을 그냥 열어서 th 가 있어도 th무시하고 열어줌 그냥
(jsp는 못열음)


링크 표현식.. 이걸 사용하면 서블릿 컨텍스트를 자동으로 포함(요즘은 안씀)

리터럴 대치 문법도 있음

반복 출력 : th:each 이걸 많이 씀..


변수 표현식은 모델에서 값을 직접 가져온다!!


쿼리 파라미터도 사용 가능

타임리프는 네츄럴 템플릿!




——————————————
상품 상세

받아온 파라미터 값을 가지고 repository에서 찾아서 반환

——————————————
상품 등록 처리 - @ModelAttribute

Post- Html Form 으로 전달해 온다

먼저 @RequestParam

HtmlForm의 name이 넘어옴

이번엔 @ModelAttribute

이렇게 모델
@ModelAttribute의 모델명을 빼면 클래스 명의 첫글자를 소문자로 바꿔서 해줌..

———————————————
상품 수정


리다이렉트를 넣었다.. 등록할 떄는 안하고 수정할 떄 리다이렉트를 한 이유는

PRG 로 설명

GET으로 상품 등록 화면을 띄운 상태에서 등록으로 POST요청을 하고!!
새로고침을 해버리면.. POST로 요청이 다시 가게 된다..
그러면 상품이 계속 등록되게 된다..

새로고침은 마지막에 서버에 전송한 데이터를 다시 전송하는 것 (즉 post요청이 가장 마지막)

이 문제를 해결하는 법은! Post, Redirect GET!!
PRG

마지막으로 get을 다시 리다이렉트하게 해서 새로고침을 하더라도 GET요청이 오도록

URL인코딩이 안되어서 위험하다 이 방법은


————————————————————
RedirectAttributes

상품을 저장하고 상품 상세 화면으로 리다이렉트한는 것 까진 좋았다..
근데 고객 입장에서는 저장이 잘 된건지 모른다.
그래서 저장이 잘 되었습니다. 라는 메시지 요구사항이 왔다면?

이렇게 리다이렉션 하는 것에 Attribute를 추가할 수 있음.

받는 html에서는 타임리프를 써서 status 값을 확인해서 보는 것

0 comments on commit c92d8fe

Please sign in to comment.