4장. JSP의 구성요소와 스크립팅요소 제4장.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

JSP 정리 레퍼런스: JSP 2.1 웹 프로그래밍 (최범균, 가메출판사). 목차 1. Directive - 인코딩 - 오류처리 2. Implicit Object - 쿠키/세션 3. Action Tag 4. JDBC/DBCP 프로그래밍, 파일업로드 5. Expression.
Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
4. JSP의 스크립트 요소 Script 요소의 이해 선언문(Declaration) Scirptlet 표현식 주석
제 12 장 표현 언어 학기 인터넷비즈니스과 강 환수 교수.
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Internet Computing KUT Youn-Hee Han
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
Ch.07-5 xml-rpc 사용하기 김상엽.
3장. 웹 어플리케이션과 JSP 및 Servlet의 이해 제3장.
9 표준 액션.
5 익셉션 처리.
3 JSP의 기초.
7 JSP의 기초.
Lesson 5. 레퍼런스 데이터형.
6장. JSP 지시문 (Directives) 제6장.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Chapter05 오디오와 비디오 HTML5 Programming.
Lesson 9. 예외처리.
Lesson 6. 형변환.
12 ███████████ 12.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
JavaServerPage 전혜영.
제 13 장 JSTL 학기 인터넷비즈니스과 강 환수 교수.
10장. 예외처리.
제 01 장 인터넷 프로그래밍 개요 학기 인터넷비즈니스과 강 환수 교수.
자바 5.0 프로그래밍.
11장. 1차원 배열.
5장. JSP 페이지의 스크립트 요소 이 장에서 배울 내용 : JSP페이지를 구성하는 구성요소중 하나인 스크립트요소를 학습하는 장으로 JSP페이지의 스크립트의 3가지 요소인 선언문(Declaration), 스크립트릿(Scriptlet), 표현식(Expression)에 대해.
13. 연산자 오버로딩.
C 2장. C 프로그램 시작하기 #include <stdio.h> int main(void) { int num;
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
7장 인터페이스와 추상 클래스.
Method & library.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
인터넷응용프로그래밍 JavaScript(Intro).
2장. JSP 프로그래밍을 위한 환경구성 제2장.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
JSP문법 JSP 기본 구조를 이해한다. 지시어, 스크립트릿 JSP 액션 태그 사용법을 익힌다. 한빛미디어(주)
Lesson 2. 기본 데이터형.
HTML 5+ 자바스크립트 발표자 : 김동한 5주차.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
프로그래밍 원리 Chapter 05 자바스크립트 기초 신한대학교 IT융합공학부 박 호 균.
웹디자인
JSTL Core 2015 Web Service Computing.
1. JSP를 시작하며 인천대학교 컴퓨터공학과 성 미 영
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
JA A V W. 06.
Fucntion 요약.
JSP Expression Language
제 06 장 JSP 액션 태그 학기 인터넷비즈니스과 강 환수 교수.
제 04 장 JSP 기본 문법 학기 인터넷비즈니스과 강 환수 교수.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
JSP Programming with a Workbook
함수, 모듈.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
9 브라우저 객체 모델.
.Net FrameWork for Web2.0 한석수
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
자바 객체 지향 프로그래밍 Ps lab 김윤경.
6 객체.
20 XMLHttpRequest.
Presentation transcript:

4장. JSP의 구성요소와 스크립팅요소 제4장

1. JSP 구성 요소 소개 스크립팅 요소 (Scripting Element) 1) 지시문 (Directive): page, include, taglib (6장) JSP 엔진 및 컨테이너, 즉 Tomcat에게 현재의 JSP 페이지 처리와 관련된 ‘지시’를 전달하는 목적으로 활용 Page 지시문의 속성(attribute)들: [표 6.1] 2) 스크립트릿 (Scriptlet) 가장 많이 활용되는 JSP 구성 요소로서 JSP 페이지 내에서 데이터 ‘처리’ 코드 구현을 위해 사용 <%@ page contentType="text/html;charset=utf-8"%> <% for (int i=0; i<=10; i++) { out.println("Hello World" + i + "<br/>"); } %> 제4장

