10_ws_(EL, JSTL)

study/WebServer · 2020. 2. 11. 08:57

@ JSP 내장객체

1. page 영역

- 하나의 페이지 (JSP) 내에서만 객체 공유

-> forward된 페이지에서는 지정된 변수를 사용할 수 없다.

- page 영역을 다루기 위해서는 PageContext라는 JSP 내장객체를 사용해야함

2. request 영역

- 요청을 하는 페이지 + 요청을받는(응답) 페이지에서 객체 공유

-> forward시 객체가 공유됨

- Servlet -> jsp로 객체 공유하는 방법

--> request.setAttribute("속성명", 객체) // 전달

--> Object ojb = request.getAttribute("속성명"); 

3. session 영역

- 하나의 브라우저당 1개의 session 객체가 생성되며 브라우저 내에서 객체를 공유함

- 브라우저가 종료되거나, session이 만료되면 반환됨

4. application 영역

- 하나의 웹 애플리케이션당 하나의 application 내장객체가 생성됨

- 웹 애플리케이션이 종료되기 전까지 모든 페이지에서 객체 공유 가능

- request.getServletContext() 메소드를 호출하여 application 영역 객체를 얻어옴

모든 내장객체들은 

setAttribute("속성명", 객체) 로 세팅,

getAttribute("속성명") 으로 객체를 얻어올 수 있음

@@@ 1. EL 이란?

Expression Language(표현 언어)

<%= %>(표현식), response.getWriter().print()와 같이 JSP에서 화면에

출력에 사용되는 Java코드를 간결하게 사용하는 방법

화면에 표현하고자 하는 코드를 ${value} 의 형식으로 표현하여 작성 가능

객체에 getter로 접근안하고 .으로 접근함

el은 request, session 등 jsp 내장 객체를 구분하지 않아도 자동적으로 입력된 속성명(키값)을 검색하여

존재하는 경우 값을 가져옴

el은 내장 객체에 저장된 속성을 사용할 경우 jsp 표현식 처럼 scriptlet으로 미리 선언하지 않아도

바로 내장 객체에 접근할 수 있다.

EL은 page->request->session->application 순으로 속성을 찾음

@@@ 2.param

param : 전달된 파라미터값을 얻어올떄 사용 == request.getParameter()

paramValues : 전달된 파라미터들을 배열로 받아올떄 사용 == request.getParameterValues()

@@@ 3. 그밖의 EL 내장객체

cookie, initParam, header, pageContext

# El의 장점 중 하나는 EL을 내부적으로 처리하는 도중에

NullPointerException을 발생시키지 않는 다는 것임

속성/프로퍼티/키값이 null 이더라도 예외를 발생시키지 않고 아무것도 출력 않음

단 산술연산에서 null은 0으로 처리 논리연산에서는 false로 처리됨

@cookie

${cookie.saveId.value}

@initParam

web.xml에 설정한 초기화 파라미터를 가져옴 단, 서블릿 초기화 파라미터는 아님

web.xml에서 

<context-param>

<param-name>~~~</param-name>

<param-value>~~~</param-value>

</context-param>

${initParam.email}

@전송방식 (method)조회

method(표현식) : <%=request.getMethod() %>

method(EL) : ${pageContext.request.method}

# EL은 실제 request라는 JSP 내장객체에 직접접근하는게 아님

requestScope라는 request생존범위에 묶여있는 속성에 대한 단순한 맵구조로 제공하는 객체

실제 JSP 내장객체인 request에 접근하기 위해서는 pageContext(페이지정보담고있음)를 통해 접근해야함

pageContext가 가진 접근자

* getErrorData()
* getRequest()
* getResponse()
* getPage()
* getServletConfig()
* getServletContext()
* getSession()

@@@ EL - 연산

원래 EL를 가지고 어떤 연산을 처리하지는 않음 

EL의 본 목적은 속성값을 화면에 출력하기 위한용도로 사용하지만, 간단한 산술연산과 논리연산을 지원함

더하기/뺴기/곱하기 ${숫자1 (+,-,*,/,%) 숫자2}

/ = div , $ = mod

# el의 == 연산은 equals() 와 같은 동작을 함

== = eq, != = ne

