MVC 패턴 - 개요 각자 자기가 맡은 일만 하자! 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게되고 결과적으로 유지보수하기 어려워진다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야한다. 즉, 하나의 파일 안에 비즈니스 로직 코드와 UI를 담당하는 코드가 함께 있다는 것이다. HTML 코드 하나 수정하는데 수백줄의 비즈니스 로직 코드가 함께 있는 것은 매우 비효율적이고, 이와 반대의 경우에도 정말 비효율적이다. 이를 현실에서 비유해보면 경찰서에서 소방업무까지 담당하고 있다면..? 생각만 해도 혼란스럽다 JSP같은 뷰 템플릿은 화면을 렌더링 하..
What is Servlet and JSP ? 스프링 MVC패턴을 공부하기 위해서 서블릿과 JSP의 이해는 필수적이다. 스프링이 탄생한 배경의 이유 중 하나로 서블릿과 JSP가 관련되어있다. HTTP 통신 기반의 클래스를 살펴보면 어노테이션 기반으로든, 파라미터로든 서블릿 클래스가 활용된다는 것을 알 수 잇다. 서블릿은 클래스 내부에 직접 HTML 코드를 작성하여 요청에 대한 응답한다. HTML을 코딩하기 너무 어렵고 불편해서 HTML 내부에 Java코드를 삽입하는 형식이 JSP이다. 다시 말해 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술이다. 서블릿을 이용하게 되면 웹프로그래밍을 할 수 있지만 자바에 대한 지식이 필요하며 화면 인터페이스 구현에 너무 많은 코드를 필요로 하는 등 비효율적..
웹을 개발하는 개발자에게 유저 인증은 기본적이면서도 중요한 절차이다. 회원가입, 로그인, 로그아웃 등 유저를 기반으로 한 기능을 구현하는 단계에서 유저 인증에 관하여 궁금한 점이 생길 것이다. (아마도...?) 최근 여러 블로그들을 살펴보면 Rest Framework 라이브러리의 JWT를 이용해 쉽게 JWT 인증을 구현하는 것을 볼 수 있다. JWT를 사용하고 있지만 어떻게 토큰이 만들어지고, 왜 JWT가 유용한지 정리해보자한다. https://www.qu3vipon.com/django-jwt 위 블로그 내용을 참고한 내용을 바탕으로 정리하였습니다. Session based authentication WT를 알아보기 전 먼저 session based authentication에 대해 알아야한다. JWT를..
클라이언트와 서버간의 통신에서 HTTP 통신을 사용할 때 request, response를 사용한다. HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법은 3가지가 있다. 1. GET - 쿼리 파라미터 2. POST - HTML FORM 3. HTTP API message Body GET - 쿼리 파라미터 먼저 GET 쿼리 파라미터를 이용한 방식부터 알아보자. "/url?username=kim&age=20" 처럼 메시지 바디 없이 URL의 쿼리 파라미터에 데이터를 포함해서 전달한다. 검색, 필터, 페이징등에서 많이 사용하는 방식이다. 쿼리 파라미터는 ?를 시작으로 보낼 수 있고 추가 파라미터는 &로 구분하면 된다. 자바코드를 이용해 쿼리 파라미터를 조회하는 과정을 살펴보면 Strin..
https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 문제 설명 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. (), [], {} 는 모두 올바른 괄호 문자열입니다. 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다. 대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열..
https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제 설명 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[..
의존관계를 주입하는 방법은 크게 4가지가 있다. 1. 생성자 주입(Constructor) 2. 수정자 주입(Setter) 3. 필드 주입 4. 일반 메서드 주입 생성자 주입 생성자 주입은 말 그대로 생성자를 통해서 의존관계를 주입 받는 방법이다. 생성자 호출시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용한다. 앞에서 설명했던 OrderServiceImpl 클래스를 보면, 클래스 내부 멤버 변수들이 private final로 선언된 것을 볼 수 있다. final로 선언된 멤버 변수들은 반드시 생성자 주입을 통해 생성자 호출시점에 딱 1번 호출되어야 한다. final로 선언된 변수는 값을 절대로 변경할 수 없기 때문에 최초에 생성되는 시점에 정의한다. 생성자가 1개 존재하는 경우에는 ..
지금까지 스프링 빈 설정을 하는 과정을 살펴보면 AppConfig 클래스에 @Configuration 어노테이션을 설정한 후 @Bean을 통해서 직접 등록할 스프링 빈을 설정했다. 앞서 보인 예제는 몇 개 되지 않아 일일이 입력하였지만, 빈 객체가 많아지는 경우 일일이 선언해주기 어렵다(귀찮다) 또 실수로 빈 설정을 누락하는 경우 스프링 컨테이너에 빈 객체가 등록되지 않을 수도 있다. 그러므로 스프링은 설정 정보 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔(@Component Scan)을 제공한다. 또한 의존관계를 자동으로 주입하는 @Autowired라는 기능도 제공한다 @ComponentScan, @Autowired 사용하기 우선 컴포넌트 스캔을 사용하려면 @ComponentScan을 설정 정보에..
이전 Serializer 포스팅에서 Serializer를 만들 때 필드를 각각 설정했었다. models.py 에서 정의한 모델의 attibute를 다시 반복해서 설정해주는 느낌이 들어서 불편한 점이 있었다. BaseSerializer를 쓴다고 해서 문제가 되지는 않지만 우리는 편리함을 추구하는 개발자이기 때문에! ModelSerializer를 알아보자. joeylee.log님의 게시글을 참고하였습니다. ModelSerializer는 크게 3가지의 기능을 제공한다. 1. 의존하고 있는 모델에 기반해서 Serializer 필드를 자동으로 생성 2. Serializer를 위한 validator 제공 3. Create, Update 함수를 기본으로 제공 아래 코드는 ModelSerializer 클래스에서 제공하..
싱글톤 패턴 개념에 들어가기 전, 한 웹사이트에 동시에 50000명의 고객이 접속한다고 하자. 앞서 빈 객체에 관해 공부를 했다. 동시에 5만명의 고객이 접속한다고 하면 50000만개의 객체를 동시에 생성해야될까? Configuration 1개가 1개 이상의 객체를 생성할 가능성이 높은데 객체가 최소한 1개씩만 있다고 하더라도 50000개의 객체를 동시에 만들어야 한다. 이것이 가능할까? 스프링이 없는 순수 자바코드를 이용해 빈 설정 정보를 확인하는 테스트 코드를 작성하였다 package hello.core_review.singleton; import hello.core_review.AppConfig; import hello.core_review.member.MemberService; import org..
- Total
- Today
- Yesterday
- jpa
- 파이썬
- java
- 3차 데모데이
- CI/CD
- 환경 별 로깅 전략 분리
- 8주차 회고
- 팀프로젝트
- 5주차 회고
- 피움
- ZNS SSD
- 우테코
- 스프링 부트
- ZNS
- 우테코 회고
- 프로젝트
- 회고
- 스프링 프레임워크
- 알림기능개선기
- dm-zoned
- dm-zoned 코드분석
- 런칭 페스티벌
- 2차 데모데이
- 스프링 Logback
- Spring
- 피움 6주차 회고
- 알림개선기
- 스프링MVC
- 백준
- 네트워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |