Web Developement

13. JSP2

green333 2021. 2. 3. 23:44
728x90
SMALL

-JSP Directive Elements

jsp directives는 웹 컨테이너에게  JSP 페이지를 어떻게 corresponding servlet으로 변환시키는지 말해주는 메세지이다.

 

jsp directives는 container에게 directon과 instruction을 제공함. 

jsp directives는 servlet class의 전체적인 구조에 영향을 줌. 

 

 

directive의 세가지 유형

  • page directive
  • include directive
  • taglib directive

 

Syntax of JSP Directive

 

 

 

JSP page directive : the page directive defines attributes that apply to an entire JSP page

JSP page directive : 컨테이너에 instruction을 제공하기 이ㅜ해 사용됨. 

 

Syntax of JSP page directive

 

 

 

1. page directive

 

Attributes of JSP page directive

  • import
  • contentType
  • extends
  • info
  • buffer
  • language
  • isELIgnored
  • isThreadSafe
  • autoFlush
  • session
  • pageEncoding
  • errorPage
  • isErrorPage

 

 

1) import

:  class, interface or all the members of a package를 import하기 위해 사용됨.

 

 

 

 

2) contentType

: HTTP response의 MIME(Multipurpose Internet Mail Extension) 타입을 정의함.

defalut 값은 "text/html;charset=ISO-8859-1" 이다.

 

 

 

3) extends

: generated servlet에 의해 상속되는 parent class 정의함. 많이 사용되지 않음

 

 

4) info

: JSP page의 정보를 설정함.

그 정보는 나중에 Servlet interface의  getServletInfo() method를 사용함으로써 회수됨.

 

 

 

 

웹 컨테이너는 resulting servlet 에서 다음과 같이 getServletInfo() 메소드를 만들것임

 

 

 

 

5) buffer 

: JSP 페이지에서 생성된 아웃풋을 다루기 위해 킬로바이트 사이즈로 버퍼 사이즈를 설정함.

default 사이즈는 8Kb임

 

 

 

6) language

: JSP 페이지에서 사용될 스크립팅 언어를 지정함. default는 java.

 

 

7) isELIgnored

: 해당 속성으로 JSP에서 Ecxpression Language (EL) 을 무시할 수 있음. 

기본적으로 false로 설정되어있음. 즉, Expression Language는 사용 가능함.

 

true로 하면 EL은 무시됨

 

8) is ThreadSafe

: Servlet과 JSP 는 모두 multithreaded임. 

해당 값을 false로 한다면, 웹 컨테이너는 multiple request를 직렬화시킴.

즉, JSP가 req에 응답하는 것을 끝낸 후, 다른 req를 통과시킴.

 

 

9) errorPage

: error page를 정희하기 위한 속성. 현재 페이지에서 exception이 발생한다면, 에러 페이지로 redirect 함

 

 

 

10) isErrorPage

: 현재 페이지가 에러페이지라는 것을 명시하기 위해 사용됨

 

 

 

 

2. include directive : translation 단계에서 파일을  포함하기 위해 사용됨. 

컨테이너에게 다른 외부 파일의 내용을 병합하라고 말해줌. 

 

 

일반적인 syntax

 

 

 

3. tag directive : The taglib directive declares that your JSP page uses a set of custom tags, identifies the location of the library, and provides means for identifying the custom tags in your JSP page.

 

 

 


 

 

-JSP Action Tags

: page들 사이에 흐름을 제어하기 위해 사용되고, 자바빈을 사용하기 위해 사용됨.

 

 

JSP action tag 의 종류는 다음과 같다.

 

 

 

jsp:useBean, jsp:getproperty, jsp:setProperty  태그들은 bean development에 사용됨

 

 

1)  jsp:forward action tag

: 다른 페이지로 프로그램의 제어를 이동할때 사용됨. 

: jsp 페이지 내에 forward 액션 태그를 만나게 되면, 그전까지 출력 버퍼에 저장되어 있던 내용을 제거하고 forward 액션 태그가 지정하는 페이지로 이동함.

 

 

 

-without parameter 

 

 

-with parameter

 

 

 

예제1 without parameter

index.jsp

 

printdate.jsp

 

 

예제2 with parameter

index.jsp
printdate.jsp

 

 


 

-jsp:include action tag

: jsp, html, servlet 같은 다른 리소스를 포함하기 위해 사용됨 

 

 

jsp include directive와 inclue action의 차이점

JSP include directive JSP include action
traslation 시간에 리소스를 포함 request 시간에 리소스를 포함
static page에 적합 dynamic에 적합
generated servlet에서 오리지널 컨텐츠를 포함 include method를 call함

 

 

Syntax of jsp:include action tag without parameter

 

Systax of jsp:include action tag with parameter

 

 

 

예제1 jsp:include action tag without parameter

index.jsp

 

printdate.jsp

 

 

 


 

-Java Bean

: a java calss that should follow the following conventions:

  • It should have a no-arg constructor.
  • It should be Serializable.
  • It should provide methods to set and get the values of the properties, known as getter and setter methods.

 

