자바스크립트 - 함수안에 함수 가능. - 클로저 개념
함수 여러개의 뎁스구조로 되어있으면 그 뎁스구조만큼 클로저가 생긴다.
지역변수 찾고 없으면 클로저 -> 전역변수 순으로 찾음.
세션타이머 - 이렇게 복잡하게 한 이유
1. 라이브러리로 쓸 수 있게 하기
2. 클로저
3. 실행순서 왜 바꿨는지
모달은 부트스트랩건데 부트스트랩이 로드되기전에 모달을 사용해서 오류났었음 -> reday function으로 묶어줌.
useBean
1.<%%>기호 안써도 변수를 선언, 객체 생성해줌
2.그 이후에 해당 객체를 스코프에 넣어줌 - 기본으로 page에 넣음.
먼저 스코프 뒤져서 이름에 해당하는 객체 있으면 그걸 가져오고 없으면 새로 생성해줌
nullpoint가 발생할일이 없음. 오타 발생해도 새로 생성하니까.
jsp에서 nullpoint피해갈 수 있는 첫번째 방법.
너머오는 파라미터중에 property와 같은 이름 있는지 봐서 그걸로 하겠다.
지금은 거의 안씀, 나중에 el하면 이거 쓸일없음.
beanUtils, ibatis - 리플렉션
클라이언트와 웹서버 사이에는 HTTP 프로토콜 규약만 맞추면 브라우저가 뭐든(크롬,파이어폭스..), 서버가 뭐든(아파치, 제우스..) 상관없다.
하지만 웹서버와 DB사이에는 연결이 되는 통로가 DB의 종류에 따라 달라진다.
노란색 부분은 네트워크. => socket, port가 필요하다. DB종류에 따라 port번호가 바뀐다.
=> 서버에서 연결통로를 직접 생성하면 port가 바뀔때마다 소스가 바뀌어야됨. X 그럴 수 없음
그래서 중간에 연결통로가 필요한데 그것이 드라이버이다
DB와 드라이버는 한 세트. DB가 바뀌면 드라이버도 바뀌어야됨. 그래서 드라이버를 DB파일 안에서 가져옴.
이때 서버안에서 드라이버 사용방법을 공통적으로 쓸 수 있어야 한다. 드라이버 사용방법을 정의하고 있는 것을 java.sql 패키지이다.
- connection, statement.. 다 이 패키지 안에 있는 것들!
이 패키지는 사용 방법만을 정의하고 있어서 대부분이 인터페이스로 되어있다. 구현체는 드라이버가 가지고 있다.
드라이버 - 리모컨 역할. 모든 것을 얘한테 명령해서 실행함.
그리고 이렇게 인터페이스를 제공하는 것을 퍼사드패턴(facade)이라고 한다.
오라클 - 클라이언트, 서버있음(다운받을때 나눴던거)
where sqlplus치면 클라이언트가 먼저나옴. 쿼리문이나 명령 실행할때 클라이언트가 먼저 실행됨
클라이언트는 어떤 클라이언트인지 주소 써줘야됨
오라클과 함께 주어진 드라이버들. -> 얘네를 빌드패스에 추가해서 쓰면 되는것.
하지만 지금 메이븐 쓰고 있어서 얘로 추가. 하지만 central repository에 없음. 오라클에서 공개 안함.
-> 다른 커스텀?애들한테서 빌려쓰자.
mvmrepository 사이트에서 jar파일 다운받기
버전 상관없음. 아무거나. 이거 쓰려고 하는게 아니라 이 안의 ojdbc6쓰려고 하는거라
이 다음부터 com - oracle - ojdbc6-버전선택
-> groupId, artifacId, version이 되는것
이클립스 dependency에 추가해준다.
central repository말고 mvm사이트를 새로운 repository로 등록해줘서 여기서도 찾을 수 있게 해줬다.
버추얼머신은 이런 jar파일 있는거 모름. 자기가 원래 가지고 있던게 아니라
->2. 드라이버 클래스 로딩해야됨
1.은 드라이버 다운받은것.
jar 파일의 클래스패스가 라이브러리에 저렇게 되있어서
경로를 이렇게 써 줬던것!
지금 작성하고 있는 소스는 가짜소스! 실제는 work의 jsp servelt에서 만들어지니까. 그래서 SQLException처리 안해도 빨간줄 안생기지만 혹시 모르니까 예외처리 해줌. 그리고 나중에 connection, statement 얘네들 close해야되니까 try-with 구문으로 해줌
db는 커서형태로 가져옴. 그래서 resultSet-set에다 저장한것.(인덱스 없음) 그런데 맨처음에 커서가 컬럼명에 있음->그래서 while문에 rs.next()해준것
그래서 플러그인필요
lombok 사이트에서 플러그인 다운받고 콘솔에서 설치
이클립스 ini파일 열면 이 플러그인 가지고 있어야됨
이클립스에 dependency 추가해준다.
★ 중요!
ToString할때 무조건 쓰지 말고 제외시킬것 잘 보고 해야된다!
위 예제처럼 byte[]이 있는데 만약 1GB라면?
toString 기록하거나 직렬화, 마샬링할때 그것만 하다 끝날 수 있음. 로딩할 때 문제생길 수 있다.
->
Outline보면 getter, setter등 다 만들어져 있음!
lombok은 어떻게 property보고 이런것들 만들까?
lombok - 자바빈규약에 의해 등록함
-> 이 클래스 안에 어떤 프로퍼티 있는지 동적으로 찾을수있어야됨 - 이때 사용하는 기술이 리플렉션
equals - property같으면 같은 객체로 판단하겠다. 없으면 주소값 비교해서 다 다른객체로 나옴.
숙제 - 리플렉션 어떤건지 찾아보기