본문 바로가기
강의/웹 프로그래밍(풀스택)

부스트코스 웹 프로그래밍(풀스택) - 1. 웹 프로그래밍 기초 - 5-1 강의 정리

by 리드민 2022. 4. 12.
반응형

[1] 강의

웹 프로그래밍(풀스택)

4. 개발환경 설정 -BE

6) HelloWorld 서블릿 컴파일 및 실행하기-1

https://www.boostcourse.org/web316/lecture/16686?isDesc=false

 

웹 프로그래밍(풀스택)

부스트코스 무료 강의

www.boostcourse.org

 

[2] 개념 정리

HTML :  웹 문서를 만들기 위하여 사용하는 기본적인 웹 언어의 한 종류이다. 하이퍼텍스트를 작성하기 위해 개발되었다. HTML(Hyper Text Markup Language)은 가장 단순한 형태의 웹 언어이다. 웹 서버에 HTML 문서를 저장하고 있다가 클라이언트가 특정 HTML 페이지를 요청하면 해당 HTML 문서를 클라이언트로 전송한다. 그러면 클라이언트는 이 웹 페이지를 해석하여 웹 브라우저에 표현해 주는데 이런 웹 페이지를 정적인(Static) 웹 페이지라고 한다.

CSS : Cascading Style Sheets(CSS)는 HTML이나 XML(XML의 방언인 SVG, XHTML 포함)로 작성된 문서의 표시 방법을 기술하기 위한 스타일 시트 언어입니다. CSS는 요소가 화면, 종이, 음성이나 다른 매체 상에 어떻게 렌더링되어야 하는지 지정합니다.  웹 문서의 전반적인 스타일을 미리 저장해 둔 스타일시트이다. 문서 전체의 일관성을 유지할 수 있고, 세세한 스타일 지정의 필요를 줄어들게 하였다.

WEB-INF : Web Information의 약자로 web에 관련된 정보를 의미한다. 웹 애플리케이션을 실행하는데 필요한 클래스 파일 및 설정 파일 등이 저장되는 폴더다.

web.xml : WebApplication의 Deployment Descriptor(배포 설명자)로써 XML형식의 파일이다. 프로젝트를 배포하게 되면 그 프로젝트에 대한 설정에 대한 정보를 가지고 있는 파일이다. 모든 Web application은 반드시 하나의 web.xml 파일을 가져야하고 위치는 WEB-INF 폴더 아래에 있다.

 

