스프링 MVC의 구조 이해(1) - DispatcherServlet, 핸들러 매핑과 핸들러 어댑터, 뷰 리졸버
·
Back-End/Spring MVC
현재까지 만든 프레임워크와 스프링 MVC의 비교 직접 만든 프레임워크 스프링 MVC 비교 FrontController → DispatcherServlet handlerMappingMap → HandlerMapping MyHandlerAdapter → HandlerAdapter ModelView → ModelAndView viewResolver → ViewResolver MyView → View DispatcherServlet의 구조 DispatcherServlet도 HttpServlet을 상속받아서 사용하는 서블릿 DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet 스프링부트는 DispatcherServlet을 서블릿으로 자동 등록하..
자바 백엔드 웹 기술의 진화과정(3) - 웹 프론트 컨트롤러 v4, v5
·
Back-End/Spring MVC
자바 백엔드 웹 기술의 진화과정(3) - 웹 프론트 컨트롤러 v4, v5 프론트 컨트롤러 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 요청에 맞는 컨트롤러를 찾아서 호출 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 단계적으로 도입 v1 : 프론트 컨트롤러 패턴의 도입 v2 : view render를 처리해주는 ****MyView 도입 v3 : 서블릿 종속성 제거 및 뷰의 물리경로를 가지는 뷰 리졸버의 사용 v4 : v3코드에서 컨트롤러가 직접 뷰의 논리 이름을 반환하도록 변경 v5 : 어댑터(Adapter) 패턴의 도입 → 다양한 종류의 컨트롤러 처리 V4 - 컨트롤러의 ViewName반환 기존 V3구조에서 Controller가 ModelView객체가 아닌 ..
자바 백엔드 웹 기술의 진화과정(2) - 웹 프론트 컨트롤러 v1, v2, v3
·
Back-End/Spring MVC
자바 백엔드 웹 기술의 진화과정(2) - 웹 프론트 컨트롤러 v1, v2, v3 서블릿 → JSP → MVC패턴 → 프론트 컨트롤러 패턴 → 스프링MVC 프론트 컨트롤러 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 요청에 맞는 컨트롤러를 찾아서 호출 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 단계적으로 도입 v1 : 프론트 컨트롤러 패턴의 도입 v2 : view render를 처리해주는 MyView 도입 v3 : 서블릿 종속성 제거 및 뷰의 물리경로를 가지는 뷰 리졸버의 사용 v4 : v3코드에서 컨트롤러가 직접 뷰의 논리 이름을 반환 v5 : 어댑터(Adapter) 패턴의 도입 → 다양한 종류의 컨트롤러 처리 FrontController는 스프링 웹 MV..
[JSP] 쿠키
·
Front-End/JSP
쿠키 쿠키 : 사용자의 HDD에 접근해서 가져오는 데이터 쿠키는 오로지 String형만 저장이 가능 session은 웹 브라우저 닫기 전 까지 유효하다 cookie는 사용자의 hdd에 저장한다. 쿠키 생성하기 쿠키 객체는 key값(String)과 value값(String)을 생성자로 가진다. 쿠키의 정보는 response객체의 addCookie 메서드를 이용해서 추가한다. 쿠키 정보 요청 getName메서드와 getValue 메서드를 이용해서 쿠키의 정보를 요청 할 수 있다. 쿠기 값 읽어오기 request객체의 getCookies() 메서드를 이용해서 쿠키의 값을 읽어 올 수 있다. //cookie로 저장될때 암호화 하기때문에 utf-8로 디코딩 해줘야 한글처리가 가능함.
자바 백엔드 웹 기술의 진화과정(1), 서블릿, jsp, MVC 패턴
·
Back-End/Spring MVC
Java 백엔드 웹 기술의 발전과정에 따라서 순차적으로 적용시켜 볼 예정 서블릿 → JSP → MVC패턴 → 프론트 컨트롤러 패턴 → 스프링MVC 서블릿 방식 회원 등록 폼 @WebServlet(name= "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response)..
서블릿의 사용, HttpServletRequest, HttpServletResponse
·
Back-End/Spring MVC
서블릿 사용 & 등록 서블릿 사용 @ServletComponentScan : Springboot환경에서 서블릿을 등록할수 있도록 지원하는 어노테이션 @ServletComponentScan //서블릿을 사용하겠다는 선언 @SpringBootApplication public class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); } } 서블릿 등록 과정 @WebServlet : 서블릿의 이름과 연결 url을 지정시켜주는 어노테이션 HttpServlet 클래스 상속 protected 접근 지정자인 service() 메서드를 Override → 서블..
Jackson 라이브러리 - ObjectMapper, Object를 json으로 파싱하기
·
Back-End/Spring
Object Mapper란? JSON 형태의 Data를 Java객체로 역직렬화(Deserialize) 시켜 주거나, 반대로 Java객체를 JSON으로 직렬화(Serialize)할때 이용하는 Jackson 라이브러리의 클래스 직렬화(Serialize) : Object → String(json) 역직렬화(Deserialize) : String(json) → Object ObjectMapper는 생성비용이 비싸서 bean/static으로 처리하는 것이 좋다. 스프링 부트의 경우에는 기본적으로 Jackson라이브러리가 존재한다. Jackson 라이브러리 프로젝트에 추가하기 Maven인 경우 → pom.xml 의 태그에 추가 com.fasterxml.jackson.core jackson-databind 2.12...
[Spring MVC] - 웹 애플리케이션의 이해(HTTP, WAS, Servlet, 멀티 쓰레드, CSR, SSR)
·
Back-End/Spring MVC
HTTP HTML 문서와 같은 리소스들을 가져올 수 있게 해주는 응용 계층 프로토콜 JSON, XML(API), 이미지, 음성, 영상 파일 등 거의 모든 형태의 데이터 전송 가능 서버같에 데이터를 주고 받을 떄도 HTTP를 사용 웹 서버 및 웹 애플리케이션 서버(WAS) 웹 서버 HTTP기반으로 동작 정적 리소스 제공, 기타 부가 기능 정적 HTML, CSS, JS, 이미지, 영상 등 EX) NGINX, APACHE 웹 애플리케이션 서버(WAS) HTTP기반으로 동작 웹 서버 기능 포함 + (정적 리소스 제공) 프로그램 코드를 실행해서 애플리케이션 로직 수행 → 동적인 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC EX) 톰캣, Jetty, Undertow 등 웹서버와 웹 애플리케..
빈 스코프(Bean Scope)와 프로토타입 스코프(Prototype Scope), 싱글톤에서의 프로토타입 스코프의 처리
·
Back-End/Spring
1. 빈 스코프(Scope)란? → 빈이 존재할 수 있는 범위 스프링이 지원하는 스코프 싱글톤(Singleton) : 기본 스코프, 스프링 컨테이너 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입(Prototype) : 스프링 컨테이너가 빈의 생성과 의존관계 주입 까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 웹 관련 스코프 : request, session, application 2. 프로토 타입 스코프 항상 새로운 인스턴스를 생성해서 반환 빈을 생성, 의존관계 주입, 초기화 까지만 처리 → @PreDestory 같은 종료 메서드가 호출되지 않는다. public class PrototypeTest { @Test void prototypeBeanFind() { Annotatio..
[Spring] 빈 생명주기 콜백
·
Back-End/Spring
빈 생명주기 콜백 💡 애플리케이션 시작 시, 필요한 연결을 미리 해두는 작업이 필요하다. 애플리케이션 종료 시, 객체의 초기화 및 종료작업이 필요하다. 콜백의 종류에는 2가지가 있다. 1. 초기화 콜백 빈(Bean)의 생성과 의존관계 주입이 완료되고 완료 되었다고 호출 되는 작업 초기화 작업은 반드시 빈 생성 및 의존 관계 주입이 모두 완료된 후에 시작 되어야 한다. → 의존 관계 주입이 된 빈들을 미리 세팅 해야 하기 때문! 개발자가 이 시점을 알기 위해 필요한 것이 초기화 콜백 메서드 이다. 2. 소멸 콜백 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하기 위한 과정 개발자가 이 시점을 알기 위해 필요한 것이 종료 콜백 메서드 💡 객체의 생성과 초기화를 분리해야 하는 이유? 객체를 생성하..