servlet 10

DispatcherServlet & ApplicationContext & 응답(Response)하는 방법

tistory 참고하면서 공부하자. FrontController 패턴 최초 앞단에서 request 요청을 받아서 필요한 클래스에 넘겨준다. 왜? web.xml에 다 정의하기가 힘들어서 이때 새로운 요청이 생기기 때문에 request와 response가 새롭게 new가 될 수 있다. 아래의 RequestDispatcher가 필요함. 기존의 있는 request와 response를 지우지 않고 그대로 들고와서 다시 요청을 하는 방법이 있다. => RequestDispatcher RequestDispatcher 필요한 클래스 요청이 도달했을 때 FrontController에 도착한 request와 response를 그대로 유지시켜준다. 결론적으로 RequestDispatcher을 이용해야 데이터를 들고 페이지..

Spring/SpringBoot 2022.05.06

서블릿 객체의 생명주기 & web.xml

서블릿 컨테이너(톰캣) 톰캣은 자바 코드를 통해 최초의 요청을 받을 때 스레드를 받는다. -> 서블릿 객체를 만든다.(필요한 데이터 가져옴) 스레드는 동시접근을 허용하게 해준다. 스프링은 클라이언트가 요청을 했을 때 서블릿 컨테이너가 동작을 무조건 한다. (URI 요청을 하기 때문에) 최초 요청이 오면 메모리 로딩을 해서 서블릿 객체를 하나 만들고 실행을 한다. 그리고 스레드가 20개이면 두번째 요청부터 스무번째 요청까지 쭉 요청이 되고 21번째 부터 no가 요청이 될 것이다. 그리고 마지막으로 최종적으로 만들어지는 것이 Request 객체와 Response 객체이다.(톰캣이 들고 있는 객체) web은 Request와 Response의 여행이다. Request와 Response가 종료가 되면 여행은 끝나..

Spring/SpringBoot 2022.05.06

MVC 패턴 - 개요 - error

너무 많은 역할을 담당하게 될 수 있다. 하나의 서블릿이나 JSP만으로 비즈니스 자체의 로직과 뷰의 렌더링까지 모두 처리하면 너무 많은 역할을 하게되어 유지보수가 어려워짐 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어 비즈니스 로직이 함께 있는 해당 파일을 수정해야 함 변경의 라이프 사이클 UI를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능성이 매우 높고 대부분 서로에게 영향을 주지 않는다. 라이프 사이클이 다른 부분을 코드로 관리하는 것은 유지보수하기 좋지 않다,(UI가 많이 변하면 함께 변경될 가능성이 있다.) 기능 특화 JSP 같은 뷰 템플릿은 화면을 렌더링 하는데 최적화 되어 있어서 여기 작업만 담당하는게 효율적..

Spring/SpringMVC 2022.04.23

HttpServletResponse - 기본 사용법

Cache-Control: no-cache, no-store, must-revalidate Connection: keep-alive Content-Length: 3 Content-Type: text/plain;charset=utf-8 Date: Thu, 21 Apr 2022 16:48:03 GMT Keep-Alive: timeout=60 my-header: hello Pragma: no-cache Set-Cookie: myCookie=good; Max-Age=600; Expires=Thu, 21-Apr-2022 16:58:03 GMT 응답 HttpServletResponse에 대해서 알아보자. HTTP 응답 메시지 생성 HTTP 응답코드 지정 200 400 500 401 403 등등 헤더 생성 바디 생성..

Spring/SpringMVC 2022.04.22

HTTP 요청 데이터 - GET 쿼리 파라미터

데이터를 클라이언트에서 서버로 전송해보자. 데이터가 있는데 username=hello age=20 메시지 바디 없이, URL의 "쿼리 파라미터"를 사용해서 데이터를 전달해보자. 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 쿼리파라미터는URL에다음과같이 ?를시작으로보낼수있다.추가파라미터는 &로구분하면된다. http://localhost:8080/request-param?username=hello&age=20 그렇게 하면 서버에서는 HttpServletRequest 가 제공하는 다음 메서드를 통해 쿼리 파라미터를 편리하게 조회할 수 있다. 코드를 한번 작성을 해보자. package hello.setvlet.basic.request; import javax.servlet.ServletException..

Spring/SpringMVC 2022.04.21

HTTP 요청 데이터 - 개요

HTTP 요청 메시지를 통해서 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자. 3가지 방법이 있다. GET - 쿼리 파라미터 / url*?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age = 20 예) 회원 가입, 상품 주문, HTML Form 사용 HTTP message body HTTP API(REST API)에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POS..

Spring/SpringMVC 2022.04.21

HttpServletRequest - 기본 사용법

HttpServletRequest를 사용하는 방법에 대해서 알아보자. 아래코드를 Extract Method로 해서 extracting을 해주고 package hello.setvlet.basic.request; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name = "requestHeaderServl..

Spring/SpringMVC 2022.04.21

Hello 서블릿

스프링 부트 환경에서 서블릿 등록하고 사용해보자. 서블릿은 톰캣 같은 웹 애플리케이션 서버를 직접 설치해서 서블릿 코드를 클래스 파일로 빌드해서 올리고 톰캣 서버를 실행하면되지만 매우 번거롭다. 스프링 부트는 톰캣 서버를 내장하고 있어서 톰캣 서버 설치 없이 편리하게 서블릿 코드를 실행 할 수 있다. 코드를 작성해보자. ServletApplication에서는 @ServletComponentScan // 서블릿 자동 등록 을 넣어주고 package hello.setvlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org..

Spring/SpringMVC 2022.04.21

서블릿 - 프로젝트 생성

서블릿 컨테이너 스프링MVC-웹애플리케이션이해 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리 서블릿 객체는 싱글톤으로 관리 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근 공유 변수 사용 주의 서블릿으로 변환 되어서 사용 JSP도 서블릿으로 변환 되어서 사용 동시 요청을 위한 멀티 쓰레드 처리 지원 서블릿은 스프링이 필요없다. 하지만 여기서는 스프링 부트를 이용해서 프로젝트를 생성해보자.(스프링 부트는 톰캣 서버(WAS 서버)를 내장하고 있어서 편리하게 이용을 할 수..

Spring/SpringMVC 2022.04.21

자바 백엔드 웹 기술 역사

서블릿 - 1997 HTML 생성이 어려움 JSP - 1999 HTML 생성은 편리하지만, 비즈니스 로직까지 너무 많은 역할 담당 서블릿, JSP 조합 MVC 패턴 사용 모델, 뷰 컨트롤러로 역할을 나누어 개발 MVC 프레임워크 춘추 전국 시대 - 2000년 초 ~ 2010년 초 MVC 패턴 자동화, 복잡한 웹 기술을 편리하게 사용할 수 있는 다양한 기능 지원 스트럿츠(앞단), 웹워크, 스프링(뒷단) MVC(과거 버전) 현재 사용 기술 애노테이션 기반의 스프링 MVC 등장 @Controller MVC 프레임워크의 춘추 전국 시대 마무리 스프링 부트의 등장 스프링 부트는 서버를 내장 과거에는 서버에 WAS를 직접 설치하고, 소스는 War 파일을 만들어서 설치한 WAS에 배포 스프링 부트는 빌드 결과(Jar..

Spring/SpringMVC 2022.04.21