[3] 강의 정리

  서블릿이 무엇인지 알아보자. 앞에서 firstweb이라는 Dynamic Web Project를 이클립스에서 생성하고 해당 프로젝트에서 HelloServlet이라는 서블릿 클래스를 작성해봤다. 작성된 서블릿은 이클립스 내부에서 설정한 runtime , 우리는 톰캣이라는 WAS를 설치했었다. 톰캣에 의해서 동작이 된다. 그 이후 웹 브라우저를 이용해서 톰캣 서버에 URL 요청을 보내고 HelloServlet이 실행되는 결과를 웹 브라우저로 확인해보았다. 앞에서 만들어 보았던 firstweb 프로젝트에 의해서 만들어진 것이 자바 웹 애플리케이션이다. 자바 웹 애플리케이션은 HTML이라던가 CSS, 이미지, 자바로 작성된 클래스들. 서블릿이 될 수도 있고, JSP가 될 수도 있고. 이런 것들이 포함될 수가 있다. HTML, CSS, 이미지, 서블릿, JSP 등이 하나의 웹 애플리케이션에서 여러 개 포함이 될 수가 있다.

  복잡한 웹 애플리케이션일수록 이런 구성 요소들이 굉장히 많이 들어가 있다. 여러분들이 인터넷에서 사용하는 쇼핑몰, 블로그, 카페 등이 웹 애플리케이션이라고 말할 수 있다. 앞에서 만든 firstweb은 하나의 서블릿으로 구성된 아주 간단한 형태의 웹 애플리케이션이라고 말할 수 있다. 자바의 웹 애플리케이션 폴더 구조를 살펴보겠다. 이런 웹 애플리케이션은 혼자서 동작하는 게 아니라 WAS에 의해서 동작이 된다. 항상 여러분 기억하셔야 될 게 내가 다 처음부터 끝까지 하는 것들은 내가 마음대로 만들면 되는데 내가 스스로 하는 게 아니라 지금처럼 WAS, 미들웨어 같은 거의 도움을 받는다던가 이런 것들은 약속들이 정해져있다. 나중에 여러분들이 framework을 사용하신다던가 이런 부분들도 마찬가지다. 그때도 내가 뭔가를 몽땅 다하는 게 아니라 도움을 받아야 된다. 그랬을 때는 반드시 정해진 약속을 지켜야 된다. 자바 이런 웹 애플리케이션도 마찬가지다. 그래서 반드시 이런 폴더 구조를 지켜주셔야 된다.

  자바 웹 애플리케이션에 폴더 구조를 보면 반드시 WEB-INF라는 폴더가 존재해야 한다. 굉장히 중요한 폴더이다. 그리고 이 WEB-INF라는 폴더 안에는 web.xml이라는 파일이 존재한다. web.xml 이라는 파일도 굉장히 중요한 파일이다. 우리가 배포 기술자라고 하는데 이 웹 애플리케이션에 대한 정보들을 다 가지고 있는 거라고 생각하면 된다. servlet 3.0 미만에서는 필수로 가지고 있어야 된다. 3.0 이상에서는 어노테이션을 사용해서 대신해주는 부분들이 막 존재하기 때문에 반드시 포함하지는 않아도 된다. 어노테이션이 그것의 역할을 대신했기 때문에 없어도 되지만 실제 web.xml이라는 파일이 굉장히 중요하게 필요하다라고 기억하면 될 거 같다. WEB-INF라는 폴더 하위 폴더로 lib라는 폴더, classes라는 폴더가 존재할 수 있다. 약속이 정해져 있다고 했었다. 그래서 이런 library의 약자인 lib라는 폴더는 각종 자료 파일들을 여기에 넣을 수 있다. 그리고 classes라는 폴더 안에는 실제 class, java 패키지들이라던가 이런 부분들이 들어간다. 그래서 여러분들이 작성했던 서블릿 파일들도 모두 classes라는 디렉토리 안에 들어있을 거다. 이런 같은 경로 위치에다가 여러분들이 원하는 각종 폴더들을 만들어둘수 있다. lib이라는 위치에다 원하는 각종 폴더들을 만들어둘 수도 있다. 거기에다가 이미지라던가 다양한 리소스들 여러분들이 프론트엔드 쪽에서 작성했던 갖가지 파일들 HTML이 될수도 있고, CSS가 될 수도 있고, 자바 스크립트가 될 수도 있고 그런 요소들이 다 여기에 들어올수 있다고 생각하면 된다.

  그래서 실제 우리가 만들었던 웹 애플리케이션 Dynamic 웹 애플리케이션 firstweb 이런 거를 만들었던거 기억하나? 그 만들어져있는 firstweb의 경로에 들어가 보면 이렇게 구조가 만들어져 있는 것들 볼 수 있다. 도스 창에서 보는게 싫으면 파일 탐색기로 확인해봐도 된다. workspaceC 드라이브 밑에 user 밑에 carami 밑에 eclipse-workspace라고 지정이 되어 있다. 그래서 여기에 들어있는데 여러분들이 확인했을 때는 여러분들의 workspace 위치까지 들어가서 이 안에 eclipse-workspace를 만들면 자동으로 .metadata 이런 디렉토리가 만들어져 있을 거다. .metadata 안에 보면 또 이런 파일들이 들어가 있을꺼다. 그 안에 들어가 보면 또 디렉토리가 많다. 그중에 org.eclipse.wst.server.core라고 되어 있는 디렉토리가 있다. 이걸 열어본다. 이렇게 열어보면 이 안에 tmp0라고 되어있는 디렉토리가 존재한는데 실제 열어보면 여러분이 아파치 톰캣을 설치했을 텐데 그 톰캣이 설치되어 있는 디렉토리를 열어보면 이렇게 유사한 구조로 되어 있다. 이클립스가 내부적으로 톰캣을 사용하기 때문에 비슷하게 만들어놓고 이 안에서 요소들을 찾아서 사용한다고 생각하면 된다. 이 안에 wtpwebapps라는 디렉토리를 열어봤더니 우리가 지금까지 실습하면서 만들었던 firstweb 웹 애플리케이션이 만들어져있는 걸 볼 수 있다. 여기서 firstweb 한번 열어보자. 아까 말씀드렸던 것처럼 WEB_INF라는 디렉토리가 존재하고 있다.

  이 안에 classes 그리고 패키지명 이 안에 들어가 보니 우리가 지금까지 만들어서 실습했었던 HelloServlet, LifecycleServlet, TenServlet 이런 것들이 들어있는 걸 볼 수 있다. classes라는 디렉토리가 들어가 있고 그리고 lib이 들어 있다. 다른 것들을 안했기 때문에 다른 건 없는데 이런 위치에 다른 리소스들이 존재할 수 있다고 기억하고 있으면 될 거 같다. 웹 애플리케이션이 이런 구조로 되어 있구나 라고 기억하면 될 거 같고. 서블릿을 한번 정리를 해보자면 자바 웹 애플리케이션의 구조 중에 동적인 처리를 하는 프로그램의 역할을 한다. 서블릿을 한번 정의를 해보자면 서블릿은 WAS에서 동작하는 Java의 클래스다. 서블릿은 HttpServlet 클래스를 상속받아야 한다. 서블릿과 JSP로부터 최상의 결과를 얻으려면 웹페이지를 개발할 때 이 두가지를 조화롭게 사용해야 된다. 아직 우리가 JSP까지 학습하지 않았기 때문에 거기까지는 몰라도 되지만 응답 결과를 마들 때 서블릿에서 out.println에다가 HTML 태그들 막 넣었던 거 기억나나? 실제 동작하는 웹사이트를 열어서 소스 보기를 해보면 굉장히 많은 내용들이 있다. 그런 부분들을 해결하기 위해서 만들어진 것이 JSP이다. 이번 시간에는 이렇게 서블릿이 무엇인지 자바 웹 애플리케이션에서 서블릿이 어떤 위치를 차지하고 있는지 이런 부분에 대해서 알아보겠다.

 

[4] 코드 정리

 

 

반응형