jb.log

..loading

자바 웹 프로그래밍

September 12, 2019

이전 자바 카테고리에서는 자바 언어를 배우고 자바 프로그램을 만드는 과정을 진행하였다.

하지만 자바의 주 사용 목적은 웹 프로그램을 만드는 것이고 앞으로 자바 웹 프로그램을 만드는 것을 목표로 할 것이다.

그렇다면 자바 프로그램과 자바 웹 프로그램은 다른점이 무엇일까? 먼저 자바 프로그램은 콘솔, 윈도우를 통해 사용자가 입, 출력을 하여 프로그램과 상호작용을 하는 것을 말한다.

지금까지 다루었던 예제들은 IDE에서 지원하는 터미널이나 콘솔창등을 통해 Scanner로 입력을 받거나 출력받아 볼 수 있었을 것 이다.

웹 프로그램은 말 그대로 웹을 통하여 사용자와 상호작용을 하는 프로그램이다. 콘솔을 통해 입력을 받고 결과를 출력 받는 곳이 웹의 브라우저로 바뀐것 뿐이다.

웹 서버(web server)

클라이언트에서 웹서버에게 주소(url)를 가지고 통신규칙(http)에 맞게 요청하면 그에 따른 응답을 받는다. 여기서 응답은 보통 정적인 html문서를 보여주게 된다.

img

여기서 문제가 발생한다. html은 프로그래밍 언어가 아니다. 정적인 파일이다보니 데이터의 변화를 줄 수 있는 방법이 없는 것이다. 이때 웹 어플리케이션 서버가 등장한다.

웹 어플리케이션 서버(WAS: web applicatioin server)

웹 어플리케이션이란?- 웹에서 실행되는 응용 프로그램

그렇다면 웹 어플리케이션 서버는 다음같이 설명할 수 있다.

  • 웹 어플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크이다.
  • 웹 어플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달한다.

img

위의 이미지에서 알 수 있듯 동적인 기능을 서비스하기 위해서 WAS를 이용하여 Servlet을 활용하는 것을 볼 수 있다.

서블릿(Servlet)

서블릿은

서버 쪽에서 실행되고 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스
를 말한다.

서블릿의 특징

  • 서버쪽에서 실행되면서 기능을 수행

  • 기존의 정적인 웹 프로그램의 문제점을 보완

  • 스레드 방식으로 실행

  • 자바로 만들어짐

  • 컨테이너에서 실행

  • 컨테이너 종류에 상관없이 실행됨(플랫폼 독립적)

  • 보안 기능을 적용하기 쉬움

  • 웹 브라우저에서 요청 시 기능을 수행함

    다음 글 부터 본격적으로 servlet 예제들을 다루도록 하겠다.

Other Posts

October 1, 2019
jsp 프로젝트 만들기 - mvc1, mvc2
이전에 만든 `board-detail.jsp`은 DB와 잘 연결되어 화면에 데이터를 잘 출력하는 것을 볼 수 있다. 하지만 jsp 파일 내의 코드를 보면 자바코드와 html코드가 뒤엉켜 있는 것을 볼 수 있다. 이것을 스파게티 코드라 한다.
September 29, 2019
jsp 프로젝트 만들기 - 시작
본격적으로 jsp를 이용한 servlet 프로젝트를 만들어보겠다. jsp와 servlet의 활용 목적이 주된 내용이기 html/css 는 가급적 손대지 않고 비즈니스 로직에 집중하도록 하겠다.
September 25, 2019
jsp 프로그래밍
jsp란 `Java Server Pages` 의 약자이며 HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.
September 24, 2019
Servlet 상태관리
서블릿은 요청이 오면 응답을 주고 메모리에서 사라지기 때문에 서블릿들 간의 연결이 불가능하다. 만약 기존의 데이터를 저장할 일이 생겼다고 하면 서블릿 스스로 저장할 수 있는 것은 아니다. 이것은 ServletContext로 해결할 수 있다.
September 22, 2019
한글 인코딩
servlet 클래스에서 한글을 출력하면 한글이 깨지는 것을 볼 수 있다. 해당 문제점은 다음과 같이 해결할 수 있다.
September 20, 2019
Servlet 다루기
기존의 html 문서만으로는 동적인 내용을 전달할 수 없다. 때문에 WAS(web application server) 에서 동작하는 프로그래밍 언어를 사용하면 가능하다.