웹 프로그래밍에 쓰이는 JSP와 서블릿이란 도대체 무엇일까?
천천히 개념을 알아가보자.
- JSP(JavaServer Pages): HTML내에 자바 코드를 삽입하여 웹서버에서 동적으로 웹페이지를 생성해 웹 브라우저에 돌려주는 서버 사이드 스크립트 언어이다. (HTML에서 코딩하기 어려운 문제를 보완)
- 자바 서블릿(Java Servlet): 자바 플랫폼에서 웹페이지를 동적으로 생성하는 서버측 프로그래밍 기술, 초기 웹 프로그래밍 기술인 CGI(공용 게이트웨이 인터페이스)를 대체하기 위해 개발되었다. (이후, 서블릿의 느린 처리속도와 많은 메모리 요구 등의 단점을 보완하고자 PHP, JSP, ASP 등의 서버 스크립트 언어가 등장하게 되었다.)
- 서블릿 컨테이너: 서블릿을 실행하고, JSP 코드를 Servlet 코드로 변환하는 역할. ex) Apache Tomcat
(JSP는 실행 시 자바 서블릿으로 변환 된 후 실행되기 때문에 서블릿과 유사하다. 하지만, JSP는 HTML 표준에 따라 작성되므로 웹 디자인하기에 더욱 편리하다.)
- JSP와 서블릿의 차이:
JSP (.jsp) | 서블릿 (.java) |
HTML 텍스트 파일 구조 | Java 클래스 파일 구조 |
HTML 문서 안에 Java 코드 | Java 코드 안에 HTML 포함 |
Java 코드를 스크립트릿 (<% %>) 안에 처리 | HTML 태그를 문자열 스트림("")으로 처리 |
서블릿에 비해 배우기 쉽다 | 자바에 대한 깊은 이해를 필요로 한다 |
(현재는 서블릿과 JSP를 혼합해서 사용하는 형태로 개발되고있다.)
- 서블릿 구현 예시:
public class HelloWorldServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=EUC_KR");
PrintWrite out = response.getWriter();
out.println("<HTML><HEAD><TITLE>로그인</TITLE></HEAD>");
out.println("<BODY><H2>Hello World</H2>");
out.println("오늘 날짜와 시간 : " + new java.util.Date());
out.println("</BODY></HTML>");
}
}
- JSP 구현 예시:
<%@ page contentType="text/html;charset=utf-8" %>
<HTML>
<HEAD><TITLE>Hello World</TITLE></HEAD>
<BODY><H2>Hello World</H2>
현재 날짜와 시간 : <%= new java.util.Date() %>
</BODY>
</HTML>
- JSP 장점:
- 자바의 모든 기능을 사용할 수 있어 발전 가능성이 무한하다.
- 서블릿으로 컴파일 후 메모리에서 처리되기에 많은 사용자의 접속도 원활히 처리한다.
- 다른 서블릿 간 데이터를 쉽게 공유 할 수 있다.
- 자바 컴포넌트(빈즈)를 사용할 수 있다. (자바 빈즈는 JSP에서 비즈니스 로직을 따로 떼어 기술한 부분이다.)
- 커스텀 태그를 만들어 사용할 수 있으며, JSTL과 같은 태그 라이브러리를 이용할 수 있다.
- 스프링, 스트럿츠 등 다양한 프레임워크와 결합하여 개발 가능하다.
- JSP 특징:
- JSP는 일반 텍스트 파일로 되어있기 때문에 컴퓨터가 이해할 수 없어 바로 실행이 불가능하다.
- JSP는 HTML 코드, 특수 태그, Java 코드가 섞여있다.
- 사용자 요청 시 JSP는 서블릿 컨테이너에 의해 .java 소스로 변환되고 컴파일된다.
- 컴파일 된 .class는 컴퓨터에서 실행할 수 있는 상태가 되고, 소스 변경 전 까지 파일이 메모리에 상주하며 재컴파일 할 필요없이 서비스된다.
- JSP 동작과정
처음에 JSP를 들었을 때, JavaScript랑 비슷한건가? 라고 생각했지만,
JSP는 서버에서 실행된 결과를 사용자에게 보여주는 방식,
JavaScript는 클라이언트의 웹브라우저에 실행되는 방식으로 서로 전혀 다른 언어였다.
앞으로도 혼동되는 일 없이 개념을 확실히 잡고 공부를 해야할 필요를 느꼈다.
'Programming > JSP' 카테고리의 다른 글
[JSP] forward와 sendRedirect의 차이 (0) | 2020.12.31 |
---|