# el은 scope에 속성으로 담겨져 있는 Object 타입의 값이 숫자형인 경우 자동으로 인식하여 형변환을

진행한 후 연산을 처리함

@ 객체가 null 또는 비어있는지 확인하는 방법

★ ${empty 객체}

---------------------------------------------------------------------------------

@@JSP Action Tag

1. Scripting include ( 정적 include 방식)

<%@ include file="경로" %>

-> 부모 JSP 파일이 컴파일 되기 전에 페이지에 삽입됨

특징 : include된 페이지에서 scriptlet 상에 선언된 변수를 그래도 사용할수 있음

문제점 : 현재 페이지와 include한 페이지의 변수명 중복문제가 발생함

(협업 시 잦은 유지보수가 일어남)

2. JSP Action Tag

<%@ jsp:include="경로" %>

-> 부모 JSP 파일이 화면에 출력되는 시점에 삽입되어짐

(불러올때 컴파일이 됨 위에껀 부모와 동시에 컴파일이 됨)

문제점 : include 된 페이지에서 scriptlet 상에 선언된 변수를 같이 사용할 수 없다

특징 : 현재 페이지와 include된 페이지의 변수명 중복이 발생하지 않음

+ include된 페이지로 값을 전달할 수 있는 방법이 존재

#JSP파일 간의 값 전달

<jsp:include page="includePage.jsp">

    <jsp:param name="pName" value="갤럭시 폴드"/>

</jsp:include>

--------------------------------------------------------------------------------------

@@@JSTL

Jsp Standard Tag Library

JSP에서 사용하는 커스텀 태그로 공통으로 사용하는 코드의 집합을

사용하기 쉽게 태그화 하여 표준으로 제공한 것을 말함

@JSTL 라이브러리 등록 방법

1) http://tomcat.apache.org/ 접속

2) 좌측 Download -> Taglibs 클릭

3) Standard-1.2.5 -> far files - > 4개 다운

4) WebContent/WEB-INF/lib 폴더에 추가

@JSTL 선언 방법

JSTL을 사용 하고자하는 JSP 페이지의 상단에서 page 지시자 아래에 taglib 지시자를 작성

<%@ taglib prefix="접두사" uri="tld 파일상의 uri" %>

prefix : 접두사. 다른태그와 구별할 수 있는 namespace를 제공

uri(Uniform Resource Identifier) : 자원을 나타내는 유일한 주소(식별자)

실제 웹 주소(url)가 아닌 태그 라이브러리를 나타내는 식별자임

tld 파일상의 uri값을 가리키며, 이 지시자를 통해 작성한 태그 이름과 매칭되는 자바코드를 찾음

*tld(Tag Libarary Descriptor) : 커스텀 태그 정보를 갖고 있는 라이브러리파일

@ JSTL core Libarary

변수와 url, 조건문, 반복문 등의 로직과 관련된 JSTL 문법을 제공

1. 변수의 선언 <c:set>

- 변수를 선언하고 초기값을 대입하는 기능을 가진 태그

- 변수를 선언할 때 scope를 지정할 수 있음

- 사용방법

1) 변수의 타입은 별도로 선언하지 않는다.

2) 초기값을 반드시 기술한다

3) <%c:set%>으로 선언한 변수는 EL에서 사용할 수 있다. 

하지만 scripting요소에서는 사용할 수 없다.

2. 변수의 삭제 <c:remove>

지정한 변수를 모든 scope에서 검색해 삭제함 또는 지정한 scope만 삭제도 가능함

3. 변수의 출력 <c:out>

<c:out> 태그는 데이터를 출력할 때 &lt;, &gt;, &nbsp;, &aml;, \$ 등의 특수문자를

자동으로 이스케이프 시퀀스로 바꿔줌

* 속성 : escapeXml="false" 특수 문자를 그대로 인식함 (태그 인식등)

 

'study > WebServer' 카테고리의 다른 글

9_ws_(파일업로드)  (0) 2020.01.23
8_ws_(페이징처리)  (0) 2020.01.22
7_ws_(암호화)  (0) 2020.01.17
6_ws_(session)  (0) 2020.01.16
5_ws_(mapge 수정정보창)  (0) 2020.01.15