1. JSP 구성 요소 소개 스크립팅 요소 (Scripting Element) 3) 표현식 (Expression) 간단한 데이터 출력이나 메소드 호출을 통한 데이터 ‘출력’을 위해 활용 코드 마지막에 세미콜론(;)이 없다는 것에 주의 4) 선언 (Declaration) JSP 페이지 전체에서 활용할 ‘변수’ 및 ‘메소드’를 선언 <%= result + resultSum() %> <%! String name="Gildong Hong"; public boolean isExist() { return true; } %> 제4장

1. JSP 구성 요소 소개 스크립팅 요소 (Scripting Element) 5) 주석 (Comment) 코드 상에 부가적인 설명을 덧붙이기 위해 사용 JSP에서 활용할 수 있는 주석의 종류는 총 3가지: HTML, Java, JSP 주석 <%-- This is JSP Comment --%> 제4장

2. 스크립팅 요소 (Scripting Element) 스크립트릿 (Scriptlet) JSP의 파워가 강한 이유: 스크립트릿을 활용하여 JSP 페이지 내에 Java 코드를 넣을 수 있기 때문 <%과 %> 사이에 Java 코드 위치 코드 블록내의 각 문장은 Java 문법을 따르기 때문에 반드시 마지막에 세미콜론(;)을 넣어야 한다. <% Java 코드 1; Java 코드 2; Java 코드 3; ... %> 제4장

2. 스크립팅 요소 (Scripting Element) 스크립트릿 (Scriptlet) 1부터 100까지의 합을 구하는 JSP 페이지를 스크립트릿 I [예제 4.1] jspbook\ch04\plus100.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 <%@ page contentType="text/html;charset=utf-8" %> <html> <head> <title>1부터 100까지의 합 구하기</title> </head> <body> <% //스크립트릿을 나타내는 기호 int sum = 0; for (int i = 1; i <= 100; i++) { sum = sum + i; } %> // 스크립트릿을 나타내는 기호 1+2+3+...+99+100=<%= sum %> //표현식을 이용한 sum 출력 </body> </html> Java 코드 (문장별로 세미콜론 기입요) 제4장

