[서블릿/JSP] 강의정리 1 -개념 다시보기: 웹 서버 프로그램, 서블릿 Servlet

별의개발자커비·2023년 8월 1일
0

JSP

목록 보기
27/31
post-thumbnail

강의 출처 https://www.youtube.com/playlist?list=PLq8wAnVUcTFVOtENMsujSgtv2TOsMy8zd

01 - 학습 안내


02 - 웹 서버 프로그램이란

  • 스프링이 제공하는 프론트 컨트롤러 라이브러리(=dispatcher)를 통해서 컨트롤러를 만들 수 있음
  • url 요청이 왔을 때 알맞는 컨트롤러에 배분해주는 역할
    • 과거에는 톰캣의 web.xml 또는 url-mapping을 해주거나 어노테이션 설정을 했었는데
    • 그 내용이 *-.servlet.xml로 들어가게 된 것

03 - 웹 서버 프로그램과 Servlet

(?)

- server application

: 동적으로 문서를 만드는 코드들

그걸 실행하게 해주는 환경 2가지

1. Web Server

2. WAS (web appliacation server)

웹서버에 사용자가 요구하는 내용의 코드를 실행하고, 실행된 결과를 보여주게 하는 어떤 것

  • 자바 웹 개발을 위해 사용하는 대표적인 WAS: 톰캣 9 (Web server 기능도 포함되어있음: 웹문서를 제공해줌)

그리고 이 WAS에서 실행될 수 있도록 하는 그런 server application

servlet

요청에 따라 서버에 의해 찾아지는 코드들, 근데 서버 어플리케이션은 그 때 그 때 파편화된 애가 실행되고 끝나버림.
이렇게 조각나 있는 서버 어플리케이션 = servlet

- tomcat은 web+was?

web(nginx, apache...), was(tomcat....)를 보통 따로 둠

  • 하지만, 자바 기반으로 서블릿이나 JSP로 웹 서비스를 만들어서 운영할 때는 tomcat이 web,was 를 한번에 처리하는 것으로 가능
  • 물론, PHP나 장고 같은 다양한 WAS 를 함께 이용하여 웹 서비스를 운영하려면 웹서버를 별도로 운영해야함

05 - 톰캣 9 웹문서 추가해보기

톰캣 웹서버 원리

웹서버는 예약되어있는 어떤 특정 폴더root가 있고,
이 특정 폴더에 문서를 저장하고 nana.txt
그거를 다른 원격에 있는 컴퓨터의 브라우저를 통해서 (아마 톰캣 서버?)
서버 주소localhost:8080와 함께 리소스의 이름nana.txt을 입력해주면 페이지를 돌려주는구나.

06 - Context 사이트 추가하기

  • 규모가 큰 경우에는 이렇게 context 를 이용해서 팀을 나눠서 만드는 경우도 많다





07 - 처음으로 서블릿 프로그램 만들어보기

Servlet( Server Application Let)


기능별로 코드가 나눠져있어서 필요에 따라서 필요한 기능의 코드를 실행할 수 있게되어있는 형태

  • 사용자(클라이언트 어플리케이션)이 웹서버, was이라는 환경을 통해
    • notice/list를 달라고 요청하면 list라는 서블릿만 실행하고
    • edit을 달라고 하면 edit이라는 서블릿만 실행하게 되는 것
  • 다른 것들은 로드 되지 않음
  • 왜냐면, 수 많은 조각(기능)들이 있는데 모든 기능이 다 사용되지 않기 때문에 어쩌다가 요청이 들어오면 그것만 사용하기위해
  • 그래서, 효율성을 위해서 웹이라는 환경에서 사용되는 그런 Server 프로그램이다 보니까 필요에 따라 로드될 수 있도록 다 조각나 있음
    → Servlet( Server서버 Application어플리케이션 Let조각)

그럼 어떻게 만들 것이냐?

Service라고 하는 이름의 함수를 통해서 만든다.

