반응형

공부/Spring 24

검증2 - Bean Validation

Bean Validation을 알아보기 전에 이전에 보았던 Validation을 참고하자.https://surrealcode.tistory.com/135 검증1 - Validation검증 요구사항기존에 만든 상품 관리 시스템은 허술한 부분이 많다. id가 없어도 등록이 되거나, int값을 받는 곳에 String을 넣게되면, 4xx번대 에러가 발생하는 등 문제가 많았다. 이 부분을 해결surrealcode.tistory.com BeanValidation검증 기능을 지금처럼 매번 코드로 작성하는 것은 상당히 번거롭다. 특히 특정 필드에 대한 검증 로직은 대부분 빈 값인지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다. 다음 코드를 보자public class Item { private..

공부/Spring 2025.04.03

검증1 - Validation

검증 요구사항기존에 만든 상품 관리 시스템은 허술한 부분이 많다. id가 없어도 등록이 되거나, int값을 받는 곳에 String을 넣게되면, 4xx번대 에러가 발생하는 등 문제가 많았다. 이 부분을 해결하기 위해 상품 관리 시스템에 새로운 요구사항이 추가되었다. 요구사항 : 검증 로직 추가- 타입 검증    - 가격, 수량에 문자가 들어가면 검증 오류 처리- 필드 검증    - 상품명 : 필수, 공백X    - 가격 : 1000원 이상, 백만원 이하    - 수량 : 최대 9999- 특정 필드의 범위를 넘어서는 검증    - 가격 * 수량의 합은 10,000원 이상 지금까지 만든 웹 애플리케이션은 폼 입력시 숫자를 문자로 작성하거나해서 검증 오류가 발생하면 오류 화면으로 바로 이동한다. 이렇게 되면 사..

공부/Spring 2025.04.01

메시지, 국제화

메시지, 국제화 소개 메시지만약 기획자가 화면에 보이는 문구가 마음에 들지 않는다고, '상품명'이라는 단어를 모두 '상품이름'으로 고쳐달라고 하면, 어떻게 해야할까?여러 화면에 보이는 상품명, 가격, 수량 등, label에 있는 단어를 변경하려면 '상품명'이라는 단어가 존재하는 화면을 다 찾아가면서 모두 변경해야 한다. 지금처럼 화면 수가 적으면 문제가 되지 않지만, 화면이 수십개 이상이라면, 수십개의 파일을 모두 고쳐야 한다.- addForm.html, editForm.html, item.html, items.html 왜냐하면 해당 HTML 파일에 메시지가 하드코딩 되어있기 때문이다. 이런 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다. ex) message.properties..

공부/Spring 2025.03.30

타임리프 - 스프링 통합과 폼

타임리프 스프링 통합타임리프는 크게 2가지 메뉴얼을 제공한다. 기본매뉴얼 : https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html스프링 통합 매뉴얼 : https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html 타임리프는 스프링 없이도 동작하지만, 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다. 그리고 이런 부분은 스프링으로 백엔드를 개발하는 개발자 입장에서 타임리프를 선택하는 하나의 이유가 된다.  스프링 통합으로 추가되는 기능들- 스프링의 SpringEL 문법 통합- ${@myBean.doSomething()}처럼 스프링 빈 호출 지원- 편리한 폼 관리를 위한 추가 속성    ..

공부/Spring 2025.03.29

타임리프 - 기본 기능

타임리프의 기본 기능에 대해 알아보자.우선 그 전에 프로젝트를 하나 생성한다. 생성은 아래와 같이 생성해준다.https://start.spring.io/ Dependency는 Spring Web, Lombok, Thymeleaf를 적용하였다.   타임리프타임리프의 공식 사이트 및 메뉴얼은 다음과 같다.https://www.thymeleaf.org/ 타임리프 특징- 서버 사이드 HTML 렌더링(SSR)- 네츄럴 템플릿- 스프링 통합 지원 서버 사이드 HTML 렌더링(SSR)타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링하는 용도로 사용된다. 네츄럴 템플릿타임리프는 순수 HTML을 최대한 유지하는 특징이 있다.타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을..

공부/Spring 2025.03.27

