<코드리뷰>
리뷰
•
ByteArrayOutputStream output = new ByteArrayOutputStream();
◦
입출력 특히 입력이 엄청 불친절한 자바 
◦
바이트스트림을 익혀놓자
<JAVA>
•
인터페이스
인터페이스를 쓰는 이유는?
•
인터페이스는 객체에 다형성 부여
◦
홍길동은 사람은 동물이고, 동물은 생물이다.
◦
홍길동은 그와 동시에 변호사이자, 음식싱겁게먹기모임에 일원이다.
◦
if문 개수를 줄여준다.
•
규약을 정의하는데 용이하다. 결국에 결합성을 낮춰줍니다.
◦
자동차가 특정 타이어와 규약없이 묶여있다면, 다른 타이어로 교체하기 힘듭니다. 다만 자동차가 특정 타이어를 모르고 타이어 규약만을 상대한다면 자동차에 표준규격을 따르는 모든 타이어를 교체해서 쓸 수 있습니다.
◦
호환성이 확보되어 상황에 따른 유연한 대처가 가능
◦
인터페이스의 의미
▪
JAVA언어만의 인터페이스 → 클래스와 대비되는 인터페이스
▪
객체지향 책에서의 인터페이스 → 상위타입, 껍데기
•
예외처리
◦
프로그램에선 여러가지 예외가 발생할 수 있고, 지켜보고 알맞게 처리해줘야 한다.
◦
예외 발생시킨 메소드에서 직접 처리할 수도 있고, 위로(선임에게) 넘겨주어 간접적으로 처리할 수도 있다.
◦
혹은 알아서 넘겨받으니 방치할 수도 있음
◦
예외처리 키워드와 모양
소스코드
◦
try ~ catch
▪
직접 예외처리
소스코드
▪
try : 예외가 발생할 수 있는 구문을 감싸는 블럭
▪
catch (ExceptionType e) :
해당 예외가 발생했을때 넘어가서 실행할 구문
▪
finally : 예외 발생 여부 상관없이 try 블럭 다음에 실행될 구문
◦
throws
▪
간접 예외처리 → 개조심 팻말
소스코드
▪
throws : 해당 함수는 ~ 에러를 밖으로 던질 수 있다는 표시 개조심
◦
커스텀 예외 만들기
▪
조금더 디테일한 보고가 필요하다면, 예외 클래스를 만들어서 throws 할 수도 있다.
▪
if(~~) throws new ExeptionName();
•
접근제어자
◦
private
▪
클래스 내에서만 접근할 수 있다.
▪
값에 대한 접근을 컨트롤 해야할 때가 있다.
▪
직접 접근을 막고, 메소드를 통해서만 접근하길 원할 때 주로 사용
•
테스트 오답노트
◦
BigInteger 클래스
숫자이지만 마치 문자열같이 사용해야 해서 사용법이 생소하다.
◦
코딩테스트 등등 가끔 등장하니 손에 익혀 둘 것.
<JAVA - 서블릿>
목표
•
서블릿으로 서비스 구현
◦
유사 스프링 구현하기
◦
유사 MyBatis 구현하기
•
실제 서비스를 하기 위한 구현
◦
도메인 연결
◦
도커
◦
도커, nginx
◦
마리아 DB
◦
톰캣
◦
톰캣을 이용한 무중단 배포
◦
TDD
•
프론트도 화려하진 않지만 깔끔하게
개발환경 세팅
•
톰캣 설치
◦
버전 10.0.22
◦
C:/work 아래에 압축 풀어놓기
•
인텔리제이 한글깨짐 해결하기
◦
help editcustom VM options
◦
-Dfile.encoding=UTF-8 추가하기
•
스마트 톰캣 설치
◦
파일 설정 플러그인
◦
smart tomcat
◦
lombok 혹시 없으면 설치
•
src 안에 webapp 폴더 만들기
◦
index.html 만들기
◦
edit configuration → + → smart tomcat\
◦
config - tomcat server → + 톰캣설치경로
◦
deployment dir → webapp 폴더경로
•
서블릿 테스트
◦
pom.xml 에 <dependencies> https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api
•
톰캣이란
◦
웹앱을 처음부터 개발하는건 라면 끓이겠다고 가스레인지를 만드는 것과 같다.
◦
톰캣은 통신 기능 등등을 가지고 이미 완성된 프로그램
◦
우리가 만든 프로그램을 꽂아서 쓸 수 있다.
◦
httpsServlet은 톰캣에서 제공됨.
▪
<scope>provided</scope> 는 일단 컴파일할땐 내가 만드는데, 나중엔 톰캣걸 가져다 쓰겠다는 이야기