티스토리 뷰
365페이지에서
create user 'jspexam'@'%' identified by 'jsppw';
부분만 쿼리 실행에 실패를 한다.ㅡㅡ
어차피 '%' 부분이 호스트이니
localhost는 성공 했으니 상관 없겠지??
---------------------------------------------------------------------5/13
jdbc는 java database connectivity
자바에서 데이터베이스와 관련된 작업을 처리할 때 사용하는 api
자바는 dbms의 종류에 상관없이 하나의 jdbc api를 사용해서 데이터베이스 작업을 처리할 수 있다.
jdbc 드라이버는 WEB-INF/lib 폴더에 넣으면
Java Resources > Libraries > Web App Libraries에 자동으로 추가된다.
리스트 14.1 실습 오류
javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0 (unable to load class com.mysql.jdbc.Driver)
이런거 뜨는데 jdbc 드라이버 버전의 차이인거 같다.
난 mysql을 최신버전으로 설치해서 mysql-connector-java-8.0.11.jar이었고
교재는 이전버전인 mysql-connector-java-5.1.35-bin.jar이었다.
뒤어 bin붙은 것도 큰 차이인진 잘 모르겠다...
여튼 인터넷에서 mysql-connector-java-5.1.46-bin.jar을 다운받아 실행하니
해결되었다.
jdbc다운 링크 : https://dev.mysql.com/downloads/file/?id=476198
---------------------------------------------------------------------5/20
executeQuery(String query) : select 쿼리를 실행하며 반환타입은 ResultSet
executeUpdate(String query) : insert, update, delete 쿼리를 실행하며 결과로 변경된 레코드 개수를 반환한다.
스트림에서 데이터를 읽어와 버퍼에 저장하기
while( (len = reader.read(ch)) != -1 ) {
buff.append(ch, 0, len);
}
read(ch) : ch[]의 크기만큼 읽어 buf에 저장하고 길이를 반환한다.
>>>>>>>>??
PreparedStatement 사용이유
- 값 변환을 자동으로 하기 위해
- 간결한 코드를 위해
예)
statement
1 | stmt.executeQuery("select U from member where name = '" + "최'범균".replaceAll("'", "''") + ("' "); | cs |
preparedstatement
1 2 | pstmt = conn.prepareStatement("select * from member where name = ?"); pstmt.setString(1, "최'범균"); | cs |
System.out.print() : 이클립스 콘솔에 출력
out.print() : 웹 화면에 출력
---------------------------------------------------------------------5/22
jdbc드라이버를 웹 어플리케이션이 시작할 때 로딩하면 매번 페이지에서 로딩할 팔요가 없다.
커넥션 풀
데이터베이스와 연결된 커넥션을 미리 만들어 풀 속에 저장해 두고 있다가 필요할 때 커넥션을 풀에서 가져다 쓰고 다시 풀에 반환하는 기법
jdbc드라이버와 마찬가지로 웹 어플리케이션이 시작할 때 로딩해 준다.
오픈 소스 프로젝트인 DBCP API를 사용한다.(http://commons.apache.org)
- commons-dbcp2-2.1.jar
- commons-pool2-2.4.1.jar
- commons-logging-1.2.jar
커넥션 풀의 특징
- 커넥션을 생성하는데 드는 연결 시간을 줄일 수 있다.(실행속도 향상)
- 커넥션을 재사용함으로서 생성되는 커넥션 수가 일정하게 유지된다.(동시 접속자 수가 몰려도 웹 어플리케이션이 쉽게 다운되지 않음)
---------------------------------------------------------------------5/26
14장 실습 코드
https://github.com/KihyunLim/chap14.git
'jsp' 카테고리의 다른 글
chap16 커스텀 태그 만들기 (0) | 2018.06.09 |
---|---|
chap15 웹어플리케이션의 일반적인 구성 및 방명록 구현 (0) | 2018.06.03 |
chap12 표준 태그 라이브러리(JSTL) (0) | 2018.05.13 |
chap11 표현언어(EL) (0) | 2018.05.07 |
chap10 세션 (0) | 2018.05.07 |
- Total
- Today
- Yesterday
- application context
- java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
- 검색
- NoClassDefFoundError
- JoinPoint
- Controller
- setter 인젝션
- SqlSessionFactoryBean
- postHandler
- servlet context
- 의존성
- XmlWebApplicationContext
- LoggingEvent
- afterCompletion
- multiple SLF4J bindings
- @Autowired
- blocking
- 어노테이션
- aspect oriented programming
- handlermapping
- 횡단 관심
- preHandler
- Class path contains multiple SLF4J bindings
- ViewResolver
- exclude-mapping
- 스프링 컨테이너
- #java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent삭제
- 의존성 주입
- aop
- 컨트롤러
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |