4w_JSP기본문법.ppt

Download Report

Transcript 4w_JSP기본문법.ppt

2008년 9월 25일 실습

실험제목
◦ 문법

목표
◦ JSP의 기본 문법을 이해한다.

목차
◦
◦
◦
◦
◦
◦
Expression, Scriptlet, Declaration
Declaration
주석
Directive
Action
Action(액션)

JSP Expressions 예제
현재의 날짜와 시간을 출력
클라이언트의 IP 주소를 출력
현재 Session의 고유 번호를 반환
요청에 포함된 매개변수를 지정된 문자열에 따라 반환
실행 결과
”testParam”이라는 매개변수는 지정
되어 있지 않아서 “null”을 반환

Expression(표현식)
◦
◦
◦

형식 : <%= expression %>
평가된 값이 문자열로 변환되어 클라이언트에 보내질 HTML 페이지에 출력
Servlet으로 변환될 때, ‘_jspService()’ method 내부의 ‘out.prinln()’ method로 변환되므로, 이 method의
인자로써 적합한 형태가 요구됨
JSP 원본
변환된 servlet 코드의 예
<H1>A Random Number</H1>
<%= Math.random() %>
public void _jspService(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
request.setContentType(“text/html”);
JspWriter out = response.getWriter();
out.println(“<H1>A Random Number<H1>”);
out.prinltn(Math.random());
…
}
Scriptlet(스크립틀릿)
◦
◦
형식 : <% code %>
순수 자바 코드가 들어가며, 본문 어느 곳에서나 자유롭게 사용 가능
JSP 원본
<%= foo() %>
<% bar(); %>
변환된 servlet 코드의 예
public void _jspService(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
request.setContentType(“text/html”);
JspWriter out = response.getWriter();
out.println(foo());
bar();
Expression으로 사용된 다른 어느
…
곳에
정의된 foo()는 out.println()의
}
인자로 사용되었고, Scriptlet으로
사용된 bar()는 코드에 직접 들어감

Declaration(선언)
◦
◦
◦
형식 : <%! declaration %>
JSP 에서 변수나 method를 선언하고자 할 때 사용
Servlet으로 변환될 때, Servlet 정의에 사용된 모든 method 밖에 삽입됨
JSP 원본
<%! private String randomHeading() {
return (“<H2>” + Math.random() +
“</H2>”); %>
<%= randomHeading() %>
변환된 servlet 코드의 예
public class xxxx implements HttpJspPage {
private String randomHeading() {
return (“<H2>” + Math.random() + “</H2>”);
}
Declaration은 class
내부에 정의됨
public void _jspService(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
request.setContentType(“text/html”);
JspWriter out = response.getWriter();
out.println(randomHeading());
…
Expression은 ‘out.println’
}
medhod의 인자로 들어감
}
내장객체 request에서 bgColor라는 이름의 매개변수를 가져옴
boolean type의 변수 선언
•request 객체는 bgColor라는 이름으로 지정된 문자열 매개
변수가 지정되어 있을 경우, 해당 문자열을 반환하고, 지정되
어 있지 않을 경우, null 을 반환
•반환된 문자열이 null이 아닌 경우 hasExplicitColor변수에
true를 할당, null일 경우 false를 할당하고 bgColor에
“WHITE”문자열 할당
HTML tag ‘body’의 속성으로 배경색 지정
삼항연산자
a?b:c
a가 true 일 경우, b를 실행
false일 경우 c를 실행
hasExplicitColor가 ture인 경우 배경색이 지정되었다는 문
장을, false인 경우, 배경색이 지정되지 않았다는 문장을 출
력
주소에 ?bgColor=yellow를 추가한 경우
bgColor 매개변수를 지정하지 않을 경우
GET 방식
주소에 ?bgColor=D0D0D0를 추가한 경우
GET 방식
HTTP에서 클라이언트의 요청을 크게 GET 방식과 POST 방식으
로 뉜다
<GET 방식>
 HTTP header에 정보를 실어보냄
URL 뒤에 ?를 붙인 다음 속성=값 형태로 사용하며, 여러 개
의 속성을 지정할 경우 &를 구분자로 사용
256byte가 한계이며, URL이 노출됨
<POST방식>
HTTP body에 실어보냄
데이터 크기 제한이 없음
URL에 표시되지 않음
멤버 변수 선언
연산자의 종류에 따라 계
산한 결과값을 반환하는
method 정의
request.getMethod()를 사용하여 POST
방식의 요청만 처리
num1, num2, op에 해당 정수와 문자
열을 할당
현재는 op값에 “”, 즉 길이
가 0인 문자열이 할당되어
있으므로, calculator() 는
현재 result에 할당되어 있
는 0을 반환
피연산자와 연사자 입력
후 계산버튼을 클릭하여
POST 방식으로 요청
calculator()를 호출하여
얻은 결과를 expression
을 이용하여 출력
GET방식으로 요청할
경우 처리되지 않음

HTML 주석
◦
◦
클라이언트로 전달되는 주석
웹 브라우저에서 ‘소스 보기’를 했을 때 보이는 주석으로, HTML 주석과 동일
<!-- 주석입니다. -->

JSP 주석
◦
◦
클라이언트로 전달되지 않는 주석
프로그램 코드와 관련된 주석이 필요할 때 사용
<%-- 주석입니다. --%>
출력된 페이지의 소스코드에는
HTML 주석만 있음

page :
생성되는 문서의 타입, 스크립팅 언어, import 할 클래스 등을 지정
◦
형식 :
◦
속성의 종류
<@ page 속성1=“속성값1” 속성2=“속성값2” ... @>
속성
language
java
스크립트 언어 유형 지정
속성
info
설명
기본값
JSP 페이지에 대한 설명
JSP 내에서 사용할 외부 자바
패키지나 클래스의 import 지
정
session
session의 사용 유무
true
isErrorPage
오류만을 처리하는 페이지로 지
정
false
buffer의 크기
8KB
contentType
JSP가 생성할 문서의 타입을 지정
text/html;c
harset=ISO
-8859-1
버터의 내용 자동 비움
true
pageEncoding
문자 인코딩 지정
ISO-88591
해당페이지에 다중쓰레드를
허용할 지 여부를 설정
true
extends
autoFlush
isThreadSafe
include :
◦

기본값
import
buffer

설명
형식 :
errorPage
현재 페이지에서 오류 발생 시
호출될 페이지 지정
해당 JSP 페이지가 상속받을 클
래스를 지정
현재 JSP 파일에 다른 HTML이나 JSP 문서를 포함하기 위해 지정
<@ include file=“포함할 파일명” @>
taglib :
JSP의 기능 확장을 위해 만들어진 사용자 정의 태그를 JSP 파일에서 사용하기 위한 태
그 라이브러리와 관련된 정보를 기술하는 목적으로 사용
◦
형식 :
<@ taglib uri=“/META-INF/mytag.tld” prefix=“mytag” @>
include_test.jsp
menu.jsp
shopping.jsp
news.jsp
include_test.jsp 실행 결과

Action(액션)의 기능
◦
◦
◦

Java Beans
Java를 위한 재사용 가능한 소프
트웨어 컴포넌트
JSP 페이지간 흐름 제어
자바 애플릿 지원
Java Beans 컴포넌트와 JSP 상호작용 지원
Action의 종류
◦
include : 다른 페이지를 현재 페이지에 포함

◦
xx.jsp를 현재 페이지에 포함
<jsp:include page=“xx.jsp”>
forward : 현재 페이지의 제어를 다른 페이지로 전달

◦
◦
include 지시어의 경우, 포함되는 파일
을 모두 하나로 컴파일 하기 때문에 정적
인 페이지를 포함시킬 때 사용하고,
include 액션은 따로 컴파일 되기 때문
에 동적인 파일을 포함시킬 때 사용
xx.jsp페이지로 제어권을 완전히 보냄
<jsp:forwad page=“xx.jsp”>
plugin : 웹브라우저에서 자바 플러그인을 사용하여 Java Applet 이나 Java Bean Component를 실행
useBean : JSP Beans를 사용하기 위한 Action

useBean : xx패키지의 MyBean 클래스를 cls라는 이름으로 page범위에서 사용할 것을 선언
<jsp:useBean name=“cls” class=“xx.Mybean”>

setProperty : useBean으로 “cls”라는 id로 선언된 Beans 클래스의 setXxx() method를 호출
<jsp:setBean name=“cls” property=“xxx”>

getProperty : useBean으로 “cls”라는 id로 선언된 Beans 클래스의 getXxx() method를 호출
<jsp:getBean name=“cls” property=“xxx”>
include_action.jsp
footer.jsp
forward_action.jsp
include와 forward 액션을 사용할 때,
jsp:param태그를 사용해서 매개변수를
include하거나 forward할 페이지에 전달
include_action.jsp 실행 결과
•email 주소와 전화번호가 매
개변수로 전달되어 출력
•include_action.jsp와
footer.jsp에서 출력된 메시지
가 모두 출력됨
forward_action.jsp 실행 결과
•email 주소와 전화번호가 매
개변수로 전달되어 출력
•footer.jsp에서 출력한 메시
지만 출력됨
1.
JSP 페이지를 이용한 계산기 응용하여 다음의 기능을 구현
◦
◦
◦
2.
사칙연산
10의 로그 계산
제곱 계산
<form> 태그를 사용하여, <input type=“text”>태그를 통해, 이름을 입
력받고, <input type=“radio”>를 통해 좋아하는 색을 입력받아, forward
태그를 사용하여, 다음과 같이 이름과 배경색으로 좋아하는 색을 출력하는
페이지 작성

Expressions
◦
◦

Scriptlet
◦
◦

◦
HTML 주석 : 클라이언트에 전달됨
<!-- 주석입니다-->
JSP 주석 : 클라언트에 전달되지 않음
<%-- 주석입니다 -->
Directive
◦
◦
◦

<%! declaration %>
변수나, method를 선언하고자 할 때 사용
주석
◦

<% code %>
순수 자바 코드가 들어가며, 본문 어느 곳에서나 자유롭
게 사용가능
Declaration
◦
◦

<%= expression %>
평가된 값이 문자열로 변환되어 클라이언트에 보내질
HTML 페이지에 출력
page : 생성되는 문서의 타입, 스크립팅 언어, import할
클래스 등을 지정
include : 다른 HTML이나 JSP 문서를 포함하기 위해 사
용
taglib : JSP의 기능 확장을 위해 만들어진 사용자 정의 태
그를 사용하기 위해 사용
Action
◦
include, forward, plugin, useBean등의 aciton 이 있으
며, JSP페이지간의 흐름 제어, 자바 애플릿 지원, Java
Bean 컴포넌트와의 상호작용을 지원하기 위해 사용됨



Expression 은 출력만을 목적으로 하는 문장이므로,
어떠한 처리를 하는 문장들은 Scriptlet안에 기술
본 교안에는 편의상 주석을 생략하였으나, 코드의
이해도를 높이기 위해서 주석을 다는 습관을 갖도록
함
Scriptlet의 경우, for, while문 등의 반복문 중간에
scriptlet을 닫고, HTML 코드 등을 사용할 수 있고,
다시 scriptlet을 열고, 제어문 블록을 닫을 수 있다.
양의 정수를 하나 입력받아 1에서 입력받은 양수까지의 모든 정수의 합을
반환하는 JSP 작성
1.
◦
2.
3.
scriptlet을 사용해야 하며, long 정수형을 사용한다. 따라서 결과적으로 정수의
합은 JAVA의 long 정수형이 허용하는 범위 내의 값이이야 한다.
양의 정수를 입력 받아 그 양의 정수보다 작은 소수(prime number)를 계
산하여 모두 출력하는 JSP작성
forward action을 사용하여 입력받은 이름과 좋아하는 색을 배경색으로
출력하는 JSP 작성
pink.jsp
yellow.jsp
입력받는 페이지
forward
action을
사용한 JSP
페이지
blue.jsp