JSP - 8
- 데이터를 모아 놓은 집합소
- DBMS는 관계형 데이터데비스 관리 시스템으로 데이터베이스의 효과적 관리를 위한 응용 소프트웨어를 말함
- 관계형 DBMS에서는 데이터를 테이블 형태로 저장
- 데이터베이스는 여러 테이블로 구성
- 한 개의 테이블은 여러 레코드로 구성(like 행)
- 자료의 구조, 자료 간의 관계에 대한 정의
- 테이블 구조, 테이블을 구성하는 속성들에 대한 정보를 스키마(scheme)라고 부름
show databases;
데이터베이스 목록 보여주기
create database 데이터베이스이름;
데이터베이스 생성
use 데이터베이스이름;
사용할 데이터베이스 선택
show tables;
현재의 데이터베이스에 대한 테이블 목록 보여주기
drop database 데이터베이스이름;
데이터베이스 삭제
create table 테이블이름 스키마;
테이블 생성
drop table 테이블이름;
테이블 삭제
insert into 테이블이름 values(값1, 값2, ...);
테이블에 데이터 추가
select 속성이름 from 테이블이름;
select 속성이름 from 테이블이름 where 조건;
데이터 검색
update 테이블이름 set 속성 = 값 [where 조건];
데이터 수정
delete from 테이블이름 [where 조건];
데이터 삭제
sql 프로그래밍
① JDBC 드라이버 로드
② MySQL 서버 연결
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://서버주소:3306/db이름", user, pw);
③ select 구문을 실행하여 결과 리턴
Statement stmt = con.CreatStatement();
ResultSet rs = stmt.executeQuery("select 속성이름 from 테이블이름");
rs.next();
④ 리턴받은 결과 출력
out.print(rs.getString("속성이름"));
⑤ 서버 연결 종료
PreparedStatement 인터페이스
- PreCompiled SQL 문을 표현
- SQL 문을 여러 번 실행할 때 효율적
- SQL 문에 매개 변수를 사용하고, 실행 전에 값 지정 가능
String query = "insert into member values(?, ?, ?, ?, ?)";
PreparedStatement pstmt = con.prepareStatement(query);pstmt.setString(1, id);pstmt.setString(2, pw);pstmt.setString(3, name);pstmt.setString(4, phone);pstmt.setString(5, hobby);pstmt.executeUpdate();
ResultSet 인터페이스
- Statement 객체의 executeQuery() 메서드가 리턴하는 객체
- select 구문의 실행 결과를 다룰 때 사용
- 실행 결과를 나타내는 테이블로 볼 수 있음
- select 구문을 실행하여 ResultSet 객체가 생성되면 커서가 만들어지고, select 구문 실행 결과를 가리킴
ResultSet rs = stmt.executeQuery("select * from member");
while(rs.next()) {
out.print(rs.getString("id"));
out.print(rs.getString("pwd"));
out.print(rs.getString("name"));
out.print(rs.getString("phone"));
out.print(rs.getString("hobby"));
}
표현 언어
- JSP 2.0에서 추가된 간결한 수식 언어
- 표현식 <%= %>를 대신할 수 있고, JSP 페이지에서 스크립트의 사용을 줄여 줌
- page, request, session, application 영역에서 등록된 변수를 평가
- 찾을 수 없다면 null 반환
<%= request.getParameter("id") %>${param.id}${param['id']}${param["id"]}
<%= pageContext.getAttribute("name") %>
${name}
<%= name %>
<jsp:getProperty name="customer" property="address") />
${customer.address"}
표준태그
- JSP에서 제공되는 표준 태그
- 표준 액션 태그
- JSP 페이지의 실행 중에 특별한 액션 수행
- <jsp:태그이름>으로 시작하는 태그들
- JavaServer Pages Standard Tag Library
- 자주 사용하는 커스텀 태그들을 모은 것
- 하나로 표준화된 커스텀 태그들의 집합
- ex) for문, if문...
<%@ page contentType="text/html; charset=EUC-KR" %><%@ taglib prefix="ctag" uir="http://java.sun.com/jsp/jstl.core %><html><body><ctag:forEach var="i" begin="1" end="100"><ctag:if test=${i % 2 == 0}">${i}는 짝수<br></ctag:if><ctag:if test=${i % 2 != 0}">${i}는 홀수<br></ctag:if></body></html>
JSTL 코어 라이브러리
${ : 즉시 값을 계산하여 변수에 저장
#{ : 변수가 사용될 때 값을 계산
① 변수 처리(set: 표현 언어 변수로 사용할 변수 이름과 값 지정, remove: <c:set> 태그로 설정된 변수 삭제, scope 지정하지 않으면 모든 영역에서 삭제)
② 흐름 제어(if, choose: switch와 같은 구조, forEach, forTokens: items에 저장된 문자열을 delims에 지정된 구분자로 나눈 후 변수에 저장)
③ URL 처리(import, redirect: 속성 url에 지정된 페이지로 이동시키는 태그, url: value 속성에 지정한 페이지를 속성 var 변수에 저장하는 태그)
④ 기타(catch: 예외 정보를 value 속성에 지정된 변수에 저장, out: 속성 value에 지정된 문자열 출력)
MVC 패턴
- Model-View-Controller
- 객체지향 개념을 이용한 설계 방법 중 하나
- 구성 요소들을 역할에 따라 모델, 뷰, 컨트롤러로 분류
- 구성 요소들을 역할에 따라 분류하여 개발 과정과 유지보수 및 재사용이 쉽도록 하는 방법
- 모델: 비즈니스 로직의 처리를 담당
- 뷰: 사용자가 보는 화면 처리를 담당
- 컨트롤러: 사용자와의 인터페이스와 프로그램 전체의 흐름 제어를 담당
- 사용자의 요청은 컨트롤러에 전달
- 컨트롤러는 적당한 모델을 선택하여 비즈니스 로직의 처리를 맡김
- 모델의 처리가 끝나면 결과를 컨트롤러에게 전달
- 컨트롤러는 사용자에게 보여 줄 뷰 선택
- 뷰는 사용자에게 처리 결과를 전송
- 모델: 자바빈
- 뷰: JSP 페이지
- 컨트롤러: 서블릿
- 커맨드별로 비즈니스 로직을 처리하는 독립적 클래스 작성
- 요청별로 독립적 처리를 수행하는 객체 사용
- 커맨드 처리 클래스들은 공통의 인터페이스를 가짐
댓글
댓글 쓰기