-- 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 최종적으로 이런 형태의 흐름을 이해해야 한다.
- Client의 Request를 보고 WebServer가 판단
- 웹서버가 처리 가능한 거면 안 넘어가고 자기가 직접 처리해준다.
- 근데 DB에 갔다 와야 하는 거라면 WAS(톰캣) 에게 위임
- 우리는 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( " " )
@ 마임 타입??
- 현재 문서의 종류가 어떤 문서인지 알려주는 것
- 앞에 있는 게 대분류 / 뒤에 있는 게 세부 분류
@ 타입과 인코딩 지정
글자 해결 완료!
'Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원 > 7월' 카테고리의 다른 글
22.07.19 - [ WAS ] JSP, 스크립틀릿, 스크립틀릿 활용 (0) | 2022.07.28 |
---|---|
22.07.18 - [ WAS ] 절대경로, @WebServlet, req-resp (0) | 2022.07.28 |
22.07.14 - [ WAS ] WS vs WAS, tomcat 사용해보기 (0) | 2022.07.21 |
22.07.13 - [ DB 모델링 ] UML, 유스케이스 다이어그램 (0) | 2022.07.21 |
22.07.08 - [ JAVA ] 객체지향 프로그래밍, 캡슐화, 쓰레드, 소켓 (0) | 2022.07.20 |