Programming/JSP

[JSP] 자바서버 페이지(JSP)와 서블릿(Servlet)

망고밥 2020. 12. 30. 14:58

 

웹 프로그래밍에 쓰이는 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 장점:
  1. 자바의 모든 기능을 사용할 수 있어 발전 가능성이 무한하다.
  2. 서블릿으로 컴파일 후 메모리에서 처리되기에 많은 사용자의 접속도 원활히 처리한다.
  3. 다른 서블릿 간 데이터를 쉽게 공유 할 수 있다.
  4. 자바 컴포넌트(빈즈)를 사용할 수 있다. (자바 빈즈는 JSP에서 비즈니스 로직을 따로 떼어 기술한 부분이다.)
  5. 커스텀 태그를 만들어 사용할 수 있으며, JSTL과 같은 태그 라이브러리를 이용할 수 있다.
  6. 스프링, 스트럿츠 등 다양한 프레임워크와 결합하여 개발 가능하다.
  • JSP 특징:
  1. JSP는 일반 텍스트 파일로 되어있기 때문에 컴퓨터가 이해할 수 없어 바로 실행이 불가능하다.
  2. JSP는 HTML 코드, 특수 태그, Java 코드가 섞여있다.
  3. 사용자 요청 시 JSP는 서블릿 컨테이너에 의해 .java 소스로 변환되고 컴파일된다.
  4. 컴파일 된 .class는 컴퓨터에서 실행할 수 있는 상태가 되고, 소스 변경 전 까지 파일이 메모리에 상주하며 재컴파일 할 필요없이 서비스된다.
  • JSP 동작과정

정확한 표현인지는 모르겠으나, 이해를 위해 만들어본 자료입니다. 참고용으로만 봐주세요.

 


처음에 JSP를 들었을 때, JavaScript랑 비슷한건가? 라고 생각했지만, 

JSP는 서버에서 실행된 결과를 사용자에게 보여주는 방식,

JavaScript는 클라이언트의 웹브라우저에 실행되는 방식으로 서로 전혀 다른 언어였다.

앞으로도 혼동되는 일 없이 개념을 확실히 잡고 공부를 해야할 필요를 느꼈다.

'Programming > JSP' 카테고리의 다른 글

[JSP] forward와 sendRedirect의 차이  (0) 2020.12.31