You are using an outdated browser. Please upgrade your browser to improve your experience.

11/5

high cohesion

하나의 모듈이 하나의 기능을 수행하게 하는 것 - 목적이 분명하도록 작성한 메서드나 클래스는 신뢰도가 높고, 재사용과 코드를 이해하기 쉽다.

반대로 한 개의 메서드나 클래스가 여러 기능이나 역할을 수행한다면

유지보수나 재사용이 어렵고 코드를 이해하기도 힘들다.

자바프로젝트 38-c

contextinitilized()가 호출될 때 Connection객체를 생성하여 context맵에 담는다.

contextdestroyed()가 호출될 때 connection객체를 닫는다.

Impl구현체들 모두 connection으로 바꿔주었다.

자바프로젝트 38-d

트랜젝션 다루기 : 트랜젝션을 다루기 위해 commit과 rollback을 사용하는 걸 연습하기

트랜젝션이 필요한 상황과 이유 이해하기

주문정보+결제정보가 하나로 묶여야만 주문정보가 유효하다. 근데 트랜젝션을 걸지 않으면 결제가 실패했음에도 주문이 들어가는 상황이 발생할수있다는것

여러개의 작업이 모두 성공해야만 하나의 작업으로 수행되었다고 여겨지는 경우를 트랜젝션이라고 한다.

insert, update, delete 중요한 3가지 작업

여러개의 작업을 한 단위로 묶어서 모두 다 성공했을 때 그 작업 결과를 실제 테이블에 적용하고 아니라면 그 전 작업을 모두 취소하는 것을 트랜젝션이라고 한다.

엔터프라이즈 프로그램에서는 트랜젝션이 선택이 아닌 필수

login-out구현하기!!

우리가 한건 이미 서블릿 프로그램이다. 눈치채지 못한사이 이미 배웠다..


기술스택 유저페이지 왼쪽에 보이게 하기

프로필에 sns링크걸기

재직중인곳/재학중인곳


11/6 로그아웃

고객에게 질문하지말고 해결방안 제시하기

맵객체에서 로그인되었던 유저를 꺼내 remove()시킨다.

로그인 조건식 : App클래스에서 처리한다.

if(inputStr.equalsIgnoreCase("/login") || context.get("loginUser") != null ) {
                  command.execute(context);
                } else {
                  System.out.println("로그인이 필요합니다!");
                }

chain of resposibility 디자인 패턴

작업자가 작업을 수행하기 전/후에 기능을 삽입하기가 쉽다.

그렇다고 아무때나 이 디자인 패턴을 쓰지는 않는다!

기존 코드에 손대지 않고 유지보수가 쉬워진다.

기존의 App클래스에 로그인 유효성 검사여부와 파일입출력 관련 코드를 사이사이에 추가하다보니 알아보기 힘들어지고 앞으로도 이런 일이 일어날 가능성이 생긴다. 그래서 디자인 패턴을 적용한다. (그림참고)

LogCommandFilter에서 close()를 호출해주니까 제일 처음에 입력한 한문장만 저장이 되던데

이걸 CommandFilter인터페이스에 초기화와 마무리에 돤련된 규칙을 추가해서 해결한다.