2020-12-10

jsbak·2020년 12월 10일
0


Closure : 클로저 하나의 블럭 함수가 실행될때 변수하나가 실행될때 이벨리에이션 지역변수를 찾는데 지역변수가 없다면 나랑 가장 가까운 블럭을 가지고 찾는다. 그래서 sessionTimer에서 찾은 것
가장 가까운 블럭을 Closure라고 하는 것?

id가 하나 뿐이어야하니까 동적으로 id를 바꿔야한다.

밀리 세컨드를 활용하는 방법 계속 붙여준다.
현재 도큐먼트에서 모달의 갯수를 미리 세어두고 그 뒤에 인덱스를 붙이는 것
우리는 밀리세컨드를 이용

자바 스크립트에서는 변수의 스코프가 한가지가 아니다.
함수안에 함수라는 또다른 객체가 존재가능하기 때문에 스코프가 중요하다.

이렇게 코드를 복잡하게 짜본이유
1. 어떻게 자바스크립트 코드를 라이브러리화 시킬 것인가
2. 클로저가 뭔지
3. 시연 시간을 뒤로 미뤄야하는 이유가 뭔지
4. 모듈화

커스텀태그를 사용하기 위해서는?
1. 라이브러리 jar파일이 필요
2. 사용하기 위해서 태그 lib 라는 지시자 필요
3. prefix를 이용해서 사용할 수 있다.

동적 include에서 include시점은 런타임
런타임의 실행결과를 가져오는 방식 동적 include

정적 include 최초의 요청에 의해서 서블릿에 의해 파싱이 될때 소스자체가 병합이 되었다. 소스자체를 집어 넣어서 사용했기 때문에 include된 페이지의 변수가 마치 글로벌 변수인것 처럼 사용할 수 있다.

include-prelude 앞에서 포함.

include-prelude는 url-pattern 이거 뒤에 와야한다.

jsp:useBean

스크립틀릿을 사용하지 않고도 변수선언 객체생성 할 수 있다.
해당 객체를 스코프 영역에 넣어주는 것까지 해준다.
기본은 페이지 scope="page"
영리하다는데? 무조건 생성하는건 아니고 스코프를 뒤지고 해당하는 녀석이 존재한다면 그걸 가져오고 그다음에 없으면 생성한단다.

<jsp:useBean id="today" class="java.util.Date" scope="request"></jsp:useBean>
Date today = (Date)request.getAttribute("today");
	if(today==null){
	today = new Date();
	request.setAttribute("today", today);
}

jsp:useBean으로 만들면 위처럼 복잡한 과정을 처리해준다. nullPointer도 방지된다. 꺼낼때 오타가 발생해도 nullPointer방지

jsp:getProperty

빈 객체가 가진 getter를 호출
Bean이 가진 Property(속성변수)를 가져올수 있다.
자바빈 규약을 거꾸로 쓰면된다??

<jsp:getProperty property="time" name="today"/>

스크립틀릿이나 표현식을 사용하지 않고도 만들 수 있다.
today의 getTime()해서 가져올 time 프로퍼티의 값을 가져온다.

jsp:setProperty

자바빈 의 set를 거꾸로 추적해서 time이런식으로 가져온다. 이러고 다시 코드가 될떄 자바빈 규약이 다시 적용된다?

<jsp:setProperty property="time" name="today" value="0"/>
<jsp:setProperty property="year" name="today" param="year"/>

year이라는 녀석이 있다면 파싱해서 넣는다.

프로퍼티명과 파라미터명이 동일? 하다는 규칙이 있다?

<jsp:setProperty property="*" name="today"/>

모든 프로퍼티를 점검해서 넘어오는 파라미터가 있다면 잡아서 널겠다.

회원등록 클라데이터 다받았다. getParameter로 다 받는가? 빈 utils
파퓰레이트가 들어 있어서 다 꺼내오기 가능??
키가 파라미터명
useBean Date 타입의 객체의 프로퍼티를 동적으로 추출
이러한 과정을 리플렉션이라한다.
가장 핵심 기술은 리플렉션, 그래서 이걸 수업을 한다는데? ibatis 그래서 이게 어떻게 동작한다는지 의문을 풀거래

오라클 드라이버 찾기?

오라클 home에서
appClient 사용하기 위해서 가지고 있는 녀석
다른 티어에 있는 서버에 접근하기 위해서 사용하는 녀석
클라이언트가 먼저 잡히기 때문에 아래처럼 바로 접근하려면 오류가 난다. 그래서 '@주소' 를 추가해야지 접근 가능하다.

오라클에서는 센트럴 레퍼지토리에 드라이버를 공개하지 않음 그래서 누가 받아 놓은것을 이용

https://mvnrepository.com/ 검색어 : ojdbc jahia


주소 카피

pom.xml에 추가

pom.xml에 dependency 추가

1단계 드라이버 찾아서 추가
2단계 드라이버 클래스 로딩
클래스(Class 클래스)의 forname() ()안에 오라클.~ 하드코딩?!
oracle.jdbc.driver.OracleDriver

DB와 연결시 공통적인 프로토콜이 없고 어떤 DB가 와도 변경하지 않게 써야한다. 이럴때 필요한게 드라이버
드라이버의 사용법이 공통적이어야한다. 이게 SQL사용법이 되는 것이다. SQL 클라이언트에 존재하는 것 (인터페이스, 구현체를 가지고 있지 않다.) 실제 구현체는 드라이버가 가지고 있다( 퍼사드 패턴, 그리고 그 구현하는 역할을 하는 녀석을 '퍼사드'라고한다. 다 똑같이 생기고 다 같다. 그래서 그 퍼사드인 녀석만 사용할 줄 알면된다. )

드라이버를 사용방법만 정의 다 똑같아야하기 때문에 그래서 java.sql 패키지는 다 인터페이스 이고 이런 방식을 다 퍼사드 패턴이라고한다.
구현체는 드라이버

예)
리모컨 찾아옴
너한테 이런 버튼있어?
대상과의 커넥션

select * 
from database_properties;

데이터 베이스 버전을 확인

롬복(lombok)

검색어 : projectlombok
jar파일 lombok플러그인 다운로드

lombok pom.xml에서 디펜던시 추가

플러그인 추가



확인

어떻게 롬복이 getter/setter을 만들어 줄까
자바빈 규약으로 만들어진다. 프레임워크를 만들수 있는 것은 규약이 있기 때문에
롬빅이 getter/setter를 만들기 위해서는 동적으로 프로터티를 찾는데 이 기술이 리플렉션

어노테이션 종류 3가지

마커 어노테이션 ex) @Getter 마커
싱글벨류 어노테이션 ex) @Setter("") 싱글벨류
멀티벨류 어노테이션 ex) @EqualsAndHashCode()

과제 롬복의 리플렉션 기술알아보기, UI가 만들어지게 해보기 ??

profile
끄적끄적 쓰는곳

0개의 댓글