[JSP, Servlet] 첫 JSP파일, Servlet 파일 만들기
JSP
JSP는 Java Server Page이다.
쉽게 이해하자면, HTML을 기본 토대로 하되 Java의 코드도 HTML 안에서 돌아갈 수 있도록 만든 페이지라고 생각하면 된다.
덕분에 정적페이지가 아닌 동적페이지 (html 페이지 내의 컨텐츠가 유저/환경/시간에 따라 변하는 페이지)를 처리할 수 있고 HTML 안에 삽입 된 Java코드이다보니 전체 소스코드를 보면 마치 html안에 불청객이 들어와 있는 모습 같다.
Servlet
1) 기본
Servlet은 Java Code(클래스)이고 HttpServlet 클래스를 상속받는다.
Eclipse에서 Servlet 파일을 생성하면 자동으로 클래스가 생성되고 해당 클래스 내에서 doGet, doPost 메소드를 오버라이드 하도록 되어 있다.
각각의 메소드들은 request, response를 파라미터로 받는다.
이는 클라이언트의 요청을 request라는 객체로 만들어서 수신하고
반대로 응답을 줄 때의 내용을 response라는 객체로 만들어서 발신하기 위함이다.
따라서 response를 줄 때는 웹브라우저가 해석할 수 있는 데이터 타입으로 데이터를 전송해주어야 하고 이는 setContentType("text/html") 을 통해 내가 지금 전달하는 객체의 타입이 text/html이라는 것을 알려줄 수 있다.
response객체의 getWriter 메소드를 사용할 수 있다. 본 메소드를 실행하면 PrintWriter라는 데이터 타입의 객체를 생성하게 되는데 이는 html을 향하는 output stream이라고 보면 된다.
response.getWriter();를 통해 outputstream이 생성되었다면 response.getWriter().println("텍스트")를 통해 웹브라우저에게 텍스트를 송출할 수 있다.
2) 라이프 사이클
다른 언어와 Servlet의 차이점이 있다면, Java의 Servlet객체는 처음에 필요할 때 생성되고 그 이후엔 파괴되지 않는다는 것이다. 서버재가동이나 Servlet코드를 수정하지 않는 한 메모리에 계속 상주해있으며 요청이 들어올 때마다 쓰레드를 생성하고 요청을 처리한다.
다른 언어와 달리 객체의 생성/파괴를 반복하지 않고 객체를 재활용하기 때문에 속도면에서 우위를 점한다.
Servlet의 라이프싸이클 주기는 'Servlet이 최초 실행되는 때 ~ 서버가 종료되거나 Servlet이 수정되는 때까지' 이다. (기본적으로 그냥 계속 살아있다고 보면 될 것 같다.)
그리고 Servlet이 실행, 종료되기 전에 선처리 후처리를 할 수 있다.
@PostConstruct , @PreDestroy annotation을 import하고 Servlet 내에서 Override하면 각각 init이 되기 전, destroy가 되기 전에 지정한 작업을 수행한다.
JSP는 Java Server Page이다.
쉽게 이해하자면, HTML을 기본 토대로 하되 Java의 코드도 HTML 안에서 돌아갈 수 있도록 만든 페이지라고 생각하면 된다.
덕분에 정적페이지가 아닌 동적페이지 (html 페이지 내의 컨텐츠가 유저/환경/시간에 따라 변하는 페이지)를 처리할 수 있고 HTML 안에 삽입 된 Java코드이다보니 전체 소스코드를 보면 마치 html안에 불청객이 들어와 있는 모습 같다.
Servlet
1) 기본
Servlet은 Java Code(클래스)이고 HttpServlet 클래스를 상속받는다.
Eclipse에서 Servlet 파일을 생성하면 자동으로 클래스가 생성되고 해당 클래스 내에서 doGet, doPost 메소드를 오버라이드 하도록 되어 있다.
각각의 메소드들은 request, response를 파라미터로 받는다.
이는 클라이언트의 요청을 request라는 객체로 만들어서 수신하고
반대로 응답을 줄 때의 내용을 response라는 객체로 만들어서 발신하기 위함이다.
따라서 response를 줄 때는 웹브라우저가 해석할 수 있는 데이터 타입으로 데이터를 전송해주어야 하고 이는 setContentType("text/html") 을 통해 내가 지금 전달하는 객체의 타입이 text/html이라는 것을 알려줄 수 있다.
response객체의 getWriter 메소드를 사용할 수 있다. 본 메소드를 실행하면 PrintWriter라는 데이터 타입의 객체를 생성하게 되는데 이는 html을 향하는 output stream이라고 보면 된다.
response.getWriter();를 통해 outputstream이 생성되었다면 response.getWriter().println("텍스트")를 통해 웹브라우저에게 텍스트를 송출할 수 있다.
2) 라이프 사이클
다른 언어와 Servlet의 차이점이 있다면, Java의 Servlet객체는 처음에 필요할 때 생성되고 그 이후엔 파괴되지 않는다는 것이다. 서버재가동이나 Servlet코드를 수정하지 않는 한 메모리에 계속 상주해있으며 요청이 들어올 때마다 쓰레드를 생성하고 요청을 처리한다.
다른 언어와 달리 객체의 생성/파괴를 반복하지 않고 객체를 재활용하기 때문에 속도면에서 우위를 점한다.
Servlet의 라이프싸이클 주기는 'Servlet이 최초 실행되는 때 ~ 서버가 종료되거나 Servlet이 수정되는 때까지' 이다. (기본적으로 그냥 계속 살아있다고 보면 될 것 같다.)
그리고 Servlet이 실행, 종료되기 전에 선처리 후처리를 할 수 있다.
@PostConstruct , @PreDestroy annotation을 import하고 Servlet 내에서 Override하면 각각 init이 되기 전, destroy가 되기 전에 지정한 작업을 수행한다.
댓글
댓글 쓰기