본문 바로가기

Programming/JSP3

컨테이너의 역할 컨테이너의 대표적인 예는 톰캣을 들 수가 있다. 사용자로부터 요청을 받으면 웹서버(아파치나 nginx와 같은)는 서블릿을 관리하고 있는 컨테이너에게 이 요청을 넘긴다. 요청을 받는 컨테이너는 HTTP Request와 HTTP Response 객체를 만들어, 이를 인자로 서블릿 doPost()나 doGet() 메소드 중 하나를 호출한다. 컨테이너가 주는 혜택 통신 지원 컨테이너는 서블릿과 웹 서버가 서로 통신할 수 있는 방법을 제공한다. 이는 개발자가 직접 ServerSocket을 만든다거나 특정 포트에 리스닝하고 연결 요청 처리를 하는 등의 복잡한 작업을 할 필요가 없다는 의미이다. 컨테이너는 이러한 기능들을 API로 제공하여 개발자가 서블릿 구현(비즈니스 로직)에만 전념할 수 있도록 도와준다. 라이프사.. 2016. 9. 26.
서블릿이란? 서블릿은 웹서버가 동적인 페이지를 제공할 수 있도록 도와주는 애플리케이션이다.웹서버에서는 정적인 페이지만을 제공한다. 그렇기 때문에 동적인 페이지를 제공하기 위해서 웹서버는 다른 무언가에게 도움을 요청하여 동적인 페이지를 작성해야한다. 동적인 페이지란 임의의 이미지를 골라 사용자에게 보여준다거나, 도서 목록이나 방문 로그 등 사용자가 요청한 시점에 페이지를 생성해서 전달해주는 것을 의미한다. 이렇게 웹서버를 도와서 동적인 페이지를 만들어주는 도우미 애플리케이션을 CGI 프로그램이라고 부른다. 대부분의 CGI 프로그램은 Perl 스크립트로 작성되는데, C, 파이썬, PHP 와 같은 언어로도 가능하다. 서블릿은 CGI 프로그램과 같은 도우미 애플리케이션인데, 자바로 구현되어있다.(그러므로 개발도 자바로 한다.. 2016. 9. 26.
JSP에서 세션(Session) 이란? 세션이 왜 필요한 것일까? HTTP 프로토콜은 stateless 연결이므로 웹 서버에서는 기본적으로 각 클라이언트를 위해 다음 요청까지 메모리에 데이터를 유지해주지 않는다. (request 인스턴스는 응답과 동시에 메모리에서 제거된다.) 그래서 다음 번에 다시 요청을 해도 요청한 클라이언트가 누구인지 인식하지 못한다. 하지만 쇼핑몰 사이트와 같은 것을 보면 한번 봤던 상품 리스트가 오른편에 출력되고, 새로고침을 하거나 브라우저를 종료했다가 다시 실행해도 리스트가 그대로 보여진다. 로그인을 하지 않아도 장바구니에 상품을 담으면 메모리를 사용하는 것 처럼 다시 확인 할 수가 있다. 이러한 동작은 어떻게 이루어지는 것일까? 데이터베이스 사용을 생각해보자. 상품을 요청하는 클라이언트의 고유 키를 생성하여 해당 .. 2016. 4. 3.