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:태그이름>으로 시작하는 태그들

JSTL
  • 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
  • 객체지향 개념을 이용한 설계 방법 중 하나
  • 구성 요소들을 역할에 따라 모델, 뷰, 컨트롤러로 분류
  • 구성 요소들을 역할에 따라 분류하여 개발 과정과 유지보수 및 재사용이 쉽도록 하는 방법
  • 모델: 비즈니스 로직의 처리를 담당
  • 뷰: 사용자가 보는 화면 처리를 담당
  • 컨트롤러:  사용자와의 인터페이스와 프로그램 전체의 흐름 제어를 담당

MVC 패턴 처리 과정
  • 사용자의 요청은 컨트롤러에 전달
  • 컨트롤러는 적당한 모델을 선택하여 비즈니스 로직의 처리를 맡김
  • 모델의 처리가 끝나면 결과를 컨트롤러에게 전달
  • 컨트롤러는 사용자에게 보여 줄 뷰 선택
  • 뷰는 사용자에게 처리 결과를 전송

MVC 패턴과 JSP
  • 모델: 자바빈
  • 뷰: JSP 페이지
  • 컨트롤러: 서블릿

커맨드 패턴
  • 커맨드별로 비즈니스 로직을 처리하는 독립적 클래스 작성
  • 요청별로 독립적 처리를 수행하는 객체 사용
  • 커맨드 처리 클래스들은 공통의 인터페이스를 가짐

댓글

가장 많이 본 글