Web Dev

58일차 Study

수오니니 2022. 1. 4. 19:48

<<스터디 주제>>

- 형상관리서버(SVN)

- Servlet

 

<<스터디 내용>>

형상관리서버(SVN)

 

형상관리서버 : 소스, 버젼 등 변경관리 >> 클라이언트에서는 eclipse를 이용해 작업

repository : 저장소

GIT(중소형 시스템) vs SVN(대형 시스템)

rollback(이전버젼으로 다시 update) 가능 하지만 충돌이 많이 일어날 경우는 제대로 안될 수 도 있음.

때문에 주기적인 백업이 습관화 되어 있어야함.

 

※ SVN commit 안될 경우 아래의 텍스트를 ecilpse.ini 아래에 붙여넣기 할 것

--illegal-access=warn --add-opens java.base/java.lang=ALL-UNNAMED

override and commit : 올라와있는거 무시하고 내 파일로 업로드

overide and update : 내꺼 무시하고 서버파일로 업데이트

 

 

Servlet (Server + let)

웹 클라이언트가 해석 가능한 컨텐츠를 동적 생성하기 위한 WAS에서 실행되는 자바 컴포넌트.

WAS의 Web Contatiner(실행 엔진)에 의해 관리되고 실행된다.

 

Web Container(Servlet Engine) : ClassLoader를 통해 Servlet Instance에 의해 객체로 만들고 메소드를 통해 응답.

Servlet APIs는 서블릿의 개발과 실행을 가능하게 하는 인터페이스와 클래스들의 집합이다.

가장 중요한 클래스는 HttpServlet 클래스!!!!

  • doGet(), doPost()
  • HttpServletRequest, HttpServletResponse
  • Cookie, HttpSession, ServletContext, ServletConfig, RequestDispatcher

doGet() 또는 doPost() 메소드를 오버라이드 선언
=> 클라이언트 요청에 대한 처리와 처리결과(HTML)를 생성하기 위한 메소드 - WAS(Web Application Server)에 의해 자동 호출
=> doGet() : 클라이언트가 GET 방식으로 요청한 경우 호출되는 메소드
=> doPost() : 클라이언트가 POST 방식으로 요청한 경우 호출되는 메소드 Form태그만 요청시 사용. doGet() or doPost() 메소드 대신 service() 메소드 오버라이드 선언
=> service() : 클라이언트의 모든 요청에 의해 호출되는 메소드
=> doGet() 또는 doPost() 메소드보다 service() 메소드의 호출 우선 순위가 높게 설정 WAS에 의해 메소드가 호출될 때 HttpServletRequest, HttpServletResponse

※ 클라이언트가 get방식으로 요청하는데 doPost를 오버라이드 해두면 에러발생 → 405 : method not allow error 발생

 

 

Web 프로그램을 만들기 위해서는 java.ee 라이브러리가 필요함

→ Apache Tomcat에 다 있음!

→ servlet-api.jar가 있음!

 

웹프로그램 요청(리퀘스트 메세지)

→ WAS를 통해 웹프로그램(Servlet) 실행 해서 결과(HTML)로 넘겨줌)

→ URL은 WAS에게 웹프로그램을 요청할 때 HTML의 A, Form태그 또는 JavaScript의 Location을 통해서 요청 한다.

 

응답 - 응답코드&결과 (리스폰즈 메세지)

→ 결과(HTML)을 담아서 WAS를 통해 보냄

클라이언트의 요청을 받아서 WAS가 실행해줌 → 웹컨테이너라 함.

WAS는 웹컨테이너의 역할도 하고 WEB Server의 역할도 함.

PHP를 사용하던 분들은 APACHE라는 WEB SERVER를 사용함!!!!!!

 

HttpServletRequest : 리퀘스트 메세지(요청정보)가 저장된 인스턴스

  • 리퀘스트 객체
  • 클라이언트의 요청관련 모든 정보가 담겨 있음

 

HttpServletResponse : 리스폰즈 메세지(응답정보)가 저장된 인스턴스

  • 리스폰스 객체
  • 클라이언트의 응답관련 모든 정보가 담겨 있음

네트워크 프로그램은 객체를 제공받았음. (직접 만들지 않음) → 매개변수를 이용해 전달, 반환(메소드호출) 등의 방식

 

Servlet 클래스 파일 작성 순서

  1. HttpServlet 클래스를 상속받은 자식 클래스 생성
    → HttpServlet 클래스를 상속받은 자식 클래스 객체 직렬화 클래스로 serialVersionUID 필드를 선언하는 것을 권장
  2. doGet() 또는 doPost() 메소드를 오버라이드 선언
    → 클라이언트 요청에 대한 처리와 처리결과(HTML)를 생성하기 위한 메소드 - WAS(Web Application Server)에 의해 자동 호출
    → WAS에 의해 메소드가 호출될 때 HttpServletRequest, HttpServletResponse 인스턴스를 매개변수에 자동으로 전달되어 저장
  3. 클라이언트에게 응답할 문서(파일)의 형식(MimeType) 설정(변경)
    형식)HttpServletResponse.setContentType(String mimeType[;charset=encoding])
  4. 클라이언트 요청에 의해 처리 결과(응답)를 생성하기 위한 출력 스트림을 반환받아 저장
    형식)HttpServletResponse.getOutputStream() : 원시 데이터(1Byte)를 전달할 수 있는 출력 스트림 스트림(ServletOutputStream)을 반환하는 메소드
  5. 요청에 처리와 처리 결과를 문서(파일)로 생성 - 응답
    → 출력스트림을 사용하여 처리 결과를 전달하면 문서(파일) 생성
  6. 서블릿 클래스를 웹프로그램으로 등록하여 실행되도록 설정
    → [web.xml] 파일에서 서블릿 클래스를 서블릿으로 등록하고 URL 주소를 매핑 설정
    → 매핑된 URL 주소로 클라이언트가 서블릿을 요청하면 WAS는 클래스를 객체로 생성하고 요청 처리 메소드를 호출하여 요청에 대한 처리와 응답 결과 제공

'Web Dev' 카테고리의 다른 글

60일차 Study  (0) 2022.01.07
59일차 Study  (0) 2022.01.06
57일차 Study  (0) 2022.01.04
주말 개인 Study  (0) 2022.01.03
56일차 Study  (1) 2021.12.31