Java web Programming J 2 EE JSP JSP
Java web Programming
J 2 EE와 JSP • JSP는 J 2 EE 1. 4의 한 부분 • 엔터프라이즈 어플리케이션의 UI 부분을 담당 JSP EJB XML Java Mail J 2 EE JMS Servlet JNDI JSP 2. 0 Programming 9
JSP 실행 환경 구축 • 자바 가상 머신 - JDK 1. 4 • 웹 콘테이너 - Tomcat, Resin, Web. Logic JSP 2. 0 Programming 12
Example JSP 예제 <%@ page content. Type="text/html; charset=euc-kr" %> <%@ page import="java. util. Date" %> page 디렉티브 JSP 페이지의 특성 지정 <% Date now. Time = new Date(); %> <html> <head><title>리스트 1. 1</title></head> <body> 현재 시간은 <%= now. Time %> 입니다. </body> </html> 스크립트릿(scriptlet) 웹브라우저 요청 처리에 필요한 자바 코드 실행 표현식(expression) 값을 출력 JSP 2. 0 Programming 13
JSP의 구성 요소 • 디렉티브 (Directive) • 스크립트 (Script): – 표현식(Expression), 스크립트릿(Scriptlet), 선언부(Declaration) • • • 표현 언어 (Expression Language) 기본 객체 (implicit object) 정적인 데이터 (텍스트 HTML 코드) 액션 태그 (Action Tag) 커스텀 태그 (Custom Tag) JSP 2. 0 Programming 15
page 디렉티브 "page 디렉티브는 JSP 페이지에 대한 정보를 지정" Syntax <%@ page 속성 1="값 1" 속성 2="값 2". . . %> Example <%@ page content. Type = "text/html; charset=euc-kr" %> JSP 2. 0 Programming 22
content. Type 속성과 캐릭터셋 (2) 잘못된 캐릭터셋 <%@ page content. Type="text/html; charset=iso-8859 -1" %> <html> <head> <title>캐릭터셋 잘못지정</title> </head> <body> 오늘의 목표: JSP 기초 마스터하기 </body> </html> 올바른 캐릭터셋 <%@ page content. Type="text/html; charset=euc-kr" %> <html> <head> <title>캐릭터셋 올바르게 지정</title> </head> <body> 오늘의 목표: JSP 기초 마스터하기 </body> </html> JSP 2. 0 Programming 26
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 27
import 속성 사용 예 <%@ page content. Type = "text/html; charset=euc-kr" %> <%@ page import = "java. util. Calendar" %> <html> <head><title>Calendar 클래스 사용</title></head> <body> <% Calendar cal = Calendar. get. Instance(); import 속성을 사용함으로 %> 써 소스 코드를 보다 간결 오늘은 <%= cal. get(Calendar. YEAR) %>년 하게 작성할 수 있다! <%= cal. get(Calendar. MONTH) + 1 %>월 <%= cal. get(Calendar. DATE) %>일 <%@ page content. Type = "text/html; charset=euc-kr" %> <html> 입니다. <head><title>Calendar 클래스 사용</title></head> </body> </html> <% java. util. Calendar cal = java. util. Calendar. get. Instance(); %> 오늘은 <%= 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 28
스크립트 요소 - 표현식 "값을 출력한다. " (expression) Syntax <%= 출력할값 %> Example <%@ page content. Type = "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 31
Example 스크립트 요소 - 선언부 (declaration) 예제 <%@ page content. Type = "text/html; charset=euc-kr" %> <%! public int multiply(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 33
response. send. Redirec() Code <%@ page content. Type="text/html; charset=euc-kr" %> <% response. send. Redirect("/chap 02/index. jsp"); %> 일반적인 코딩법 <%@ page content. Type="text/html; charset=euc-kr" %> <% if ( 조건 ) { response. send. Redirect("이동할 페이지"); } else { 조건에 맞으면 이동한다 } %> JSP 2. 0 Programming 39
특수문자 (escape character) 특수문자 표현방법 \ Tab t New Line n Carriage Return r 작은 따옴표(') ' 큰 따옴표(") " Example '\' 't' ''' JSP 2. 0 Programming 42
배열 "값의 모음을 표현할 때 사용" Syntax type[] variable. Name = new type[length] Example int[] int. Array = new int[10]; double[] double. Array = new double[25]; Code Usage int[] int. Array = new int[10]; int. Array[8] = 10; int arry = int. Array[1] * 3; 배열의 9번째 요소의 값을 사용 배열의 2번째 요소의 값을 사용 JSP 2. 0 Programming 46
데이터 타입 자동 형변환 자동변환 가능 데이터 타입 byte short, int, long, float, double short int, long, float, double char int, long, float, double int long, float, double long float, double float double * 자동 형변환은 범위가 작은 타입을 범위가 큰 타입에 저장할 때에만 가능 JSP 2. 0 Programming 49
연산자 - 수치 연산자 설명 + 두 값을 더한다. - 한 값에서 다른 값을 뺀다. * 두 값을 곱한다. / 한 값에 다른 값을 나눈다. % 한 값을 다른 값으로 나눈 나머지를 구한다. Code <%@ page content. Type="text/html; charset=euc-kr" %> <html><head><title>수치 연산자 사용 예</title></head> <body> <% int operand 1 = 10; int operand 2 = 3; %> 10 + 3 = <%= operand 1 + operand 2 %> 10 - 3 = <%= operand 1 - operand 2 %> 10 * 3 = <%= operand 1 * operand 2 %> 10 / 3 = <%= operand 1 / operand 2 %> 10 % 3 = <%= operand 1 % operand 2 %> </body></html> JSP 2. 0 Programming 50
Syntax } 반복 처리: for ( 초기값 ; 반복조건 ; 증감처리 ) { 자바 코드 반복조건이 true이면 계속해서 실행 Example <%@ page content. Type="text/html; charset=euc-kr" %> <html> <head><title>for 구문 사용 예</title></head> <body> <% <% int sum = 0; for (int i = 1 ; i <= 100 ; i++) { for (int i = 2 ; i <= 100 ; i += 2) { sum += i; } } %> %> 1부터 100까지의 합 = <%= sum %> 1부터 100까지의 짝수의 합 = <%= sum %> </body> </html> JSP 2. 0 Programming 58
JSP의 9가지 기본 객체 기본객체명 실제 타입 설명 request javax. servlet. http. Http. Servlet. Request 또는 javax. servlet. Servlet. Request 클라이언트의 요청 정보를 저장한다. response javax. servlet. http. Http. Servlet. Response 또는 javax. servlet. Servlet. Response 응답 정보를 저장한다. page. Context javax. servlet. jsp. Page. Context JSP 페이지에 대한 정보를 저장한 다. session javax. servlet. http. Http. Session HTTP 세션 정보를 저장한다. application javax. servlet. Servlet. Context 웹 어플리케이션에 대한 정보를 저 장한다. out javax. servlet. jsp. Jsp. Writer JSP 페이지가 생성하는 결과를 출 력할 때 사용되는 출력 스트림이다. config javax. servlet. Servlet. Config JSP 페이지에 대한 설정 정보를 저 장한다. page java. lang. Object JSP 페이지를 구현한 자바 클래스 인스턴스이다. exception java. lang. Throwable 예외 객체. 에러 페이지에서만 사용 된다. JSP 2. 0 Programming 70
page. Context 기본 객체: 기본 객체 접근 메소드 리턴타입 설명 get. Request() Servlet. Request request 기본 객체를 구한다. get. Response() Servlet. Response response 기본 객체를 구한다. get. Session() Http. Session session 기본 객체를 구한다. get. Servlet. Context() Servlet. Context application 기본 객체를 구한다. get. Servlet. Config() Servlet. Config config 기본 객체를 구한다. get. Out() Jsp. Writer out 기본 객체를 구한다. get. Exception() Exception exception 기본 객체를 구한다. get. Page() Object page 기본 객체를 구한다. JSP 2. 0 Programming 74
JSP의 네 가지 영역 웹 어플리케이션 JSP include forward JSP • • JSP 같은 객체 : : page. Context 기본객체 request 기본객체 session 기본객체 application 기본객체 PAGE 영역 - page. Context 기본 객체 REQUEST 영역 - request 기본 객체 SESSION 영역 - session 기본 객체 APPLICATION 영역 - application 기본 객체 JSP 2. 0 Programming 78
Syntax 에러 페이지 지정하기 <%@ page error. Page="에러페이지URI" %> * 현재 JSP 페이지에서 에러가 발생하면 error. Page 속성에 명시한 페이지를 보여준다. Example <%@ page content. Type = "text/html; charset=euc-kr" %> <%@ page error. Page = "/error/view. Error. Message. jsp" %> <html> <head><title>파라미터 출력</title></head> <body> 에러 페이지 지정 name 파라미터 값: <%= request. get. Parameter("name"). to. Upper. Case() %> </body> </html> 이 코드에서 에러가 발생하므로 view. Error. Message. jsp를 보여줌 JSP 2. 0 Programming 81
에러 코드 및 타입에 따른 에러 페 이지 지정 Syntax <? xml version="1. 0" encoding="euc-kr"? > <web-app. . . >. . . <error-page> <error-code>에러코드</error-code> <location>에러페이지URI</location> </error-page> <exception-type>에러타입</exception-type> <location>에러페이지URI</location> </error-page> HTTP 에러코드별 에러 페이지 지정 자바 에러 타입별 에러 페이지 지정 </web-app> JSP 2. 0 Programming 83
Syntax <jsp: forward> 액션 태그 <jsp: forward page="이동할 페이지" /> 또는 <jsp: forward page="이동할 페이지"> <jsp: param name="파라미터 1" value="값 1" /> <jsp: param name="파라미터 2" value="값 2" /> </jsp: forward> JSP 2. 0 Programming 87
<jsp: forward> 액션 태그 예제 Example <%@ page content. Type = "text/html; charset=euc-kr" %> <%-<jsp: foward> 액션 태그를 실행하면 생성했던 출력 결과는 모두 제거된다. --%> <html> <head><title>from. jsp의 제목</title></head> <body> 이 페이지는 from. jsp가 생성한 것입니다. to. jsp의 결과가 웹브라우저에 출력 <jsp: forwardpage="/to/to. jsp"/> /> </body> </html> <%@ page content. Type = "text/html; charset=euc-kr" %> <html> <head><title>to. jsp의 실행 결과</title></head> <body> 이 페이지는 to. jsp가 생성한 것입니다. </body> </html> JSP 2. 0 Programming 88
이동할 페이지에 값 전달하기 1. 속성을 통한 값의 전달 방법 2. 파라미터를 통한 값의 전달 request. set. Attribute(이름1, 값 1); request. set. Attribute(이름2, 값 2); from. jsp <jsp: forward> to. jsp <jsp: forward page="move. To. jsp"> <jsp: param name="first" value="BK" /> <jsp: param name="last" value="Choi" /> </jsp: forward> request <이름1, 값 1> <이름2, 값 2> Object value 1 = request. get. Attribute(이름1); Object value 2 = request. set. Attribute(이름2); JSP 2. 0 Programming 91
Syntax <jsp: include> 액션 태그 <jsp: include page="이동할 페이지" flush="true"/> <jsp: include page="이동할 페이지" flush="false"/> 또는 <jsp: include page="이동할 페이지" flush=". . . "> <jsp: param name="파라미터 1" value="값 1" /> <jsp: param name="파라미터 2" value="값 2" /> </jsp: include> JSP 2. 0 Programming 94
<jsp: include> 액션 태그 예 Example <%@ page content. Type = "text/html; charset=euc-kr" %> <html> <head><title>main</title></head> <body> main. jsp에서 생성한 내용. <jsp: include page="sub. jsp" flush="false" />/> <jsp: include flush="false" include 이후의 내용. </body> </html> <%@ page content. Type = "text/html; charset=euc-kr" %> <p> sub. jsp에서 생성한 내용. </p> JSP 2. 0 Programming sub. jsp의 결과가 <jsp: include> 위치에 포함됨 95
JSP 레이아웃 템플릿 예제 Example <%@ page content. Type = "text/html; charset=euc-kr" %> <% 템플릿을 구성하는데 String page. Title = (String)request. get. Attribute("PAGETITLE"); 필요한 정보를 읽어온다. String content. Page = request. get. Parameter("CONTENTPAGE"); %> <html><head><title><%= page. Title %></title></head><body> <table width="400" border="1" cellpadding="2" cellspacing="0"> <tr> <td colspan="2"><jsp: include page="/module/top. jsp" flush="false" /> </td> </tr> <tr><td width="100" valign="top"><jsp: include page="/module/left. jsp" flush="false" /> </td> <td width="300" valign="top"> <!-- 내용 부분: 시작 --> 내용부분은 이 템플릿 JSP를 <jsp: include page="<%= content. Page %>" flush="false"사용하는 /> JSP에서 request의 속성으로 지정한다. <!-- 내용 부분: 끝 --> </td> </tr> <td colspan="2"><jsp: include page="/module/bottom. jsp" flush="false" /> </td> </tr> </body> </html> 템플릿은 레이아웃과 관련된 HTML 태그를 포함한다. JSP 2. 0 Programming 101
템플릿을 사용하는 JSP 예제 Example <%@ page content. Type = "text/html; charset=euc-kr" %> <% request. set. Attribute("PAGETITLE", "정보보기"); %> <jsp: forward page="/template. jsp"> <jsp: param name="CONTENTPAGE" value="/info_view. jsp" /> </jsp: forward> JSP 2. 0 Programming 102
템플릿 사용시 제어 흐름 웹브라우저 요청들어옴 use. Template. jsp 1. request 기본 객체의 PAGETITLE 속성 값을 지정 2. template. jsp로 흐름 이동. CONTENTPAGE 파라미터값을 “/some. jsp”로 지정 페이지 이동 template. jsp 3. PAGETITLE 속성값 읽어옴 4. CONTENTPAGE 파라미터 읽어옴 5. 3에서 읽은 값 문서제목으로 출력 top. jsp 6. top. jsp, left. jsp 등 <jsp: include> left. jsp 7. 4에서 읽은 CONTENTPAGE 파라미터 값을 사용하여 <jsp: include> 8. bottom. jsp <jsp: include> some. jsp bottom. jsp JSP 2. 0 Programming 103
include 디렉티브 예제 - 처리 Example 전 includer. jsp <%@ page content. Type = "text/html; charset=euc-kr" %> <html> <head><title>include 디렉티브</title></head> <body> <% int number = 10; %> <%@ include file="/includee. jsp" %> 공통변수 DATAFOLDER = "<%= data. Folder %>" </body> </html> includee. jsp <%@ page content. Type = "text/html; charset=euc-kr" %> includer. jsp에서 지정한 번호: <%= number %> <p> <% String data. Folder = "c: \data"; %> JSP 2. 0 Programming 107
include 디렉티브 예제 - 처리 Example 결과 <%@ page content. Type = "text/html; charset=euc-kr" %> <html> <head><title>include 디렉티브</title></head> <body> <% int number = 10; %> <%@ include file="/includee. jsp" %> <% int number = 10; %> 공통변수 DATAFOLDER = "<%= data. Folder %>" </body> </html> <%@ page content. Type = "text/html; charset=euc-kr" %> includer. jsp에서 지정한 번호: <%= number %> <p> <% String data. Folder = "c: \data"; %> 공통변수 DATAFOLDER = "<%= data. Folder %>" </body> </html> JSP 2. 0 Programming 108
Syntax 코드 조각 자동 포함 기능 <? xml version="1. 0" encoding="euc-kr"? > <web-app xmlns="http: //java. sun. com/xml/ns/j 2 ee" xmlns: xsi="http: //www. w 3. org/2001/XMLSchema-instance" xsi: schema. Location="http: //java. sun. com/xml/ns/j 2 ee/web-app_2_4. xsd" version="2. 4">. . . <jsp-config> <jsp-property-group> <url-pattern>/view/*</url-pattern> <include-prelude>/common/variable. jspf</include-prelude> <include-coda>/common/footer. jspf</include-coda> </jsp-property-group> </jsp-config> url-pattern에 해당하는 JSP에 앞에는 <include-prelude> 태그에서 지정한 코드 조각을, </web-app> 뒤에는 <include-coda> 태그에서 지정한 코드 조각을 삽입한다. JSP 2. 0 Programming 109
include 디렉티브의 활용 • 모든 JSP 페이지에서 사용되는 공용 변수 지정 • 저작권 표시와 같은 간단하면서도 모든 페 이지에서 중복되는 문장 Example common. Variable. jspf <% String member. ID = (String)session. get. Attribute("MEMBERID"); File temp. Folder = (File)application. get. Attribute("TEMPFOLDER"); %> 공통변수를 사용하는 JSP <%@ include file="common. Variable. jspf" %>. . . <%= member. Id %>. . . JSP 2. 0 Programming 110
- Slides: 111