2. 스크립팅 요소 (Scripting Element) 스크립트릿 (Scriptlet) 1부터 100까지의 합을 구하는 JSP 페이지를 스크립트릿 II-1 [예제 4.2] jspbook\ch04\plus100-2.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 <%@ page contentType="text/html; charset=utf-8" %> <html> <head> <title>1부터 100까지의 합 구하기</title> </head> <body> <% int sum = 0; for (int i = 1; i <= 100; i++) { sum = sum + i; } %> for (int i = 1; i <= 99; i++) { <%= i %> + // 표현식을 이용한 출력 1 <%= 100 %> = <%= sum %> // 표현식을 이용한 출력 2 </body> </html> 스크립트릿 블록 1 스크립트릿 블록 2 스크립트릿 블록 3 제4장

2. 스크립팅 요소 (Scripting Element) 스크립트릿 (Scriptlet) 1부터 100까지의 합을 구하는 JSP 페이지를 스크립트릿 II-2 [예제 4.3] jspbook\ch04\plus100-3.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 <%@ page contentType="text/html;charset=utf-8" %> <html> <head> <title>1부터 100까지의 합 구하기</title> </head> <body> <% int sum = 0; for (int i = 1; i <= 100; i++) { sum = sum + i; } %> for (int i = 1; i <= 99; i++) { out.print(i + " + "); // out 객체를 활용한 출력 out.print(100 + " = " + sum); // out 객체를 활용한 출력 </body> </html> 스크립트릿 블록 1 스크립트릿 블록 2 제4장

2. 스크립팅 요소 (Scripting Element) 스크립트릿 (Scriptlet) 복잡한 스크립트릿 기호 남용을 더욱 줄이기 이 책의 후반부에서 다루는 JSTL 및 EL (Expression Language)과 커스텀 태그를 활용하면 스크립트릿의 남발을 더욱 잘 방지할 수 있다. 즉, ‘Language ‘기능을 제공함으로써 ‘Java코드 없는’ JSP 페이지를 만들 수 있다. <% int sum = 0; for (int i = 1; i <= 100; i++) { sum = sum + i; } for (int i = 1; i <= 99; i++) { out.print(i + " + "); out.print(100 + " = " + sum); %> 제4장

2. 스크립팅 요소 (Scripting Element) 표현식 (Expression) 간단한 데이터 출력을 위하여 사용 <%= 로 시작하여 %>로 끝나며 이 둘 사이에 출력해야 할 값을 적는다. 출력할 수 있는 값 단순한 문자열 및 숫자 변수 수식 메소드 호출 마지막에 세미콜론(;)을 붙이지 않는다 <%= 값 %> 제4장

2. 스크립팅 요소 (Scripting Element) 표현식 (Expression) 관련 예제 [예제 4.4] jspbook\ch04\expression.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 <%@ page contentType="text/html;charset=utf-8" %> <html> <head> <title>표현식 예제</title> </head> <body> 단순한 문자열 출력: <%= "<b>표현식 예제</b>" %> <hr/> <% int i = 10; java.util.Calendar cal = java.util.Calendar.getInstance(); // Calendar 객체 생성하여 cal 변수에 할당 %> 변수 값 출력: <%= i %> 수식 값 (1부터 10까지의 합): <%= 1+2+3+4+5+6+7+8+9+10 %> 메소드 호출에 의한 결과 값: <%= cal.getTime() %> // 오늘의 날짜와 현재 시각 출력 변수 i를 활용한 문자열과 연산의 결합: <%= "i+10=" + (i+10) %> // i와 10을 더한 값을 문자열과 결합 </body> </html> 제4장

2. 스크립팅 요소 (Scripting Element) 선언 (Declaration) JSP 페이지의 스크립트릿이나 표현식에서 사용할 수 있는 멤버 ‘변수’ 및 멤버 ‘메소드’를 작성할 때 사용 <%! … %> 멤버 변수 선언은 보통 하나의 문장으로 끝나기 때문에 반드시 뒤에 세미콜론(;) 필요 <%! 멤버 변수 선언; 멤버 메소드 선언 %> <%! public 리턴타입 메소드이름(파라미터 리스트) { Java 코딩 문장; ... (return 값;) } %> 제4장

2. 스크립팅 요소 (Scripting Element) 선언 (Declaration) 관련 예제 [예제 4.5] jspbook\ch04\decl.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 <%@ page contentType="text/html;charset=utf-8" %> <%! // 선언 블록 기호 String str = "선언 예제"; // 멤버 변수 str 선언 public double calculator(double num1, double num2, String operator) { // 멤버 메소드 calculator 선언 double result = 0.0; if (operator.equals("+")) { result = num1 + num2; } else if (operator.equals("-")) { result = num1 - num2; } else if (operator.equals("*")) { result = num1 * num2; } else if (operator.equals("/")) { result = num1 / num2; } return result; %> 제4장

2. 스크립팅 요소 (Scripting Element) 선언 (Declaration) 관련 예제 (계속) [예제 4.5] jspbook\ch04\decl.jsp 19 20 21 22 23 24 25 26 27 28 29 30 31 <html> <head> <title>선언 예제</title> </head> <body> <%= str %> // 선언된 str 출력 <hr/> 10 + 5 = <%= calculator(10, 5, "+") %><br/> 10 - 5 = <%= calculator(10, 5, "-") %><br/> 10 * 5 = <%= calculator(10, 5, "*") %><br/> 10 / 5 = <%= calculator(10, 5, "/") %> </body> </html> 선언된 calculator 메소드 호출에 의한 결과값 출력 제4장

2. 스크립팅 요소 (Scripting Element) 선언 (Declaration) 이전 JSP 예제가 변환된 .java 파일 내용 package org.apache.jsp.jspbook.ch04; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; public final class decl_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { String str = "선언 예제"; public double calculator(double num1, double num2, String operator) { double result = 0.0; if (operator.equals("+")) { result = num1 + num2; } else if (operator.equals("-")) { result = num1 - num2; } else if (operator.equals("*")) { result = num1 * num2; } else if (operator.equals("/")) { result = num1 / num2; } return result; JSP 선언 블록 제4장

2. 스크립팅 요소 (Scripting Element) 선언 (Declaration) 이전 JSP 예제가 변환된 .java 파일 내용 (계속) ‘JSP 선언 블록’에서 선언된 요소들은 해당 클래스의 ‘멤버 변수’와 ‘멤버 메소드’로 정의된다. Scriptlet이나 EL에 작성된 코드는 _jspService() 메소드 내에 위치한다. 따라서 선언 블록에서 선언된 변수/메소드를 활용할 수 있다. private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory(); private static java.util.List _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory; private org.apache.AnnotationProcessor _jsp_annotationprocessor; public Object getDependants() { return _jspx_dependants; } public void _jspInit() { _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory(); _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName()); public void _jspDestroy() { public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { ... 중간 생략 ... _jspService 멤버 메소드의 위치 제4장

3. 주석 JSP 주석 JSP 소스 코드를 올바르게 이해하도록 하기 위하여 코드 자체에 설명을 달아 주는 것 제4장

3. 주석 JSP 주석 종류 2) Java 주석 종류 3) HTML 주석 다른 주석들과 다르게 출력 결과에 포함되어지기 때문에 JSP 수행 결과 브라우저에서 ‘소스보기’를 하면 HTML 주석이 함께 보인다. 아래 코드에서 JSP 표현식(“<%= userName %>”)은 JSP 엔진에서 처리가 된 결과가 브라우저의 ‘소스보기’에서 보인다. // Java 주석 첫 번째 - 1 line comment /* Java 주석 두 번째 */ - several lines /** Java 주석 세 번째 */ - 멤버 변수/메소드 <!-- HTML 주석 --> <!-- <%= userName %>이 작성하는 코드입니다. --> 제4장

3. 주석 JSP 주석 [예제 4.6] jspbook\ch04\comment.jsp [브라우저의 소스보기] 제4장 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <%@ page contentType="text/html;charset=utf-8" %> <%! /** Java 주석 세 번째 것입니다 (plus: num1과 num2를 더한 값을 리턴한다.) */ // Java 주석 public int plus(int num1, int num2) { return num1+num2; } %> <html> <head> <title>주석 예제</title> </head> <!-- HTML 주석을 사용합니다. --> // HML 주석 <body> <%-- JSP 주석을 사용합니다. --%> // JSP 주석 <% // Java 주석 첫 번째 것입니다. // Java 주석 int num1 = 10; int num2 = 20; /* Java 주석 두 번째 것입니다. // Java 주석 num1과 num2를 더해서 result에 할당한다. */ int result = plus(num1, num2); <%= num1%>과 <%= num2%>를 더한 값은 <%= result%>입니다. </body> </html> [브라우저의 소스보기] <html> <head> <title>주석 예제</title> </head> <!-- HTML 주석을 사용합니다. --> <body> 10과 20를 더한 값은 30입니다. </body> </html> 제4장

<참고#1> Expression Language 독립 언어 1) 표현 언어 (Expression Language, EL) 서버 측의 다양한 ‘상태정보’를 개발자로 하여금 손쉽게 프리젠테이션할 수 있도록 해주는 용도로 개발된 언어 JSP에서 Java 코드를 대체할 수 있게하여 주는 언어(language) JSP의 기본 문법을 보완하는 역할로서 ‘서버가 지니고 있는 다양한 값들’에 대한 표현을 하기 위한 언어 스크립팅 요소의 ‘표현식(Expression)’과 혼동하면 안된다. 보통 JSTL 및 커스텀 태그와 함께 사용된다. ${ …. } 로 표기된다. ${colorBean.red} <c:if test="${1+1==2}"> Always true. </c:if> 제4장

<참고#2> XML Tags XML 태그: JSP 페이지에서 미리 정의된 XML들 사용 가능 1) 액션 태그 (Action Tag): namespace ‘jsp:’ (9장, 12장) JSP 페이지간의 흐름 제어 및 자바 빈즈 컴포넌트와 JSP의 상호작용을 위해 사용 2) JSTL (Java Standard Tag Library): namespace ’c:’ 개발자가 JSP 페이지를 구성할 때 많이 활용하는 기능을 모아서 XML 태그들로 구성하여 라이브러리화 해 놓은 것 3) 커스텀 태그 (Custom Tag): namespace ‘user:’ JSP 페이지 개발자가 많이 활용되는 로직 처리 및 프리젠테이션 기능을 직접 개발하여 활용하는 XML 태그 <jsp:include page="heading.jsp" /> <c:if test="${1+1==2}"> Always true. </c:if> <user:getUserShoppingList userId="13" /> 제4장