Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/7월

22.07.15 - [ WAS ] Servlet { 개요, 만들기, 흐름파악, data 얻기/표현하기 }

giggs 2022. 7. 22. 12:39

 

-- Index --

 

1. WAS흐름파 2. Servlet이란? 3. Servlet 만들기 4. Servlet 흐름파악 5. data와 함께 요청
클라이언트 - WS - WAS - Servlet 클래스 / 객체 / 직원 extends HttpServlet 클라이언트가 톰캣에 요청 ?key=value&key=value 
 Servlet - WAS - 클라이언트   @WebServlet  톰캣은 요청 url맞춰
서블릿에게 전달
req.getParameter
    @Override 서블릿은 맞은 작업 처리 resp.getWriter

 

 

 


 

 

 

1. tomcat을 이용한 웹 서비스의 흐름 파악

 

  • 서버 구축? - tomcat 다운로드하고 tomcat 실행해 놓는 것
  • 배포? - tomcat에 파일을 올리는 것
  • tomcat이 WAS이기 때문에 java파일 실행하고 결과를 클라이언트에게 주고 하는 것이 가능하다. WS 였으면 불가능
  • tomcat에 파일 올리고 서버를 재가동시키고 하는 것이 복잡하고 번거로워서
  • eclipse랑 연결해놓고, 이클립스에서 tomcat을 실행할 수 있게 해 준 것이다.

 


 

1-1  최종적으로 이런 형태의 흐름을 이해해야 한다.

 

 

 

 

  1. Client의 Request를 보고 WebServer가 판단
  2. 웹서버가 처리 가능한 거면 안 넘어가고 자기가 직접 처리해준다.
  3. 근데 DB에 갔다 와야 하는 거라면 WAS(톰캣) 에게 위임
  4. 우리는 WebServer 따로 두지 않고 WAS(톰캣)만 사용할 것이다.

 


 

1-2  우리가 하는 방식으로 이해해보면

 

  • Client가 browser를 통해 tomcat에게 가지고 있는 파일 보여줘 요청
  • tomcat은 요청 오면 - 직접 처리 또는 서블릿을 통해 작업해서 client에게 리턴
  • login 요청이 들어오면 – login 담당 직원에게 위임해서 그 결과받아서 리턴

 

 

 

 

 

  • 이런 login 담당 직원을 가지고 있을 수가 있는 것이 WAS!
  • 실시간으로 화면을 만들 수 있는 것이 WAS
  • 그냥 WS(웹서버)였다면 가지고 있는 파일 보여주는 작업만 가능하다!
  • 정적인 파일은 – views 폴더 하나 만들어서 – 거기에 파일들 넣어주면 된다.

 

 

 


 

 

 

 

2. Servlet 이란?

 

 

  • 클래스다
  • tomcat 안에 존재하는 어떤 객체 ( 직원 ) 이다.
  • 이 객체에 어떤 요청에 대한 동작을 지정해 놓을 수 있다. ( 회원가입 오면 회원가입 )
  • 요청과 답변에 대한 처리를 모두 직접 하는 것이 아니라 다른 사람이 만들어 놓은 거 상속받아서 처리할 것이다.

 

 

 


 

 

 

 

2. Servlet 만들기

 

 

2-1. tomcat 이 가지고 있는 클래스 파일 사용 extends HttpServlet

 


 

2-2. 이 서블릿이 어떤 역할을 할지 @WebServlet 써주기

 


 

2-3. service() 메서드 오버라이드 

 

 


 

2-4. 오버라이드 한 메서드 호출하는 방법은?

  • @WebServlet으로 사용할 거라고 표시해준 클래스의
  • urlPatterns에 지정해준 url로 요청하면 작동한다.
  • ~~~ /login

 

 

 

 

 


 

 

2-5 servlet 만들기 중요한 3가지

 

 

 

 

 


 

 

 

 

 

3. Servlet 작동 방식 및 흐름 파악

 

 

  • 브라우저 = 클라이언트
  • 브라우저가 서버에게  127.0.0.1:8888/login 요청을 보내면
  • ip주소에 맞는 컴퓨터 찾아가서
  • 포트번호에 해당하는 프로세스( tomcat ) 찾아가서
  • tomcat 안에 있는 여러 개의 객체들(Servlet) 중에서
  • /login 담당자(servlet)에게 일 시키고
  • 그 결과를 받아서 client에게 리턴

 

 

 

 

 

 


 

 

 

 

 4. data와 함께 요청 보내기

 

  • 요청을 보낼 때 어떤 data를 같이 전달해주기
  • request
  • 요청을 보낼 때 어떤 data를 request에 담아서 전달해주기
  • 데이터 전달 형식 ::: [ ? key = vlaue ] 형식으로 전달 가능
  • 데이터 2개 보내는 거면 ::: [ ?key=value&key=value ] 형식으로 전달
  • 이때 전달하는 data를 담는 것이 request 
  • 서버는 request 주머니 보고 데이터 있나 없나 확인 가능

 

 

 

# 이렇게 보내주면 서버는 request 주머니에서 #

# key값을 이용해서 value값을 확인할 수 있다. #

 

 

 


 

 

4-1 클라이언트가 보낸 data 보는 방법 ( 콘솔 창 )

  • 브라우저(클라이언트)가 보낸 요청사항 보는 방법
  • request 주머니에서 data 꺼내기 -- 파라미터로 꺼내기
  • req.getParameter( " key " )

 

 

- 클라이언트가 보낸 요청과 data가 -

그 요청을 처리하는 tomcat이 만들어 준 req 객체에 들어있고

 

 

 


 

Servlet이 request 안에 데이터 보는 방법은 getParameter(“ ”);

# req.getParameter( " key " ) # 

 

 

 

 


 

 

이것이 가능하다는 의미는

정적인 것을 넘어서

클라이언트의 요청에 맞는 java파일을 실행할 수 있게 된 것이다.

, 내가 만든 service() 실행 가능하게 된 것이다.

 

 

 

 


 

 

4-2 클라이언트가 보낸 data 보는 방법 ( 화면 )

  • 콘솔 창이 아닌 화면에 보여주기
  • response 부분 해보기
  • 크게 2가지다 [ send / encoading ]

 

 


 

 

# 스트림 만들어서 화면에 표현해주기

  • 어떤 스트림을 만들어가지고 데이터를 보내주면 된다.
  • 어떤 스트림? - PrintWriter라는 스트림
  • resp.getWriter() 메서드로 PrintWriter 객체를 생 성해준 뒤
  • 이 객체에 println() 명령으로 화면에 표시! 

 

 

화면에 표시 완료! 

 

 

 

 

 


 

 

 

 

 

+@ 글씨 깨지는 거 해결해보자!  resp.setContentType( " " )

 

 


 

@ 마임 타입??

  • 현재 문서의 종류가 어떤 문서인지 알려주는 것
  • 앞에 있는 게 대분류 / 뒤에 있는 게 세부 분류

 

@ 타입과 인코딩  지정

 

 


 

 

글자 해결 완료!