문제는, java 실행 클래스 파일과 다른 점은void ???main()함수가 아님

  • 모든 class 들은 WAS에 의해 로드되고 실행되고 결과 돌려줌
  • class ??? 만으로는 인식할 수 없음
  • 약속되어있는 interface 또는 추상클래스로 인식
    : HttpServlet라는 추상클래스의 자료형식으로 WAS가 servlet을 참조하게 되고, 그 servlet이 호출하는 정해져있는 void ??? 클래스 함수를 인식

    그렇게 HttpServlet을 통해 약속되어있는 걸 따라 void service를 쓰게 됨
  • 그렇게 해서 만들어진 이런 클래스의 경우는 이름따라 Nana 서블릿이라고 함
  • 서블릿 HttpServlet을 상속받고 있는 모든 구현 클래스는 다 서블릿 클래스가 되기 때문에

이클립스 없이 서비스 함수 만들어보기

  • ter에 javac - 라이브러리 추가 작업


08 - 서블릿 객체 생성과 실행 방법

  • web-inf안의 클래스 파일(자바 서버 어플리케이션)을 사용자가 직접 호출해서 실행하는 것이 아님

서블릿이 실행되는 방식


자바 서버 어플리케이션에 있는 내용은 WAS나 웹서버(톰캣)만 알고있으면 됨

  • 자바 서버 어플리케이션에 있는 프로그램을 실행해주는 건 내가(WAS나 웹서버) 해줄테니 사용자는 어떤 걸 원하는지 말을 해다오
  • 사용자는 /edit라는 이름으로 요청
  • 그럼 해당 url이름으로 매핑된 Servlet 코드를 찾아서 실행해줌

순서





단, web-inf는 절대 외부에서 접근할 수 있는 위치가 아니라 안됨

web.xml로 매핑


이어서 서버 콘솔말고 화면에 출력해볼 것 : HttpServletResponse를 통해

09 - 서블릿(Servlet) 문자열 출력

웹에서 입력, 출력이란


Servlet이라는 것은, 자바 웹 프로그래밍으로 만드는 방식

  • 웹이 담당하고 있는 것은 = UI
    • 콘솔UI
    • 윈도우UI
  • 입력, 출력을 담당하는 부분이 웹으로 바뀌는 것
  • 즉, 웹이라고 하는 것은
    • 서버에서 클라이언트로 전달되는(원격으로 데이터를 보내는) 형태를 말하는 것
    • 또는, 클라이언트로부터 입력을 받을 수 있는(원격으로부터 입력을 받는) 방법을 다루는 것

그걸 해주는 HttpServletRequest, Response

service 함수는 2개의 인자를 전해주고 있음

  • HttpServletRequest 객체: 서블릿을 만들 때 필요한 요청 도구
  • HttpServletResponse 객체: 서블릿을 만들 때 필요한 응답(출력) 도구

얘네를 통해 기존에 자바에서 사용했던 것과 똑같이 만들 수 있지만, 입출력을 web으로 할 수 있다는 차이!

10 - 웹 개발을 위한 이클립스 IDE 준비하기

근데 수정사항을 앞처럼 생으로 반영하려면...

  • 메모장 소스코드 고치고, ter에서 컴파일 다시하고, 배포도 다시하고, 서버도 다시 실행해야하고, 브라우저 띄워서 주소도 다시 입력해야함

이걸 쉽게 할 수 있게하는 통합 개발 환경인 이클립스를 이용하는 것

프로젝트를 만드는 건, 서블릿 코드가 만들어지는 게 아니라
서블릿 코드를 만들고 실행하기 위한 여러 정보가 만들어지기 위한 환경이 되는 것

그 중 하나가, 실행환경 Target Runtime
톰캣을 사용할 거지만, 물론 was(서블릿을 실행해주는 것)가 톰캣만 있는 것은 아님

profile
비전공자 독학러. 일단 쌔린다. 개발 공부👊

0개의 댓글