Java/Spring

    Spring Error

    org.apache.tomcat.util.modeler.BaseModelMBean.invoke Error 발생시 web.xml에 오타가 없는지 확인. org.apache.catalina.core.ContainerBase.addChildInternal Error 발생시 web.xml의 url-parttern 또는 servlet의 urlPatterns에 '/'가 빠졌는지 확인 java package org.junit does not exist Error 발생시 pom.xml의 junit dependency에서 scope 엘리먼트를 지우거나 버전을 올려서 해결해준다. https://stackoverflow.com/questions/5845990/maven-3-and-junit-4-compilation-prob..

    레이어드 아키텍처(Layerd architecture)란?

    레이어드 아키텍처(Layerd architecture)란?

    레이어드 아키텍처가 사용되는 이유 웹 페이지는 중복 개발되는 요소가 존재한다. Controller에서 중복되는 부분을 처리하려면? 별도의 객체로 분리한다. 중복된 부분을 별도의 메서드로 분리한다. 예를 들어 쇼핑몰에서 게시판에서도 회원정보를 보여주고, 상품 목록 보기에서도 회원 정보를 보여줘야한다면 회원 정보를 읽어오는 코드는 어떻게 해야할까? 회원 정보를 읽어들이는 것만 별도의 객체로 만들고 게시판과 회원 정보 Controller가 이 객체를 이용. Controller들이 중복적으로 호출하는 부분들은 별도의 객체인 Service로 구현하며, Service객체는 비즈니스 메서드를 갖는다. (업무와 관련된 메서드를 비즈니스 메서드라고 한다.) 서비스 객체란? 비즈니스 로직(Business logic)을 수..

    Spring MVC가 지원하는 메소드 리턴 값

    org.springframework.web.servlet.ModelAndView org.springframework.ui.Model java.util.Map org.springframework.ui.ModelMap org.springframework.web.servlet.View java.lang.String java.lang.Void org.springframework.http.HttpEntity org.springframework.http.ResponseEntity 기타 리턴 타입 참조 URL https://www.edwith.org/boostcourse-web/lecture/16764/

    Spring MVC가 지원하는 메서드 Annotation

    @RequestParam Mapping된 메소드의 Argument에 붙일 수 있는 Annotation. @RequestParam의 name에는 http parameter의 name과 매핑. @RequestParam의 required는 필수인지 아닌지 판단. @RequestHeader 요청 정보의 헤더 정보를 읽어들일 때 사용 @RequestHeader(name="헤더명") String 변수명 @PathVariable @RequestMapping의 path에 변수명을 입력받기 위한 place holder가 필요함 place holder의 이름과 PathVariable의 name값과 같으면 mapping됨. required 속성은 default true임. @RequestBody @RequestPart @M..

    Spring MVC가 지원하는 Controller 인수 타입

    javax.servlet.ServletRequest javax.servlet.http.HttpServletRequest org.sringframework.web.multipart.MultipartRequest org.springframework.web.multipart.MultipartHttpServletRequest javax.servlet.ServletResponse javax.seclet.http.HttpServletResponse javax.servlet.http.HttpSession org.springframework.web.context.request.WebRequest org.springframework.web.multipart.MultipartFile org.stpringframework...

    DispatcherServlet

    DispatcherServlet

    Spring MVC를 이해하는 것은 Dispatcher Servlet이 어떻게 동작하는지를 이해하는 것이다. Dispatcher Servlet이 요청을 받아서 결과를 출력하기까지 여러가지 Component들을 사용한다. Handler Mapping Handler Adapter MultipartResolver LocaleResolver ThemeResolver HandlerExceptionResolver RequestToViewNameTranslator ViewResolver FlashMapManager DispatcherServlet 프론트 컨트롤러(Front Controller) 클라이언트의 모든 요청을 받을 후 이를 처리할 핸들러에게 넘기고 핸들러가 처리한 결과를 받아 사용자에게 응답 결과를 보여준다..

    Spring MVC 기본 동작 흐름

    Spring MVC 기본 동작 흐름

    Spring MVC는 MVC Model2의 발전된 형태로 구성되어 있다. 구성요소 이름 설명 DispatcherServlet 클라이언트의 요청을 받아 컨트롤러에게 전달, 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성하도록 한다. HandlerMapping 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정한다. HandlerAdapter DispatcherServlet의 처리 요청을 변환해서 컨트롤러에게 전달, 그 응답 결과를 DispatcherServlet이 요구하는 형식으로 변환한다. Controller 클라이언트의 요청을 처리한 뒤, 결과를 리턴한다. ModelAndView 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담는다. ViewResolver 컨트롤러의 ..

    Spring 싱글톤(Singleton) Scope

    싱글톤이란 메모리에 하나만 생성한다는 것이고, Spring은 빈을 생성할 때 기본적으로 싱글톤(Singleton) 객체로 생성한다. 메모리에 하나만 생성되었을 경우, 해당 객체를 동시에 이용한다면 어떤 문제가 발생하는가? 이런 문제를 해결하려면 어떻게 해야할까? 여러명이 싱글톤 객체를 동시에 사용하는 경우, 데이터가 원치 않은 방향으로 변조되어 본래의 의미를 잃어버리게 되어 문제가 발생한다. xml파일에 bean태그를 입력할 때, scope속성을 줄 수 있다. scope속성을 명시하지 않은 경우, singleton 타입으로 지정되며, scope속성을prototype으로 지정하면, getBean메소드를 통해, 해당 객체를 요청할 때마다 새로운 객체를 생성, 반환하게 된다. 따라서, 싱글톤 객체의 문제를 해..