1. JSP Foundation

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)으로 많이 개발을 하고 있을까?