전체 글
-
JDBC - PreparedStatement 사용servlet/JDBC 2022. 2. 4. 00:25
PreparedStatement 사용 Statement 사용 시 불편한 점을 해결해준다. 또한 속도가 더 빠르다. PreparedStatement pstmt = null; Statement 인터페이스를 상속받는 하위 인터페이스 ResultSet rset = null; SELECT 결과 집합을 받아올 용도의 인터페이스 pstmt = con.prepareStatement("SELECT EMP_ID, EMP_NAME FROM EMPLOYEE WHERE EMP_ID = ?"); pstmt.setString(1, empId); Statement 인터페이스와는 달리 PreparedStatement 인터페이스는 생성 시 쿼리문도 전달 위치홀더에 해당 값을 setString(위치홀더인덱스, 변수)로 세팅 (위치홀더인덱..
-
JDBC - Statement 사용servlet/JDBC 2022. 2. 3. 23:14
Statement 사용 Statement stmt = null; 쿼리문을 저장하고 실행하는 기능을 하는 용도의 인터페이스이다. ResultSet rset = null; SELECT 결과 집합을 받아올 용도의 인터페이스이다 stmt = con.createStatement(); Connection 인스턴스를 이용하여 Statement 인스턴스를 생성한다. rset = stmt.executeQuery("SELECT EMP_ID, EMP_NAME FROM EMPLOYEE"); 수행할 쿼리를 Statement 인스턴스의 executeQuery 메서드를 이용하여 결과 집합을 얻어온다. while(rset.next()) { System.out.println(rset.getString("EMP_ID") + ", " +..
-
Oracle JDBC 사용 방법servlet/JDBC 2022. 2. 3. 22:30
JDBC 란? JDBC(Java DataBase Connectivity)란 자바에서 데이터베이스에 접근할 수 있게 해주는 Programming API 이다. Oracle JDBC 오라클 JDBC 라이브러리 ojdbc8 다운 https://www.oracle.com/database/technologies/appdev/jdbc-ucp-18-15-downloads.html Charactoer Set 설정 문자 인코딩 방식이 맞지 않으면 해당 문자가 제대로 출력되지 않으므로 이클립스 작업 파일에 대한 문자셋을 UTF-8로 일치시켜야 한다. 따라서 다음과 같이 Window->Preferences에서 다음과 같은 설정을 해준다. 기본 문자 인코딩 JDBC 사용 클래스 DriverManger - 데이터 원본에 JDB..
-
Spring MVC - 타임리프(Thymeleaf) 템플릿 조각과 레이아웃 (th:fragment, th:insert, th:replace)Spring/Spring MVC 2022. 2. 3. 14:25
타임리프(Thymeleaf) 템플릿 조각과 레이아웃 웹 페이지를 개발할 때는 공통 영역이 많이 들어있다. 예를 들어 상단 메뉴, 하단 홈페이지 정보, 좌측 카테고리 등 여러 페이지에서 공통으로 사용하는 영역들이 있다. 이런 공통 영역 부분들을 페이지마다 코드 작성을 하면 코드 중복이 일어나고, 수정을 하면 공통 영역을 사용하는 모든 페이지를 각각 수정해야 하는 번거로움이 생긴다. 타임리프는 이러한 문제를 해결하기 위해 템플릿 조각과 레이아웃 기능을 지원한다. 타임리프(Thymeleaf) 템플릿 조각 일부 코드를 가져와서 사용하는 방법이다. 템플릿 조각을 이용하기 위해 footer.html 파일을 우선 만들어 준다. 푸터 자리 입니다. 파라미터 자리 입니다. 해당 태그들은 다른 HTML 파일에서 th:in..
-
Spring MVC - 타임리프(Thymeleaf) 블록과 자바스크립트 인라인Spring/Spring MVC 2022. 2. 3. 11:25
타임리프(Thymeleaf) 블록 타임리프의 특성상 HTML 태그 안에 기능을 정의해서 사용하여 불편한 점이 있었다. 이러한 불편함을 해결하기 위해 타임리프는 th:block을 제공한다. 아래 코드를 보면 태그가 태그 2개를 감싸고 있다. 태그로 감싸주었기 때문에 첫번째 태그, 두번째 태그가 순서대로 반복문이 실행된다. 만약 태그로 감싸주지 않고 각각의 태그에 반복문을 넣으면 첫 번째 태그의 반복문이 끝나야 두번째 태그의 반복문이 실행되는 결과가 발생한다. User 객체가 3개 저장된 List 컬렉션의 반복 사용자 이름1 사용자 나이1 요약 서버를 가동시켜 웹브라우저에서 HTML의 소스 코드를 보면 다음과 같다. 사용자 이름1 userA 사용자 나이1 10 요약 userA / 10 사용자 이름1 user..
-
Spring MVC - 타임리프(Thymeleaf) 반복 기능(th:each), 조건부 기능(th:if, th:unless, th:switch)Spring/Spring MVC 2022. 2. 3. 10:29
타임리프(Thymeleaf) 반복 기능 타임리프에서 반복은 th:each를 사용하며 반복에서 사용할 수 있는 여러 상태 값을 지원한다. 반복 기능 th:each="변수 : 컬렉션" List, 배열, Iterable, Enumeration을 구현한 모든 객체를 반복에 사용 가능 Map의 경우는 Map.Entry가 변수에 담긴다. User 객체가 3개 저장된 List 컬렉션의 반복 username 0 서버를 가동시켜 웹브라우저에서 HTML의 소스 코드를 보면 다음과 같다. userA 10 userB 20 userC 30 반복 사용되는 여러 상태 값 th:each="변수, 상태변수 : 컬렉션" 자바의 for-each와 비슷하다 두 번째 파라미터를 설정하여 반복의 상태를 확인할 수 있다. 반복 상태를 나타내 주..
-
Spring MVC - 타임리프(Thymeleaf) 리터럴과 연산Spring/Spring MVC 2022. 2. 2. 21:26
리터럴 리터럴은 소스 코드상에서 고정된 값을 말한다. String a = "Hello" int a = 10 * 20 위 코드에서 "Hello"는 문자 리터럴, 10, 20은 숫자 리터럴이다. 타임리프 문자 리터럴 문자 리터럴 문자 리터럴은 항상 '(작은 따옴표)로 감싸야 한다. 공백 없는 문자 리터럴은 하나의 토큰으로 인지되어 작은 따옴표 생략 가능하다 "hello" -> 작은 따옴표 생략 가능, "hello world" -> 작은 따옴표 생략 불가능 'hello' + ' world!' = 'hello world!' = 'hello ' + ${data} = 서버를 가동시켜 웹브라우저에서 HTML의 소스 코드를 보면 다음과 같다. 'hello' + ' world!' = hello world! 'hello ..
-
Spring MVC - 타임리프(Thymeleaf) URL 링크 표현식Spring/Spring MVC 2022. 2. 2. 19:42
타임리프(Thymeleaf) URL 링크 표현식 타임리프에서 URL을 표현할 때는 @{ 링크 } 표현식을 사용하면 된다. @{/....} : 절대 경로, ex) @{/hello} @{ ... } : 상대 경로, ex) @{hello} 단순 URL @{/hello} -> /hello ex) 단순 URL 쿼리 파라미터를 포함한 URL @{/hello(param1=${param1}, param2=${param2})} -> /hello?param1=data1¶m2=data2 ex) 쿼리 파라미터 포함 URL 경로 변수가 포함된 URL @{/hello/{param1}/{param2}(param1=${param1}, param2=${param2})} -> /hello/data1/data2 ex) 경로 변..