전체 글

1. JDBC 이해애플리케이션 개발시 데이터는 주로 데이터베이스에 보관하며, 보통 애플리케이션 서버의 구조는 다음과 같다.이때, 클라이언트가 데이터의 저장, 조회 등을 요청하면, 서버는 해당 요청을 처리하기 위해 DB에 접근해야 한다. 이를 위해, 어플리케이션 서버는 아래 과정을 통해 데이터베이스에 접근한다. 커넥션 연결은 주로 TCP/IP를 사용한다.하지만, (옛날에는) 각각의 데이터베이스마다 사용 방법이 달랐다. 커넥션 연결, SQL 전달 방법, 응답 받는 방법 모두 달라 아래와 같은 문제가 생겼다.사용하던 데이터베이스를 변경하면, 데이터베이스 사용 코드도 변경해야 한다.개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 응답 받는 방법을 숙지해야 한다.이러한 문제 때문에 JDBC가 등장한다..
1.  메시지란?만약, 기획자가 "상품명"이라는 단어를 모두 "상품 이름"으로 고쳐달라고 하며 어떻게 해야 할까? 만약, HTML 파일에 메시지가 하드코딩된 경우 경우 수십 개, 수백 개의 파일을 고쳐야 할 수 있다. 이런 문제를 해결하기 위해, 다양한 메시지를 한 곳에서 관리하도록 하는 기능이 메시지 기능이다. 예를 들어, messages.properties라는 메시지 관리용 파일에 다음과 같은 내용을 작성할 수 있다.item=상품item.id=상품 IDitem.itemName=상품명item.price=가격item.quantity=수량이렇게 되면 HTML에서 다음과 같이 해당 데이터를 key값으로 부를 수 있다.2. 국제화한국에서 혹은 미국에서 접속하는 사이트의 경우 여러 언어를 지원해야 한다. 이런 ..
1. 타임리프 스프링 통합타임리프는 일단 메뉴얼을 크게 두 가지를 제공한다.기본 메뉴얼: Tutorial: Using Thymeleaf스프링 통합 메뉴얼:  Tutorial: Thymeleaf + Spring기본 메뉴얼은 순수한 타임리프, 즉, 스프링 없이 타임리프를 사용할 때 그리고, 앞에서 살펴본 타임리프의 기본적인 기능이 설명된 메뉴얼이다. 그리고 스프링 통합 메뉴얼이라는 것이 있다. 이건 타임리프와 스프링을 통합해서 지원하는 기능들을 가지고 메뉴얼을 만든거다. 타임리프는 스프링이 없어도 동작한다. 하지만 스프링 통합을 위한 다양한 기능을 제공한다. 그리고 이런 부분이 스프링으로 백엔드를 개발하는 개발자 입장에서 타임리프를 사용하는 이유다. 스프링 통합으로 추가되는 기능은 다음과 같다.스프링의 Sp..
1. 타임리프 소개타임리프의 특징은 다음과 같다.서버 사이드 HTML 렌더링 (SSR)타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다.네츄럴 템플릿타임리프는 순수 HTML을 최대한 유지한다. 타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용 확인이 가능하다.  또한 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다.JSP를 포함한 다른 뷰 템플릿들은 소스코드와 HTML이 뒤죽박죽 섞여있기 때문에 웹 브라우저로 접근시 정상적인 HTML 결과를 확인하기 힘들다. 하지만 타임리프는 웹 브라우저에서 열어도 정상적인 결과 확인이 가능하다. 이렇게 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 것이 타임리프의..
1. 요구사항 분석 먼저 상품은 "상품 ID", "상품명", "가격", "수량"에 대한 정보를 가진다. 이때 상품 관리 기능으로는 "상품 목록", "상품 상세", "상품 등록", "상품 수정" 총 4가지 기능이 있다. 지금부터 해당 웹 페이지를 만들어보자. 서비스의 흐름은 다음가 같다. 클라이언트는 상품 목록에 들어가서 상품들을 볼 수 있다. 상품 목록에서는 상품 등록 폼으로 이동할 수 있다. 상품을 등록하면 상품을 저장한다. 상품을 저장하면 내부 호출을 통해 해당 상품에 대한 상세 화면을 띄워준다. 상품 상세에서는 상품 수정 폼으로 이동할 수 있다. 상품을 수정하면 상품 상세로 Redirect 된다. 2. 상품 도메인 개발 우리가 사용할 상품 클래스는 다음과 같이 만들 수 있다. @Getter @Set..
1. 로깅 간단히 알아보기앞으로 "System.out.println()"은 사용하지 않을 것이다. 실무에서는 이를 쓰면 안된다. 로그라는 것을 통해 콘솔로 출력해야한다. 기본적으로 스프링 부트의 Dependencies를 보면 항상 spring-boot-starter가 들어있다. 여기에 spring-boot-starter-logging이라는 라이브러리를 자동으로 가져오 그 안에 몇 개의 라이브러리가 또 들어있다.세상에는 Logback, Log4J, Log4J2 등 굉장히 많은 로그 프레임워크들이 있다.  이들을 통합하여 인터페이스로 제공하는 것이 SLF4J이다. 즉, SLF4J가 인터페이스인 것이고, Logback은 구현체 중 하나다. 실무에서는 스프링 부트가 제공하는 Logback을 주로 사용한다고 한다..
1. 스프링 MVC 전체 구조이전에 직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보자. 이전에 만들었던 프레임워크에 대한 내용은 아래를 참고하자. [Spring MVC-1] MVC 프레임워크 만들기1. 프론트 컨트롤러 패턴 소개 프론트 컨트롤러 도입 전에는 클라이언트의 요청에 맞는 컨트롤러를 작동시켰다. 이때 컨트롤러들은 여러 공통 작업을 수행하게 되고, 프로젝트의 규모가 커질 수ngp9440.tistory.com먼저 이전에 만든 프레임워크의 구조다.스프링 MVC의 구조는 다음과 같다.몇 가지 이름만 바뀌었을 뿐이지 똑같다. 차이점은 다음과 같다.프론트 컨트롤러의 이름이 DispatcherServlet으로 변경되었다.handlerMappingMap이 HandlerMapping으로 바뀐다.MyHan..
1. 프론트 컨트롤러 패턴 소개 프론트 컨트롤러 도입 전에는 클라이언트의 요청에 맞는 컨트롤러를 작동시켰다. 이때 컨트롤러들은 여러 공통 작업을 수행하게 되고, 프로젝트의 규모가 커질 수록 이러한 공통 작업의 양은 많아진다. 이를 막기 위해 우리는 프론트 컨트롤러를 만들 수 있다. 이 프론트 컨트롤러에 모든 공통 로직을 몰아넣고, 이전 컨트롤러들은 각각의 목적에 맞는 로직만 수행하면 된다. 그림으로 나타내면 다음과 같다. FrontController의 특징은 다음과 같다. 먼저 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받는다. = 입구가 하나다. 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아 호출한다. 공통 처리가 가능하다. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용할 필요가 없다..
코딩마루
Nam's Study Note