Understanding HTTP
- Http Uses TCP/IP
- 요청(request)와 응답(response)가 HTTP의 핵심
- HTTP 요청의 구성 : 헤더, 폼데이타, 두 종류 있다.(GET - 서버로 부터 데이터를 가져올 때 사용, POST - 서버에 데이터를 추가/수정 할 때 사용)
- HTTP 응답의 구성 : 컨텐츠 타입, 길이, HTTP 버전. 상태코드

Servlet & JSP
- 쓰레드 기반의 Servlet 만들었으나 HTML 출력하기 불편함
- 그리하여 JSP 만들었으나 자바 코드랑 섞여 있어서 디자인 요소랑 분리하고파짐

Web Appication Development 패턴
- Servlet 모델 :: 전부 서브릿으로
- 모델 1 :: 전부 JSP 로
- 모델 2 :: 서브릿(C), JSP(V)에 역할 나눠서 MVC 패턴 구현

Larning JSP Basics
- JSP 페이징 처리 과정 :: 맨 처음 요청 들어오면 JSP 페이지를  Servlet Java 코드로 변환한 뒤 컴파일 하여 class 파일 만들어서 그 클래스파일 로딩해서 처리하는데, 그 다음 요청 부터는 JSP 페이지가 바꼈는지 확인하고 바꼈으면 위에 과정 반복하고 아니면 그냥 처리.
- 라이프 사이클 메서드 :: jpsInit(), _jspService(). jspDestroy() 순으로 호출 되지만 _가 앞에 붙은 메소드는 오버라이딩 금지.(요 부분이 JSP 에서 Servlet 코드로 바뀔 때 만들어 지는 부분이니까 충돌 납니다.)

JSP 페이지 구조
- Direntives
    - <%@ page import="" extends="" buffur="" autoflush="" %>
    = <jsp:directive.page import="" extends="" buffur="" autoflush="" />
    - <%@ include file="" %>
    = <jsp:directive.include file="" />
- Declarations
    - visibal to the rest of the page
    - <%! int balance = 0; %>
    - <jsp:declaration> int balance = 0; </jsp:declaration>
- Scriptlets
    - 요 부분이 _jspService() 에 들어가게 됨
    - <%    %>
    - <jsp:scriptlet> </jsp:scriptlet>
- Expressions
    - <%= %>
    - <jsp:expression> </jsp:expression>

EL 사용하기
- ${변수명.속성명}

JSTL 사용하기
- http://epro.tistory.com/79

1장 소스코드
- 테스트 데이터 넣을 DDL들
[#M_ more.. | less.. | INSERT INTO customer(id, lname, fname, age, sex, married, children, smoker)
VALUES (1, 'Smith', 'Jane', 26, 'F', 'Y', 2, 'N');

INSERT INTO customer(id, lname, fname, age, sex, married, children, smoker)
VALUES (2, 'Doe', 'John', 47, 'M', 'N', 0, 'Y');

INSERT INTO customer(id, lname, fname, age, sex, married, children, smoker)
VALUES (3, 'Johnson', 'Michael', 36, 'M', 'Y', 0, 'N');

INSERT INTO customer(id, lname, fname, age, sex, married, children, smoker)
VALUES (4, 'Brooks', 'Susan', 24, 'F', 'N', 1, 'Y');

INSERT INTO customer(id, lname, fname, age, sex, married, children, smoker)
VALUES (5, 'Inman', 'Bernard', 34, 'M', 'N', 0, 'N');

INSERT INTO product (id, description, base, lt30, lt50, gt50, m, f, married, children, smoker)
VALUES (1, 'Preferred Healthcare', 75.00, 1.0, 1.1, 1.3, 1.1, 1.2, 1.8, 1.4, 1.2);

INSERT INTO product (id, description, base, lt30, lt50, gt50, m, f, married, children, smoker)
VALUES (2, 'Premium Healthcare', 65.00, 1.0, 1.1, 1.3, 1.1, 1.2, 1.8, 1.4, 1.2);

INSERT INTO product (id, description, base, lt30, lt50, gt50, m, f, married, children, smoker)
VALUES (3, 'Value Healthcare', 50.00, 1.0, 1.1, 1.3, 1.1, 1.2, 1.8, 1.4, 1.2);

_M#]- JSP 코드
[#M_ more.. | less.. | <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql_rt" %>
<sql:setDataSource
    var="datasource"
    driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/quoting?useUnicode=true&amp;chracterEncoding=UTF-8"
    user="jedi"
    password="jedi"
/>

<sql:query var="customers" dataSource="${datasource}">
    SELECT * FROM customer
</sql:query>

<html>
    <head>
        <title>Insurance Quoting System</title>
    </head>
    <body>
    <font face="Arial" />
    <table width="550" border="0" align="center">
    <tr>
        <td bgcolor="#006633">
        <div align="center">
            <font size="6" color="#FFFFFF">
                <b>Insurance Quoting System</b>
            </font>
        </div>
        </td>
    </tr>
    <tr>
        <td>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p align="center"><b>Customers</b></p>
            <table width="350" border="0" align="center">
            <c:forEach items="${customers.rows}" var="row">
            <tr>
                <td width="20"><c:out value="${row.id}" /></td>
                <td width="70"><c:out value="${row.lname}" /></td>
                <td width="70"><c:out value="${row.fname}" /></td>
                <td width="40">
                    <a href="custMaint.jsp?id=${row.id}"&action=edit">edit</a>
                </td>
                <td width="40">
                    <a href="custMaint.jsp?id=${row.id}"&action=delete">delete</a>
                </td>
                <td width="110">
                    <a href="custMaint.jsp?id=${row.id}"&action=newQuote">new quote</a>
                </td>
            </tr>
            </c:forEach>
            </table>
        </td>
    </tr>
    <tr>
        <td>
            <p>&nbsp;</p>
            <p align="center"><a href="custMaint.jsp?action=add">New Customer</a></p>
        </td>
    </tr>
    </table>
    </body>
</html>_M#]- 화면
사용자 삽입 이미지
느낀점 & 궁금증
- 코드가 DB 접근, 내용과 표현이 결합으로 인해 정신없슴.
- 어디서 에러가 날지 두려움.
- DB, 디자인, 자바코드 모두 알고 있어야 개발 가능.
- 아직도 이런 방법(모델1)으로 많이 개발을 하고 있을까?