1.12k likes | 1.39k Views
Java web Programming. 목차. 1 일차 : 개발환경구축 / 기본구성요소 / 내장객체 2 일차 : 쿠키와 세션 / 자바 빈 활용 3 일차 : JDBC 와 방명록 4 일차 : 서블릿 과 MVC 패턴 5 일차 : 커스텀 태그 / EL / JSTL. 웹 어플리케이션이란 무엇인가 ?. 웹을 기반으로 실행되는 어플리케이션 웹 브라우저를 사용해서 어플리케이션 실행 즉 , 웹 어플리케이션은 누구나 운영체제 (OS) 또는 플랫폼에 상관없이
E N D
목차 1일차 :개발환경구축 / 기본구성요소 / 내장객체 2일차 : 쿠키와 세션 / 자바 빈 활용 3일차 : JDBC와 방명록 4일차 : 서블릿 과 MVC 패턴 5일차 : 커스텀 태그 / EL / JSTL JSP 2.0 Programming
웹 어플리케이션이란 무엇인가? • 웹을 기반으로 실행되는 어플리케이션 • 웹 브라우저를 사용해서 어플리케이션 실행 • 즉, 웹 어플리케이션은 • 누구나 • 운영체제(OS) 또는 플랫폼에 상관없이 • 웹 브라우저만 설치되어 있으면 • 실행할 수 있는 프로그램이다. [웹 어플리케이션이 생성한 화면] JSP 2.0 Programming
웹 어플리케이션의 구성 오늘날 전형적인 웹 어플리케이션의 구성도 웹브라우저가 웹서버에 필요한 정보를 요청함 데이터베이스 웹 서버 어플리케이션 서버 웹서버는 결과를 웹브라우저에 보냄 웹브라우저 JSP 2.0 Programming
웹 어플리케이션의 처리 순서 ①웹 브라우저는 웹 서버에 어떤 기능을 원하는 지 요청한다. 요청 웹 서버 웹 어플리케이션 처리 응답 ② 웹 서버는 웹 어플리케이션을 실행하여 웹 브라우저가 요청한 기능을 수행한후, 결과를 웹 브라우저에 응답한다. ③웹 브라우저는 웹 서버로부터의 응답 결과를 출력한다. JSP 2.0 Programming
두가지 처리 방식: CGI vs 어플리케이션서버 직접 실행 어플리케이션 서버 사용 요청 웹 서버 펄 프로그램 요청 웹 서버 프로그램 어플리케이션 서버 프로그램 C 프로그램 프로그램 매 요청마다 로딩 한번만 로딩해서 모든 요청을 처리 A프로그램 실행 웹 서버 어플리케이션 서버 A프로그램 실행 웹 서버 A프로그램 실행 처리량 높음! A프로그램 실행 A프로그램 실행 A 프로그램 실행 JSP 2.0 Programming
두가지 코드 방식: 실행코드 vs 스크립트 코드 개발의 편리함 실행방식의 차이 실행 코드 방식의 경우 웹 브라우저 요청 전송 웹 서버 요청 받음 프로그램 실행 스크립트 방식의 경우 웹 브라우저 요청 전송 웹 서버 요청 받음 스크립트코드 번역 번역된 코드실행 JSP 2.0 Programming
JSP란 무엇인가? • JavaServer Pages의 약자 • 자바 언어를 기반으로 하는 스크립트 언어 • 자바의 장점을 그대로 활용 가능 • HTML, XML 등 웹 서비스와 관련된 문서를 생성 • 서블릿/EJB 등 엔터프라이즈 기술과 잘 융합됨 • 표현언어, 표현식, 스크립트릿 등을 이용한 쉽게 웹 어플리케이션 개발 가능 JSP 2.0 Programming
J2EE와 JSP • JSP는 J2EE 1.4의 한 부분 • 엔터프라이즈 어플리케이션의UI 부분을 담당 JSP 2.0 Programming
JSP를 선택하는 이유!! 플랫폼 독립적 배우기 쉬움 JSP 빠른 개발 EJB와 완벽한 조화 자바 & 객체지향 JSP 2.0 Programming
웹 콘테이너(Web Container) • 웹 어플리케이션을 실행할 수 있는 서버 프로그램 • 자바의 웹 콘테이너: JSP와 Servlet을 지원 웹 콘테이너 JSP 콘테이너 서블릿 콘테이너 JSP 2.0 Programming
JSP 실행 환경 구축 • 자바 가상 머신 - JDK1.4 • 웹 콘테이너 - Tomcat, Resin, WebLogic JSP 2.0 Programming
JSP 예제 Example JSP page 디렉티브 JSP 페이지의 특성 지정 <%@ page contentType="text/html; charset=euc-kr" %> <%@ page import="java.util.Date" %> <% Date nowTime = new Date(); %> <html> <head><title>리스트1.1</title></head> <body> 현재 시간은 <%= nowTime %> 입니다. </body> </html> 스크립트릿(scriptlet) 웹브라우저 요청 처리에 필요한 자바 코드 실행 표현식(expression) 값을 출력 JSP 2.0 Programming
JSP의 기본 코드 구성 JSP Code <%@ page contentType = "text/html; charset=euc-kr" %> <html> <head> <title>HTML 문서의 제목</title> </head> <body> <% String bookTitle = "JSP 기초"; String author = "최범균"; %> <b><%= bookTitle %></b>(<%= author %>)입니다. </body> </html> 디렉티브 JSP 페이지에 대한 정보를 표시 스크립트요소 HTML 문서를 생성하는 데 필요한 데이터를 생성 및 출력하는데 사용 텍스트 일반 HTML 문서 JSP 2.0 Programming
JSP의 구성 요소 • 디렉티브 (Directive) • 스크립트 (Script): • 표현식(Expression),스크립트릿(Scriptlet), 선언부(Declaration) • 표현 언어 (Expression Language) • 기본 객체 (implicit object) • 정적인 데이터 (텍스트 HTML 코드) • 액션 태그 (Action Tag) • 커스텀 태그 (Custom Tag) JSP 2.0 Programming
디렉티브 (Directive) "디렉티브는 JSP 페이지에 대한 설정 정보를 지정할 때 주로 사용" Syntax <%@디렉티브이름 속성1="값1" 속성2="값2" ... %> Example <%@ page contentType = "text/html; charset=euc-kr" %> JSP 2.0 Programming
디렉티브 종류 * JSP 1.1 버전부터 호환 * JSP 2.0에는 태그 파일에서 사용할 수 있는 디렉티브 추가 JSP 2.0 Programming
스크립트 요소 "JSP에서 실시간으로 문서의 내용을 생성하기 위해 사용되는 것이 스크립트 요소" • 표현식(Expression) - 값을 출력한다. • 스크립트릿(Scriptlet) - 자바 코드를 실행한다. • 선언부(Declaration) - 자바 메소드(함수)를 만든다. • JSP를 스크립트 언어라고 부르는 이유가 바로 막강한스크립트 기능을 제공해주기 때문이다. JSP 2.0 Programming
기본 객체 (Implicit Object) • 웹 어플리케이션 프로그래밍을 하는 데 필요한 기본적인 기능을 제공 • request, response, session, application, page 등 다수의 기본 객체가 존재 • request 기본 객체, session 기본 객체, response 기본 객체를 주로 사용 JSP 2.0 Programming
표현 언어 (Expression Language) • JSP 2.0에 새롭게 추가된 기능으로서 • 스크립트 요소를 사용하는 데 따른 JSP 코드의 복잡함을 없애주며 • 자바 언어가 아닌 보다 쉽고 간단한 언어를 사용하기 때문에 배우기가 용이하다. JSP 2.0 Programming
액션 태그와 커스텀 태그 • 액션 태그 • JSP가 제공하는 고유 태그 • <jsp:include>와 같이 <jsp:태그이름>의 형태 • 커스텀 태그 • 개발자가 직접 개발한 태그 • <prefix:태그이름>의 형태 • JSP 2.0의 태그 파일을 사용함으로써 커스텀 태그의 개발이 쉬워졌음. • 태그는 스크립트 요소의 복잡함을 없앰 JSP 2.0 Programming
page 디렉티브 "page 디렉티브는 JSP 페이지에 대한 정보를 지정" Syntax <%@ page 속성1="값1" 속성2="값2" ... %> Example <%@ page contentType = "text/html; charset=euc-kr" %> JSP 2.0 Programming
page 디렉티브의 속성 (1) JSP 2.0 Programming
page 디렉티브의 속성 (2) JSP 2.0 Programming
contentType 속성과 캐릭터셋 (1) "page 디렉티브의 contentType 속성은 JSP 페이지가 생성할 문서의 타입을 지정한다" contentType 속성의 값의 구성 컨텐츠타입[; charset=캐릭터셋] Example <%@ page contentType = "text/html; charset=euc-kr" %> <%@ page contentType = "text/xml" %> • charset을 생략하면 iso-8859-1을 캐릭터셋으로 사용 • 일반적으로 한글을 사용할 경우 charset을 euc-kr로 지정 • 다국어를 지원하고 싶은 경우 UTF-8을 사용하는 것이 좋음 JSP 2.0 Programming
contentType 속성과 캐릭터셋 (2) 잘못된 캐릭터셋 <%@ page contentType="text/html; charset=iso-8859-1" %> <html> <head> <title>캐릭터셋 잘못지정</title> </head> <body> 오늘의 목표: JSP 기초 마스터하기 </body> </html> 올바른 캐릭터셋 <%@ page contentType="text/html; charset=euc-kr" %> <html> <head> <title>캐릭터셋 올바르게 지정</title> </head> <body> 오늘의 목표: JSP 기초 마스터하기 </body> </html> JSP 2.0 Programming
import 속성 "page 디렉티브의 import 속성은 JSP 페이지에서 어떤 자바 클래스를 사용할 것인지 미리 지정" import 속성의 값의 구성 <%@ page import = "클래스명[,클래스명,클래스명]" %> ( '클래스명' 대신에 '패키지명.*' 의 형태도 가능) Example <%@ page import = "java.util.Calendar, java.util.Date" %> <%@ page import = "java.util.Calendar" %> <%@ page import = "java.util.Date" %> <%@ page import = "java.util.*" %> JSP 2.0 Programming
import 속성 사용 예 <%@ page contentType = "text/html; charset=euc-kr" %> <%@ page import = "java.util.Calendar" %> <html> <head><title>Calendar 클래스 사용</title></head> <body> <% Calendar cal = Calendar.getInstance(); %> 오늘은 <%= cal.get(Calendar.YEAR) %>년 <%= cal.get(Calendar.MONTH) + 1 %>월 <%= cal.get(Calendar.DATE) %>일 입니다. </body> </html> import 속성을 사용함으로써 소스 코드를 보다 간결하게 작성할 수 있다! <%@ page contentType = "text/html; charset=euc-kr" %> <html> <head><title>Calendar 클래스 사용</title></head> <body> <% java.util.Calendar cal = java.util.Calendar.getInstance(); %> 오늘은 <%= cal.get(java.util.Calendar.YEAR) %>년 <%= cal.get(java.util.Calendar.MONTH) + 1 %>월 <%= cal.get(java.util.Calendar.DATE) %>일 입니다. </body> </html> JSP 2.0 Programming
스크립트 요소 • 스크립트릿(scriplet) - 실행 코드 • 표현식(expression) - 값의 출력 • 선언부(Declaration) - 함수 • JSP 프로그래밍의 핵심 부분 • 스크립트 코드를 사용해서 프로그램이 수행해야 하는 기능을 수행 JSP 2.0 Programming
스크립트 요소 - 스크립트릿 (scriptlet) "자바 코드를 실행할 때 사용되는 코드의 블럭" Syntax <% 실행코드1; 실행코드2; ... 실행코드n; %> <% 와 %> 사이에 실행할 자바 코드를 삽입한다. Example <%@ page contentType = "text/html; charset=euc-kr" %> <html> <head><title>1-10까지의 합</title></head> <body> <% int sum = 0; for (int i = 1 ; i <= 10 ; i++) { sum = sum + i; } %> 1 부터 10까지의 합은 <%= sum %> 입니다. </body> </html> JSP 2.0 Programming
스크립트 요소 - 표현식 (expression) "값을 출력한다." Syntax <%= 출력할값 %> Example <%@ page contentType = "text/html; charset=euc-kr" %> <html> <head><title>1-10까지의 합:표현식만 사용</title></head> <body> 1 부터 10까지의 합은 <%= 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 %> 입니다. </body> </html> JSP 2.0 Programming
스크립트 요소 - 선언부 (declaration) "스크립트릿이나 표현식에서 사용할 수 있는 함수를 작성할 때 사용" Syntax <%! public 리턴타입메소드이름(파라미터목록) { 자바코드1; ... 자바코드n; return값; } %> JSP 2.0 Programming
스크립트 요소 - 선언부 (declaration) 예제 Example <%@ page contentType = "text/html; charset=euc-kr" %> <%! public intmultiply(int a , int b) { int c = a * b; return c; } %> <html> <head><title>선언부를 사용한 두 정수값의 곱</title></head> <body> 10 * 25 = <%= multiply(10, 25) %> </body> </html> JSP 2.0 Programming
request 기본 객체 클라이언트 관련 정보를 request 기본객체에 저장 웹 서버 • 클라이언트(웹 브라우저)와 관련된 정보 읽기 기능 • 서버와 관련된 정보 읽기 기능 • 클라이언트가 전송한 요청 파라미터 읽기 기능 • 클라이언트가 전송한 요청 헤더 읽기 기능 • 클라이언트가 전송한 쿠키 읽기 기능 • 속성 처리 기능 request 기본객체 파라미터, 헤더, 쿠키 등 전송 JSP request 기본 객체가 제공하는 기능 JSP 2.0 Programming
HTML 폼과 전송 방식 폼에 입력한 데이터는 파라미터로 전달됨 파라미터 목록 (폼 데이터) 웹 서버 [데이터 전송 방식] JSP 2.0 Programming
요청 파라미터의 한글 처리 Code <%@ page contentType="text/html; charset=euc-kr" %> <%@ page import="java.util.Enumeration" %> <%@ page import="java.util.Map" %> <% request.setCharacterEncoding("euc-kr"); %> <html> ... • 각 웹콘테이너마다 인코딩과 관련된 추가적인 옵션을 제공 • 모든 콘테이너에서 같은 방식으로 동작하기 위해서는 위와 같이 request의 인코딩을 지정해주는 것이 좋음 JSP 2.0 Programming
response 기본 객체 클라이언트에 전송할 정보를 response 기본객체에 저장 웹 서버 JSP response 기본객체 헤더, 쿠키 등 전송 response 기본 객체가 제공하는 기능 • 헤더 정보 전달 • 쿠키 전달 • 리다이렉트 지정 * 이외에 몇가지 기능이 더 있지만 거의 사용되지 않는다. JSP 2.0 Programming
response 기본 객체를 이용한 리다이렉트 "웹 브라우저에게 다른 페이지로 이동하라고 지시하는 것을리다이렉트(redirect)라고 한다" a.jsp 1. 요청 보냄 2. b.jsp로 리다이렉트 하라고 지정함 a.jsp 웹브라우저는 리다이렉트를 결과로 받은 경우 곧바로 지정한 페이지로 요청을 전송한다. b.jsp 3. b.jsp를 요청함 JSP 2.0 Programming
response.sendRedirec() Code <%@ page contentType="text/html; charset=euc-kr" %> <% response.sendRedirect("/chap02/index.jsp"); %> 일반적인 코딩법 <%@ page contentType="text/html; charset=euc-kr" %> <% if ( 조건 ) { response.sendRedirect("이동할 페이지"); } else { } %> 조건에 맞으면 이동한다 JSP 2.0 Programming
기본 데이터 타입 (primitive type) [자바에서 기본적으로 제공하는 데이터 타입 ] * 실수값의 표현 방식은 IEEE 754 표준을 따르고 있다. JSP 2.0 Programming
문자 타입과 값 "문자 타입인 char 타입의 값은 작은 따옴표를 사용하여 표시" Example '가' '최' '1''\ucd08'(초) '\uae30'(기) '\ud654'(화) Code <%@ page contentType="text/html; charset=euc-kr" %> <html> <head><title>char 타입 사용 예</title></head> <body> <% char ch = '한'; %> 변수에 저장해서 사용: <%= ch %> <br> 표현식에서 직접 사용: <%= '\ucd08' %> <%= '\uae30' %> <%= '\ud654' %> </body> </html> JSP 2.0 Programming
특수문자 (escape character) Example '\\' '\t' '\'' JSP 2.0 Programming
정수 타입과 값 "소수점을 포함하지 않은 숫자를 표현한다. byte, short, int, long 타입이 정수 타입에 해당한다." • 소수점이 없는 정수는 int 타입 • 뒤에 'l' 이나 'L'을 붙이면 long 타입의 정수 • 값 앞에 (byte)를 붙이면 byte 타입의 정수로 처리 • 값 앞에 (short)를 붙이면 short 타입의 정수로 처리 Example 10 -2578 809 1234567890L 124l (short)10 (byte)-200 JSP 2.0 Programming
실수 타입과 값 "소수점을 포함한 숫자를 표현한다. float, double 타입이 실수 타입에 해당한다." • 소수점이 있는 실수는 double 타입 • 뒤에 'f' 나 'F'를 붙이면 float 타입의 실수 • 지수 형태로 표현할 수도 있다. Example 32.125f 32.0f 32.f 0.8f .8f 32.125 32.0 32. 0.8 .8 320.9 → 3.209e2, 320.9f →3.209e2f JSP 2.0 Programming
boolean 타입과 값 "참과 거짓을 나타낼 때 boolean 타입을 사용한다." • 참을 나타낼 때는 true 를 값으로 사용 • 거짓을 나타낼 때는 false 를 값으로 사용 • 이 두 값은 조건문이나 반복문에 주로 사용된다. JSP 2.0 Programming
배열 "값의 모음을 표현할 때 사용" Syntax type[] variableName = new type[length] Example int[] intArray = new int[10]; double[] doubleArray = new double[25]; Code Usage int[] intArray = new int[10]; intArray[8] = 10; int arry = intArray[1] * 3; 배열의 9번째 요소의 값을 사용 배열의 2번째 요소의 값을 사용 JSP 2.0 Programming
변수(variable)와 레퍼런스(reference) • 변수 - 기본 데이터 타입의 값을 저장할 때 사용 • 레퍼런스 - 클래스의 객체를 참조할 때 사용 • 메모리에 변수와 레퍼런스를 위한 공간이 생성 i 10 i 3 i j 3 21 JSP 2.0 Programming
형변환 (type casting) • 자바는 타입을 엄격하게 적용하는 언어이다. • 자동형변환 - 서로 다른 두 타입을 사용할 때 자동으로 타입을 변환 • 직접형변환 - 직접 타입을 변환하는 것 타입 변환 에러 발생 타입의 엄격한 적용 int value = 3.2098e3; 직접 형변환 코드 int val = (int) 10L; // long 타입을 int로 변환 int val = (int) 100.8; // double 타입을 int로 변환 short val = 45000; // int 타입을 short로 변환 JSP 2.0 Programming
자동 형변환 * 자동 형변환은 범위가 작은 타입을 범위가 큰 타입에 저장할 때에만 가능 JSP 2.0 Programming
연산자 - 수치 연산자 Code <%@ page contentType="text/html; charset=euc-kr" %> <html><head><title>수치 연산자 사용 예</title></head> <body> <% int operand1 = 10; int operand2 = 3; %> 10 + 3 = <%= operand1 + operand2 %> <br> 10 - 3 = <%= operand1 - operand2 %> <br> 10 * 3 = <%= operand1 * operand2 %> <br> 10 / 3 = <%= operand1 / operand2 %> <br> 10 % 3 = <%= operand1 % operand2 %> <br> </body></html> JSP 2.0 Programming