전체 글

· Spring
이 글은 김영한님의 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 강의중 검증편을 블로그장 입맛대로 요약한 것이며 강의 자료 및 출처는 가장 아래에서 확인할 수 있습니다. 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 먼저, 아이템을 등록하는 간단한 컨트롤러의 예시를 보자. 1. Map으로 검증 오류 결과 보관 @PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과를 보관 Map errors = new HashMap(); //검증 로직 if(!StringUtils.hasText(item.g..
· Spring
이 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의를 요약한 것이며 강의 자료 및 출처는 가장 아래에서 확인할 수 있습니다. 1단계. Servlet을 사용한 간단한 HTML 리턴 /** * 단순하게 회원 정보를 입력할 수 있는 HTML Form을 만들어 응답 */ @WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws Ser..
· Spring
이 글은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의를 요약한 것이며 강의 자료 및 출처는 가장 아래에서 확인할 수 있습니다. 웹 서버(Web Server),웹 애플리케이션(WAS - Web Application Server) 웹 서버와 웹 애플리케이션 서버는 모두 HTTP 기반으로 동작한다. 웹 서버는 정적 리소스(HTML, CSS, JS, image ...)만 제공하는 반면 웹 애플리케이션 서버는 애플리케이션 로직이 들어간다. (사실 둘의 용어와 경계가 모호하다고 하다.) 보통 자바는 서블릿 컨테이너 기능을 제공하면 WAS라고 부른다. (서블릿 컨테이너는 아래에서 설명한다.) 웹 서버는 NGINX,APACHE등이 있고, 웹 애플리케이션 서버는 Tomcat,Undertow등이 있다..
· HTTP
이 글은 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 요약한 것이며 강의 자료 및 출처는 가장 아래에서 확인할 수 있습니다. 쿠키와 캐시의 공통점은 클라이언트에서 관리하는 데이터이며 정보를 저장하는 목적을 가진다. 💡 쿠키와 캐시의 차이점 * 쿠키 웹 서버에서 PC로 보내는 작은 파일들을 저장하며 누군가 특정 웹 사이트를 접속할 때 발생한다. 정보를 저장하기 위해 사용하며 최종적인 목적은 사용자의 인증을 도와준다. 만료기간이 있어서 시간이 지나면 자동삭제 된다. * 캐시 웹 페이지 요소를 저장하기 위한 임시 저장소이며 그림 파일 또는 문서 파일등이 있다. 최종적인 목적은 웹 페이지가 빠르게 렌더링 할 수 있도록 도와주는 것이다. 사용자가 직접 수동으로 삭제해야 한다. 1. 쿠키 기본적으로..
· HTTP
이 글은 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 요약한 것이며 강의 자료 및 출처는 가장 아래에서 확인할 수 있습니다. *HTTP(HyperText Transfer Protocol) HTTP는 문서 간의 링크를 통해서 연결할 수 있는(=hypertext 문서를 통해서 연결할 수 있는) html을 전송하는 프로토콜로 시작되었으며, 지금은 HTML 텍스트 뿐만아니라 이미지,음성,영상,파일,JSON,XML 등등 거의 모든 데이터에 HTTP를 사용한다. 실무에서 일을 하면 TCP만 직접 이용하여 연결하는 경우는 거의 없으며 거의 모든 경우에 HTTP를 사용한다. 거의 모든 기능이 HTTP/1.1에 포함 되어있어 가장 많이 사용되며, 2와 3은 성능 개선에 초점이 맞춰져 있다. HTTP/1...
· HTTP
이 글은 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 요약한 것이며 강의 자료 및 출처는 가장 아래에서 확인할 수 있습니다. * 기본적인 인터넷 통신 기본적으로 클라이언트에서 서버로 통신하려면 중간에 인터넷을 거쳐야하며 인터넷은 수많은 노드서버로 구성되어 있다. 그런데 클라이언트까지 어떻게 위치를 알고 통신할까? 그것은 IP (인터넷 프로토콜) 주소를 부여하기 때문에 가능하다. IP는 패킷이라는 통신 단위로 데이터를 전달하는데 여기서 패킷이 뭔지 궁금할 것이다. 패킷은 간단하게 표현하면 박스안에 어떤내용물을 보낸다는 의미이다. 위와같은 모습을 하고있는데 내부 정보를 통해 데이터를 주고 받는다. 출발IP와 목적IP를 이용하여 클라이언트에서 서버까지 패킷을 전달하는 것을 알수있다. * IP ..
· Spring
이글은 김영한님의 강의 스프링 핵심 원리 - 기본편에서 나온 빈의 생명주기와 스코프에 관한 내용을 정리한 글이며 강의 자료 및 링크는 가장 아래에서 확인할 수 있다. 빈의 생명주기 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음 데이터를 사용할 수 있는 상태가 된다. 그런데 개발자가 의존관계 주입이 모두 완료된 시점을 어떻게 알 수 있을까? 크게 3가지 방법이 있는데 여기선 그중 가장 최근에 많이 사용하는 방법인 @PostConstruct,@PreDestroy를 사용하여 살펴보도록 하자. 선수지식으로 스프링 빈의 이벤트 라이프사이클은 아래와 같다. * 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸전 콜백 → 스프링..
· Spring
저번 편에선 의존성 주입을 AppConfig와 같이 설정 클래스를 두고 관리하는 이유와 스프링 컨테이너에 넣어서 관리하는 이유 및 장점까지 살펴보았다. 그렇다면 마지막 코멘트에 있던 @Bean과 @Configuration을 반복적으로 넣어줘야 한다면 불편하지 않을까? @Configuration public class AppConfig { @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService(){ return new OrderServiceImpl( memberRepository(), discountPolicy()); } ..
HDev
기억이 아닌 기록과 반복