Servlet
Server와 Applet의 합성어로 Server상에서 작동하는 Java 기반의 웹 어플리케이션 프로그래밍 기술이다.
Servlet은 httpServlet을 상속받으며 java언어를 기반으로 만들어지며, 웹 어플리케이션 서버위에서 컴파일 되고 동작한다.
웹을 만들때는 다양한 요청(Request)과 응답(Response)이 있기 마련이고, 이 요청과 응답에는 규칙이 존재한다. 이러한 요청과 응답을 일일이 처리하려면 굉장히 힘들것이기 때문에 Servlet은 이러한 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다.
Servlet 특징
- 클라이언트의 Request에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트
- HTML을 사용하여 Response 한다.
- JAVA의 스레드를 이용하여 동작한다.
- MVC 패턴에서의 컨트롤러로 이용된다.
- HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.
- UDP보다 속도가 느리다.
- HTML 변경 시 Servlet을 재 컴파일해야 하는 단점이 있다.
Servlet 동작과정
1. Servlet Request, Servlet Response 객체를 생성한다.
-
설정 파일을 참고하여 매핑할 Servlet을 확인한다.
-
해당 서블릿 인스턴스 존재의 유무를 확인하여 없으면 init() 메소드를 호출하여 생성한다.
-
Servlet Container에 스레드를 생성하고 service를 실행한다.
-
응답을 처리하였으면 distory() 메소드를 실행하여 Servlet Request, Servlet Response 객체를 소멸한다.
JSP
앞서 설명한 Servlet 과 짝꿍인 녀석이 있다.
바로, JSP 라는 녀석인데, Servlet 과 다르게 html 파일을 중심으로 해서 돌아간다.
JSP 는 자바를 웹서버에서 쉽게 쓰기 위한 기술이며 언어가 아니고, JAVA의 점유율을 대폭적으로 상승시킨 1등공신이다.
일반적인 html 파일형식에 <% %>, <%= %> 등 태그 내부에서 java언어를 사용하여 웹페이지를 다룬다.
기본문법
1. 스크립트릿
<% %>
- JSP 내부에서 java 코드를 작성할 때 사용한다.
- 표현식
<%= %>
- 동적인 데이터를 Web에 출력할 때 사용한다.
- 선언문
<%! %>
- 지시자
<%@ %>
JSP 내장객체
- request : doGet, doPost 메서드의 첫 번째 파라미터와 동일한 역할
- response : doGet, doPost 메서드의 두 번째 파라미터와 동일한 역할
- out : 웹 브라우저로 html 코드를 출력하는 기능
- application : jsp 페이지가 속하는 웹 애플리케이션 관련된 기능
- config : jsp 페이지의 구성 정보를 가져오는 기능
- pageContext : jsp 페이지 범위 내에서 사용할 수 있는 데이터 저장 기능
- Session : 세션에 관련된 기능
- Page : jsp 페이지로부터 생성된 서블릿
- Exception : 익셉션 객체
jsp 페이지 안에서 내장 객체를 사용할 수 있는 이유 : web Container가 jsp page를 servlet class로 변환 시키면서 자동으로 내장 객체를 선언하기 때문이다.
JSP VS Servlet
![](https://velog.velcdn.com/images/jang_tissue/post/6ea24e9a-fc8c-444c-b604-e50f82856040/image.png)