스프링 MVC 웹 페이지 만들기

우선 프로젝트 생성을 해보도록 하자.  Generate해준 후 intellij로 build.gradle을 실행시킨다.  Welcome 페이지(index)페이지를 만들어보자./resources/static 및에 index.html 파일을 생성하자. 상품 관리 상품 관리 - 기본  서버를 재실행하고 URL을 접속해보면 다음과 같은 결과를 확인할 수 있다.  href 태그를 눌러보면 localhost:8080/basic/items로 이동하는것을 볼 수 있다.   요구사항 분석상품을 관리할 수 있는 서비스를 만들 예정이다. 요구사항은 다음과 같다. 상품 도메인 모델- 상품 ID- 상품명- 가격- 수량 상품 관리 기능- 상품 목록- 상품 상세- 상품 등록..

공부/Spring 2025.03.25

스프링 MVC - 기본 기능

https://surrealcode.tistory.com/129 스프링 MVC - 구조 이해https://surrealcode.tistory.com/128 MVC 프레임워크 만들기프론트 컨트롤러 패턴 소개https://surrealcode.tistory.com/127 서블릿, JSP, MVC 패턴간단한 웹 애플리케이션을 만들어 보도록 하자.서블릿으로 만든 후 Jsurrealcode.tistory.com스프링 MVC의 기본 기능을 알아보기 전에 스프링MVC의 구조에 대해 숙지하여 보자.  우선 새로 프로젝트를 하나 생성한다.https://start.spring.io/ War 대신 Jar를 선택해주어야 한다.Jar를 사용하면 항상 내장 서버(톰캣등)을 사용하고 'webapp' 경로도 사용하지 않는다.. 내장..

공부/Spring 2025.03.20

스프링 MVC - 구조 이해

https://surrealcode.tistory.com/128 MVC 프레임워크 만들기프론트 컨트롤러 패턴 소개https://surrealcode.tistory.com/127 서블릿, JSP, MVC 패턴간단한 웹 애플리케이션을 만들어 보도록 하자.서블릿으로 만든 후 JSP로 개선을 해본 뒤 MVC 패턴을 적용시켜본다. 회surrealcode.tistory.com 스프링 MVC를 이해하기 전에 이전 포스팅에서 직접 만든 MVC 프레임워크를 참고하도록 하자.   스프링 MVC 전체 구조직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보도록 하자.  기존 만들었던 MVC 프레임워크와 사실 스프링MVC 구조는 거의 동일하다(약간 이름에 차이가 있을 뿐) 직접 만든 프레임워크 -> 스프링MVC 비교- Fr..

공부/Spring 2025.03.17

MVC 프레임워크 만들기

프론트 컨트롤러 패턴 소개https://surrealcode.tistory.com/127 서블릿, JSP, MVC 패턴간단한 웹 애플리케이션을 만들어 보도록 하자.서블릿으로 만든 후 JSP로 개선을 해본 뒤 MVC 패턴을 적용시켜본다. 회원 관리 웹 애플리케이션 요구사항회원 정보이름 : username나이 : age 기능 요surrealcode.tistory.com 프론트 컨트롤러 패턴을 도입하기 전에는 컨트롤러마다 공통로직을 전부 호출해주었어야 했다.(이전 포스팅 참조) 이전 포스팅에서는 포워드가 중복됐었고, viewPath가 중복 됐었고, 사용하지 않는 코드들을 만들었어야 했다. 프론트 컨트롤러를 도입하면(Front Controller도 서블릿이다.)프론트 컨트롤러에 공통 로직을 다 몰아놓고, 각각 ..

공부/Spring 2025.03.15

서블릿, JSP, MVC 패턴

간단한 웹 애플리케이션을 만들어 보도록 하자.서블릿으로 만든 후 JSP로 개선을 해본 뒤 MVC 패턴을 적용시켜본다. 회원 관리 웹 애플리케이션 요구사항회원 정보이름 : username나이 : age 기능 요구사항- 회원 저장- 회원 목록 조회 우선 회원 객체를 만들어준다.@Getter@Setterpublic class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; }} 이후 회원을 저..

공부/Spring 2025.03.12
반응형