Servlet 인터페이스
tomcat을 호출하기 위해 Servlet을 구현한 Servlet 인터페이스를 만든다.(호출 규약)
Servlet 컨테이너가 Servlet 인터페이스의 메서드들을 호출한다.
Servlet 인터페이스 메서드
메서드 종류 : 라이프 사이클 관련 메서드, 그 외
라이프 사이클 관련 메서드
init(), service(), destroy()
init() : Servlet 컨테이너가 Servlet을 생성한 다음에 초기화 작업을 수행하기 위해 호출하는 메서드(처음 한 번만 호출)
service() : Servlet 컨테이너가 클라이언트 요청이 들어올 때마다 호출하는 메서드
destroy() : Servlet 컨테이너가 종료될 때 호출하는 메서드(자원 해제)
그 외
getServletConfig(), getServletInfo()
getServletConfig() : Servlet의 초기 설정 정보를 담는 객체를 반환하는 메서드(Servlet 이름, Servlet 초기 매개 변수 값 등)
getServletInfo() : Servlet 작성자, Servlet 버전, 저작권과 같은 정보를 반환하는 메서드
Servlet 필요성
Spring MVC의 Dispatcher Servlet(핵심 부분)을 이해해야 전체적인 흐름을 이해할 수 있게 된다.
계산기 서블릿 프로그램
① 계산기 프로그램을 Servlet으로 만든다.(Servlet 객체는 싱글톤으로 관리)
필요가 없는 부분도 구현해야 한다(비효율)
② 계산기 프로그램을 GenericServlet으로 만든다.
service()만 구현한다. 그 외의 메서드는 필요할 때만 오버라이드하면 된다.(implements > extends)
③ 계산기 프로그램을 HttpServlet으로 만든다.
요청마다 메서드들을 오버라이드하여 구현하면 된다.(계산기 작업은 GET 요청)
URL 인코딩 작업(URL로 사용 불가한 문자 > 사용 가능)을 처리해야 한다.
URL 인코딩 변환 : https://www.convertstring.com/ko/EncodeDecode/UrlEncode
JDBC(Java Database Connectivity)
자바 애플리케이션에서 DB 프로그래밍을 할 수 있도록 돕는 표준 인터페이스이다.
JDBC 인터페이스들을 구현한 구현체(JDBC 드라이버)들은 각 데이터베이스 벤더 사들이 제공한다.
JDBC 인터페이스를 통해 코드를 작성하기 때문에 DB가 변경되어도 코드를 변경할 필요가 없다.
DB Connection Pool
DBCP(Database Connection Pool)
미리 일정량의 DB 커넥션을 생성하여 풀에 저장하다가 필요할 때 풀에서 커넥션을 가져다 사용하는 기법이다.
DBCP 라이브러리 종류 : HikariCP, 아파치 커먼즈 DBCP, tomcat JDBC 등
유의 사항
커넥션의 사용 주체는 WAS Thread이므로 커넥션 개수를 고려할 때 WAS Thread도 함께 고려해야 한다.
적정량의 커넥션 객체를 생성해 둬야 한다.
커넥션 수 크게 설정 : 메모리 소모 큼. 동시 접속자 수가 많아져도 사용자의 대기 시간이 상대적으로 줄어든다.
커넥션 수 작게 설정 : 메모리 소모 적음. 그만큼 대기 시간이 길어진다.
DataSource
커넥션을 획득하기 위한 표준 인터페이스.
객체 지향 > HTTP 개념 > 웹 애플리케이션 과정을 거쳐 DB 관련 파트에 진입하게 되었다.
실제 데이터를 넣어 무언가를 만들 생각에 내일이 기다려지는 하루이다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
'Java > [패스트캠퍼스] 50일 포트폴리오 챌린지' 카테고리의 다른 글
[10일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.08.17 |
---|---|
[9일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.08.16 |
[7일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.08.14 |
[6일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.08.13 |
[5일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) (0) | 2023.08.12 |