본문 바로가기
관리자

Programming-[Backend]

(421)
[스프링 웹MVC-2] 5. 검증(Validation) 강의에서 받은 validation 프로젝트 파일을 기반으로 검증에 대해서 공부한다. 초기 세팅은 이전 프로젝트들과 동일하게 해주도록 한다. 1. 검증 내용 검증 예제를 바탕으로 학습을 해볼 것이다. 검증 요구사항이 아래와 같다고 가정한다. 1. 타입 검증 가격, 수량에 문자가 들어가면 에러 2. 필드 검증 상품명 : 필수 입력, 공백X 가격 : 1,000원 이상, 1,000,000원 이하 수량 : 최대 9,999개 3. 전체 검증 가격*수량의 값은 10,000원 이상 프론트 VS 백 검증 검증에는 클라이언트(프론트)상에서 입력값을 바로 검증하는 방법이 있고, 입력값을 서버(백)로 가져와서 검증하는 방법이 있다. 그러나 결론은 프론트, 백 모두에서 검증해야한다. 왜냐하면 프론트에서만 검증할 경우, 입력창에..
[스프링 웹MVC-2] 4. 메시지, 국제화 기존 상품 등록 프로젝트를 그대로 가져온다. 강의에서 받을 수 있는 파일로 받는데, 이전 시간에 다룬 체크박스 등의 내용은 제외된다. 1. 개요 현재 프로젝트는 만약 html 상 하드코딩된 단어들을 변경해야 된다면, 일일이 찾아서 고쳐야하는 상황이다. 아래 사진에서 상품명, 가격, 수량 등을 바꿔야 한다면 직접 찾아가며 바꿔야되는 것이다. 이런 어려움을 해결해줄 수 있는 것이 메시지 이다. 단어들을 하드코딩하지 않고, 별도의 파일(messages.properties)에 놔두고 관리하는 것이다. 국제화 도 메시지에서 영어버전 파일은 messages_en.properties, 한글 버전 파일은 message_ko.properties로 두면 될 것이다. 그리고 HTTP의 accept-language 헤더 값을..
[스프링 웹MVC-2] 3. 타임리프/스프링으로 폼 양식 만들기 - th:object, th:field, 체크박스, 라디오 버튼, 셀렉트 박스 form 프로젝트를 생성한다. 강의에서 기초 자료를 받아서 진행한다. MVC 1편에서 상품 관련 폼을 만들던 프로젝트이다. 스프링 통합 폼을 실습하기 위해서, 타임리프를 스프링 빈 형태로 등록해야한다. 기존 스프링은 다소 복잡한 과정을 통해 타임리프 템플릿 엔진을 스프링 빈으로 등록해야 하지만, 스프링 부트는 아래 구문으로 build.gradle 파일에 타임리프를 import 해옴으로써 이런 과정을 한번에 처리해준다. implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 1. 입력 폼 수정 상품 등록/수정 폼 우선 html 파일에서 객체 정보를 바로 넘길 수 있도록 하기 위해, Controller에서 객체를 넘겨줘야 한다. 이때 ..
[스프링 웹MVC-2] 2. 타임리프 기본 - 2 : 대표 문법 공부 계속 - 반복, 조건, 주석, 블록, 자바스크립트, 템플릿, 레이아웃 1. 타임리프 기능 살펴보기 - 이전 글에 이어서 반복 반복 기능은 반복적으로 데이터를 렌더링 해준다. 아래 코드와 같이 th:each="파라미터1, 파라미터2 : ${반복객체}" 로 표현한다. 파라미터1은 반복 객체 속의 각 객체를 의미하고, 파라미터2는 각 객체의 상태값을 표현한다. 파라미터1의 이름이 user인 경우 파라미터2의 이름은 userStat으로 자동지정되어 파라미터2는 생략해도 정상 동작한다. 표현할 수 있는 상태값은 코드에 나와 있는 것과 같으며, current는 현재 반복 index의 각 객체를 표시한다. 결과 화면을 참고하자. 예시를 위해서 addUsers 메서드를 추가했다. 반복 기능의 경우 예시문의 List 뿐만 아니라, java.util.Iteration, java.util.E..
[스프링 웹MVC-2] 1. 타임리프 기본 - 1 : 프로젝트 생성, 대표 문법 공부 - text, 변수, 기본 및 편의 객체, 날짜, 유틸리티 1. 프로젝트 생성 및 초기 세팅 늘 하던대로 start.spring.io 사이트에서 프로젝트를 생성한다. 다만 Group은 hello, Artifact는 thymeleaf-basic 이라고 하되, 자동완성되는 package name은 hello.thymeleaf 까지만 작성한다. packaging은 Jar, Java 11버전, Gradle PJT로 진행한다. dependency는 Spring web, lombok, thymeleaf를 설정한다. 늘 하던대로~ annotation processor를 enabled로 바꿔주고, Build Tools를 intelliJ로 바꿔준다. resources/static/index.html 파일을 넣어준다. view 조회 경로를 미리 지정해놓은 html 파일이다. 2...
[스프링 웹MVC] 14. 웹페이지 실습 ; PRG 패턴, RedirectAttributes MVC 패턴과 Thymeleaf를 이용하여 간단한 웹사이트를 만들어본다. 1. 프로젝트 생성 프로젝트를 생성한다. 패키지명에 "-" 같은 표기가 들어가면 안되므로 유의하자 서버를 띄워 잘 실행되는지 확인하고, 아래의 index.html을 추가하여 welcome page가 정상적으로 보이는지 확인한다. resources/static/index.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Title 상품 관리 상품 관리 - 기본 Colored by Color Scripter cs 표현할 웹페이지의 기획 내용은 다음과 같다. 1. 상품 목록을 보여준다. 2. 상품 목록에서 상품 상세로 이동가능하다. 3. 상품 저장이 가능하며, 저장 완료 시 상품 상세 화면으로 이동한다...
[스프링 웹MVC] 13. 스프링 MVC - HTTP 메시지 컨버터, 요청 매핑 핸들러 어댑터 구조 1. 메시지 컨버터 메시지 컨버터는 HTTP 요청 body를 원하는 타입으로 변환하거나, HTTP 응답으로 뷰 템플릿을 전송하는 것이 아니라 JSON 객체 등으로 HTTP body에 직접 메시지를 쓰는 경우에 사용한다. 구체적으로, ViewResolver 대신 HttpMessageConverter가 적용된다. 스프링부트에서는 앞서 살펴보았던 @RequestBody, @ResponseBody, HttpEntity 등이 적용되어 body가 송수신되는 경우에 메시지 컨버터가 적용된다. HttpMessageConverter를 상속하여 여러가지 타입의 데이터 메시지를 처리하는 다양한 컨터버 클래스들이 존재한다. 대표적인 컨버터들은 다음과 같다. 위쪽 컨버터부터 순서대로 작동한다. ByteArrayHttpMessa..
[스프링 웹MVC] 12. 스프링 MVC - 응답 정보 처리 기능 1. View 처리방식 응답을 단순 text, JSON 정보로 보내는 것이 아니라 View로 보내는 방법을 배운다. MVC 패턴의 마지막 단계라고 할 수 있다. 스프링부트에서 View를 처리하는 방식은 Controller의 viewPath를 기반으로 static, 또는 동적인 templates의 html 파일을 반환하는 방식이다. resources 경로 내부에 '/static', '/public', '/resources', '/META-INF/resources' 디렉토리가 있으면 그 디렉토리 내부의 view 파일들을 참조하는 방식으로 작동한다. 여기서 static 디렉토리에는 정적 리소스 정보를, templates 폴더에는 동적 HTML 정보를 넣어주는 것이 일반적이다. 2. 응답 처리 - 정적 리소스,..