본문 바로가기
JSP - Servlet

[JSP - Servlet] Chapter 1. 웹 어플리케이션 기초 개념

by nyeoo 2023. 12. 31.

1. 웹 어플리케이션이란?

  • 웹 어플리케이션은 웹 브라우저의 요청에 대하여 처리한 결과를 보여주는 프로그램을 의미
  • 사용자가 어떤 상태로 무엇을 요청했느냐에 따라 스스로 판단하여 자동으로 각각의 요청에 대한 처리 결과를 보여주는 프로그램
  • 정적인 홈페이지는 항상 일정한 화면을 제공해주며, 브라우저가 이미 저장된 HTML, CSS, JS 파일을 다운받음. 그에 비해 웹 어플리케이션은 누가 페이지를 요청했는지에 따라 다른 정보(다른 서비스 제공)를 보여줌

2. 웹 어플리케이션의 구성요소

웹 브라우저

  • 인터넷 익스플로러, 크롬, 파이어폭스, 오페라, 사파리, ....

웹 서버(WAS : Web Application Server)

  • 웹 서버란 웹 브라우저를 이용하여 World Wide Web 을 사용하는 클라이언트에게 미리 저장된 하이퍼텍스트(Hyper Text)를 제공하는 서버
  • 대표적으로는 MS 기반의 IIS 서버와 유닉스 기반의 아파치 서버 등이 있음

어플리케이션 서버

  • 처리 결과값을 웹 서버에 전달
  • 클라이언트가 어떤 페이지를 요청했느냐에 따라 그 문서를 동적으로 만들어 전달
  • JSP, Servlet 등으로 동적 웹 페이지 구축

데이터베이스

  • 데이터 저장 및 처리

3. 웹 어플리케이션의 구분

어플리케이션 서버 방식

  • 웹 어플리케이션 서버를 통해 간접적으로 웹 어플리케이션 프로그램을 실행함
  • 대용량 처리에 유리하며, CGI(Common Gateway Interface) 방식 (리소스 소모가 심함)에 비해 메모리 사용량이 적음 (→ 여러 사용자가 파일을 열어도 프로그램은 하나만 돌아감)

스크립트 방식

  • 코드 형태 : 컴파일 되지 않은 스크립트 코드
  • 실행 방식 : 스크립트 코드를 해석한 뒤 실행
  • 코드 변경 : 스크립트 코드만 수정

4. 웹 어플리케이션 개발을 위한 기술들

Servlet (Server + Applet)

  • Sun 사에서 내놓은 기술로서 JAVA 라는 언어를 기반으로 하여 동적인 컨텐츠를 생성하는 기술
  • JAVA 코드 안에 HTML 태그가 혼재되어 있어 효율성이 다소 떨어질 수 있음
  • JAVA 가 HTML 을 품고 있는 형태 (확장자는 .java → .class)
  • 웹 어플리케이션을 구축하기 위한 웹 프로그램을 구성하는 언어의 한 종류(JAVA 기반)
  • JSP를 내부적으로 Web Container 가 Servlet 으로 변경시켜줌
  • 『GenericServlet』이나 『HttpServlet(★)』을 활용함

JSP (Java Server Page)

  • JSP 또한 Java 라는 언어를 기반으로 하여 만들어진 것이지만 ASP, PHP 처럼 동적인 컨텐츠를 생성하기 위해 스크립트 언어 형식으로 프로그램을 작성할 수 있어서 개발자에게 비교적 쉬운 개발을 할 수 있게 함
  • 사용자가 직접 태그를 정의해서 사용할 수 있는 사용자 정의 태그를 지정할 수 있는 기능도 갖고 있음
  • HTML 이 JAVA 를 품고 있는 형태 (확장자는 .jsp → .html)

JSP + Servlet

  • JSP의 단점은 MVC 패턴을 적용하기 힘든 것이고, Servlet의 단점은 웹 페이지(view) 작성이 번거롭고 복잡(불편)하다는 것이므로 구조가 복잡해질 수는 있으나, Servlet + JSP 로 MVC 패턴 적용 및 웹 페이지(view)를 보다 편리하게 작성할 수 있음
  • JSP 에서 정적인 부분을 담당하고, Servlet 에서는 동적인 처리를 위한 부분으로 사용되어 보다 효율적인 웹 어플리케이션을 구축할 수 있음
  • JSP 만으로는 JSP(입력) → JSP(처리, 결과) 이나, JSP + Servlet 을 사용하면 JSP(입력) → Servlet(결과를 위한 처리) → JSP(결과) 방식으로 구성됨
  • URL 패턴을 지정하여 어떤 요청이 어떤 서블릿에 매핑되는지 결정할 수 있으며, URL 패턴을 지정하는 방법은 크게 3가지(/a, /*, .do)
  • 『init()』과 『destroy()』 는 단 한 번 호출되며, 『service()』는 클라이언트의 요청이 있을 때 마다 호출됨