2020-11-20 TIL
pms 43
- 필터 추가
- 필터는 chain of responsibility 디자인 패턴을 사용한다.
- 필터는 리스터에 추가한다.
- 옵저버 패턴
- 람다 문법
- https://coding-factory.tistory.com/265 ```java // 직접 스레드를 생성하는 것이 아니라 스레드풀에 작업을 맡긴다. threadPool.execute(() -> handleClient(clientSocket));
class My RequiestHandler implements Runnable { @Override puvlic void run() { handleClient(clientSocket); }
threadPool.execute(new MyRequiestHandler); } ```
- 컨텍스트맵은 컨테이너, 커맨드맵은 박스라고 생각하면 된다.
- 관리하기 편하도록 그렇게 담아둔다.
- 기존에는 컨테이너에 바로 넣었는데 나중에는 박스에 담아서 컨테이너에 넣는 방식을 사용했다.
- 컨텍스트에 바로 담기보다 커맨드맵에 담아서 컨텍스트에 담는 방식으로 바꾼다.
- 컨텍스트에 모든 것이 담겨있기 때문에 로그인 유저를 구별할 수 없다.
- 컨텍스트가 아니라 각 클라이언트 전용 보관 공간이 필요한다.
- UUID : 유니버셜리 유니크 아이덴티피어
- 범용 식별자.
- 식별을 위해 고유성이 중요하다.
- 디폴트커맨드의 command.execute에서 리퀘스트를 넘기는 이유
- 리퀘스트에 전부 다 들어있고, 파라미터를 매번 바꿀 때마다 관련 커맨드를 전부 다 바꿔줘야 하기 때문에 유지보수가 번거롭다.
- 그렇기 때문에 리퀘스트에 담아서 한번에 파라미터로 넘겨준다.
- 이렇게 하면 다음번에 리퀘스트를 수정하기만 하면 원하는 것을 더하기 편하다.
- 람다 중요
- 애노테이션 문법 주석 중요
오류 잡기
- 로그인을 했는데 안됐다고 나오는 문제
- 클라이언트 응답 첫줄에 세션 아이디를 출력한다 에서
- out.printf(“SessionID = %s\n”, sessionId);
- ” “ 안에 공백을 주면 안된다.
- out.printf(“SessionID=%s\n”, sessionId);
- 이렇게 하면 문제 해결
- 애노테이션 두개 출력되는 문제
웹 어플리케이션 서버로 전환
- 서블릿 기술 도입
- 톰캣 설치
-
라이브러리 추가할 때 compile 은 개발하는 동안만 쓰는거고 implementation은 고객사에 같이 딸려나가는 것
- 서블릿
- 리퀘스트와 리스판스 두개의 파라미터를 가진다.