SPRING

    서블릿, JSP, MVC

    서블릿 서블릿을 배웠으니 본격적으로 만들어 봅시다! 서블릿의 핵심은 가지고 있는 데이터를 바탕으로 자바 코드에 HTML을 입력하는 것입니다! @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { List items = itemRepository.findAll(); // 바디 입력이기 때문에 타입, 인코딩 설정 resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); PrintWriter w = resp.getWriter(); // HTML 입력 w.write(""); w.wr..

    HTTP 요청 데이터와 응답 데이터 입력

    요청 메시지 데이터(HttpServletRequest) 이제 본격적으로 데이터를 입력해 봅시다. HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법은 크게 3가지입니다. 쿼리 파라미터(GET) HTML Form (POST) API 메시지 바디(POST, PUT,...) 쿼리 파라미터를 통해 전달 인터넷에 아무 검색이나 해봅시다. 그런 뒤 URI을 보면 https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=쿼리파라미터 물음표(?) 뒤 'name=value' 형태로 되어 있는 것을 알 수 있습니다. 이를 쿼리 파라미터라고 하는데 해당 요소들을 통해 요청 메시지에 데이터를 담을 수 있습니다. ..

    MVC 사용 전 서블릿

    서블릿 등장 HTTP를 공부하셨던 분이라면, 인터넷을 사용하기 위한 과정들을 간략하게나마 알고 계실 겁니다. 1. Connection을 생성하고, 소켓을 연결 2. HTTP 요청 메시지를 파싱하여 읽기. 3. 요청 메시지의 헤더 정보 파악 3-1. 메서드 파악(GET, POST, PUT, ...) 3-2. 인코딩 타입 (Content-Type) 3-3. 등등.. 4. 요청 메시지 바디 내용 파싱 5. 프로세스 실행 6. 로직 실행 7. DB 최신화 8. HTTP 응답 메시지 생성 9. 응답 메시지 전송 9-1. 소켓 종료, Connection 종료(응답 메시지 전송과 함께 FIN Flag 전송) 서블릿을 사용하기 전에는 이 과정을 모두 개발자가 구현해야 했습니다. 그런데 곰곰이 생각을 해 보면 내용이 계..

    컴포넌트 스캔, 의존관계 자동 주입

    설정 정보에 빈들을 등록하는 것이 한눈에 알아보기는 쉽지만 만약 이러한 빈이 수십수백 개가 되어버린다면 실수하기 쉽거나 감당하기가 어렵습니다. 그래서 스프링에서는 설정 정보가 따로 없어도 자동으로 스프링 빈을 등록해주는 컴포넌트 스캔이라는 기능을 제공합니다. (추가적으로 의존관계 역시 자동으로 주입해주는 @Autowired 기능도 있습니다.) 이번장에서는 컴포넌트 스캔과 의존관계 자동 주입에 대해 알아봅시다. @Component 사전준비 우선 컴포넌트 스캔을 사용하기 위해서 @ComponentSacn을 설정 정보에 붙여주어야 합니다. @Configuration @ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = C..

    IoC(2) - 빈(Bean)

    자바 빈 Spring IoC 컨테이너에서 생성된 객체를 의미합니다. Spring IoC 컨테이너는 하나 이상의 빈을 관리하며 이러한 빈은 컨테이너에 제공하는 구성 메타데이터를 참고해 생성한다고 했습니다. 컨테이너 자체 내에서 이러한 빈 정의는 BeanDefinition 객체처럼 표기되며, 이 객체는 다음과 같은 정보를 가집니다. Bean이 컨테이너에서 어떻게 동작해야 하는지를 나타내는 Bean 동작 설정 요소(범위, 수명 주기 콜백 등). 작업을 수행하는 데 필요한 다른 Bean에 대한 참조. (이를 협력자 또는 의존관계라고 합니다.) 새롭게 생성된 개체를 설정할 기타 설정 (예시: 연결 풀을 관리하는 Bean에서 사용할 연결 수 또는 풀 크기 제한.) 1. Bean의 이름 빈에는 일반적으로 하나의 식별..

    IoC(1) - IoC 개념 및 컨테이너

    서론 이번 포스트부터 Spring Framework에 필수적인 기술들을 다뤄볼 겁니다. Spring Framework에서 가장 핵심 기술을 꼽자면 당연히 IoC(Inversion of Control) 컨테이너입니다! 후에 AOP 기술과도 밀접하기 때문에 반드시 알아야 하는 기술입니다! Java의 가장 중요한 가치는 '객체지향 프로그래밍'입니다. JEB의 복잡성에 잃어버린 특성을 되찾아 내기 위한 프로젝트가 바로 Spring 프로젝트였죠. 그래서 Spring은 오브젝트에 가장 많은 관심을 두었습니다. 개발자들은 항상 오브젝트의 생성부터 시작해 관계를 맺고, 사용되며, 소멸되기까지의 과정인 생명주기에 포커스를 두어야 합니다! Spring은 항상 확장성 있는 설계를 기조로 두기 때문에 특정 모델을 강요하지 않..

    스프링의 등장

    스프링의 등장 옛날 옛적에 Java 엔터프라이즈 애플리케이션을 만들기 위해서 많은 노력을 기울였습니다. 특히 Java 진영에서는 EJB(Enterprise Java Beans)라는 컴포넌트 모델을 통해 이를 만들기 시작했죠. (EJB는 Java EE의 자바 API 중 하나입니다. 주로 비즈니스 로직을 제작하는데 중점을 둡니다.) 이를 통해 개발한 서버를 여러분이 잘 아는 WAS(Web Application Server)라고 하죠! EJB에서는 크게 세가지 역할을 가집니다. 세션 빈 (Session Bean) : DB 연동이 필요 없음 엔티티 빈 (Entity Bean) 데이터베이스의 데이터를 관리하는 객체 Insert(삽입), Update(수정), Delete(삭제), Select(조회) DB 관련 쿼리..

    06. 엔티티 매핑(2) - 기본 키 매핑

    기본 키 매핑은 중요한 요소들이 몇몇 있어 따로 챕터를 배정해봤습니다. 기본 키 매핑 '@Id'를 통해 매핑을 합니다. 직접 할당 VS 자동생성 DB는 무척이나 방대하기 때문에 기본 키를 직접 할당하기보다는 자동으로 할당하는 것을 선호합니다. 직접 할당 기본키 필드에 매핑을 의미하는 '@Id'만을 입력하고 데이터 생성 시 기본키를 직접 입력하면 됩니다. @Id private Long id; 자동생성 기본키 필드에 '@GeneratedValue'를 입력하고, 속성 값에 따라 전략이 달라집니다. // Case 1 @Id @GeneratedValue(starategy = GenerationType.AUTO) private Long id; // Case 2 @Id @GeneratedValue(starategy ..