Why use JavaBean?

재사용 가능한 소프트웨어 component임

하나의 bean은 많은 객체를 하나의 객체로 encapsulate함 --> 다양한 장소에서 이 객체에 접근이 가능하게 됨

 

 

 

 

Simple example of JavaBean class

 

 

 

 

 

How to access the JavaBean class?

자바빈 클래스에 접근하기 위해서는, getter과 setter method를 사용하면 좋음

 

 

객체에 값을 제공하는 두가지 방법 

1) constructor

2) setter method

 

 

 

자바빈의 장점

 

- 자바빈의 속성과 메소드가 다른 application에 드러날 수 있음

- software component를 재사용하는 것이 쉬움

 

자바빈의 단점

 

- 자바빈은 변하기 쉬움. 그래서 immutable object에는 적합하지 않음

- setter와 getter는 상용구코드임(boilerplate code ; 최소한의 수정만을 거쳐 여러 곳에 필수적으로 사용되는 코드)

 

 


 

-jsp:useBean action tag

: bean class를 위치시키거나 인스턴스화 시키기 위해 사용됨

만약 빈 클래스의 객체가 이미 있다면, scope에 따른 빈을 생성하기 않음

그러나 빈이 없다면, 빈을 인스턴스화 시킴

 

 

Syntax of jsp:useBean action tag

 

 

1. id : specified scope에서 빈을 식별하기 위해 사용됨

2. scope : 빈의 스콥을 나타냄. 페이지, request, session or application  (defalut : page)

3. class : specified bean class를 초기화시킴. 즉, 빈 클래스의 객체를 생성. 

4. type : 만약 빈이 이미 해당 스콥에 존재한다면, 빈에 데이타 타입을 제공함. 

5. beanName: java.beans.Beans.instantiate() 메소드를 사용하여 빈을 인스턴스화 시킴

 

 

예제 of jsp:useBean action tag

 

Calculator.java (a simple Bean class)

 

index.jsp file

 

 

 


 

-jsp:setProperty and jsp:getProperty action tag

 

 

Syntax of jsp:setProperty action tag

 

 

 

빈에서 들어오는 모든 req의 값을 세팅할때

 

 

특정한 property의 값을 세팅할때 

 

 

property에서 특정한 값을 세팅할때

 

 

 

 

 

 


 

 

-Expression Language (EL) in JSP

: 자바 bean component, 다른 objects like request, session, application에 저장된 데이터에 대한 접근을 간단하게 함.

 

EL에는 implicit objects, operators, reserve words가 많음.

 

JSP 2.0부터는 JSP 컨테이너가 EL 표현식을 해석할 수 있게 되어 표준 액션 태그, 커스텀 태그, 템플릿 데이터와 같이 자바코드를 사용해야 했던 모든 곳에 EL 사용 가능.

 

EL은 값이 없는 변수(null)에 대해 좀 더 관대하고 데이터 형 변환을 자동으로 해줌. 즉, 값이 없거나 형 변환 등에 신경 쓸 필요가 없음.

 

 

 

 

 

Syntax for Expression Language (EL)

 

 

 

문자

  • ${true}
  • ${false}
  • ${123}
  • ${3.14}
  • ${"JAVA"}
  • ${'java'}

 

 

EL 연산자

  • 산술연산자: +, -, *, /, %, mode
  • 논리연산자: &&, ||, !, and, or, not
  • 비교연산자: ==, !=, <, >, <=, >=, eq, ne, lt, get, le, ge
  • empty연산자: 값이 null이거나 공백문자인지를 판단하는 연산자
    ${empty ""} → true
  • ${empty null} → true

 

 

 

 

 

implicit objects in Expression Language (EL) ; 내장객체 

 

내장 객체란?

내부적으로 변수 선언과 초기화 작업이 자동으로 되는 개체로서 개발자는 내장 객체를 사용할때 참조변수의 이름을 기억하고 있다가 참조변수로 바로 접근하여 사용.

EL에서도 JSP처럼 내장 객체를 지원하므로 필요한 객체는 내장 객체를 참조변수 이름으로 바로 사용할 수 있음.

 

 

EL에서 지원하는 내장 객체는 다음과 같다.

 

 

 

 

 

index.jsp : 사용자로 부터 입력을 받고 process.jsp에 request를 보냄.

 

process.jsp : EL을 사용하여 사용자의 이름을 print함

 

 

 

 

 

EL sessionScope example

 

 

 

 

 

EL cookie example

 

 

 

 

Reserve words in EL

 

 

 

LIST

'Web Developement' 카테고리의 다른 글

12. JSP  (0) 2021.01.20
11. JSP 프로젝트 만들기(Spring-GitHub연동)  (0) 2021.01.18
10-2. jQuery (Traversing ~ AJAX)  (0) 2021.01.18
10-1. jQuery  (0) 2021.01.17
9-2. JavaScript로 AJAX 구현하는 간단한 예제  (0) 2021.01.15