WHAT WE LEARN

JSP와 6가지 요소

오래먹는오레오 2021. 3. 1. 14:57

JSP란 Java Server Page의 줄인 말로 HTML코드에 JAVA코드를 넣어 동적 웹페이지를 생성하는 웹 어플리케이션도구로써 실행 되면 Servlet으로 변환되어 웹 어플리케이션 서버에서 동작하게 된다.

 

Servlet이란 웹페이지를 동적으로 생성하기위한 서버측 프로그램으로 WAS에서 컴파일되고 동작한다.

 

JSP의 구성요소에는 6가지가 존재한다.

  1. Script 요소

  2. 지시어 (Directive)

  3. 내장객체

  4. 액션태그

  5. 표현언어

  6. 사용자 정의태그, JSTL

Script 요소

- 스크립트릿 <%~~~%> => JSP페이지 내부에 자바 소스코드를 삽입한다.

- 표현식 <%=~~~%> => HTML 요소 내에 값을 넣기 위해 사용한다.

- 선언 <%!~~~%> => JSP페이지 내부에 자바 메서드를 선언한다.

 

지시어 (Directive)

지시어는 JSP에대한 설정 정보 또는 JSP에 다른 문서를 포함할때 사용한다.

- <%@page~~~%> => 스크립트 언어, 에러페이지 지정, 버퍼 설정등을 정의한다

- <%@include~~~%> => 번역단계에서 다른 문서를 포함 시킨다

- <%@taglib~~~%> => 태그 라이브러리를 선언한다

 

내장 객체

JSP 컨테이너에의해 개발자들이 명시적으로 선언하지 않고 바로 사용할 수 있는 자바 객체(사전에 정의된 객체)

- request => 클라이언트의 요청을 담은 객체

- response => 서버의 응답을 담은 객체

- out => 출력을 클라이언트로 보내는 객체

- session => 서버측 웹 컨테이너에 사용자의 상태를 관리하는 객체

- application => 어플리케이션 전반에 걸친 정보를 관리하는 객체

- config => 페이지 관련하여 서블릿을 설정하는 객체

- PageContext => 현재 페이지 내용을 저장하고 있는 객체

- Page => 페이지에대한 실제 인스턴스를 저장하고 있는 객체

- Exception => 이전 페이지 에러를 저장하고 있는 객체

 

액션태그

액션태그는 JSP페이지 내에서 어떤동작을 하도록 지시하는 태그이다

- <jsp:include> => 페이지가 요청될때 해당 태그가 위치한곳에 파일을 포함

- <jsp:useBean> => javaBean을 찾고 인스턴스 (id: 인스턴스 이름, class: 빈즈의 패키지 경로, Scope:빈즈가 사용될 범위(page, request,session, application))

- <jsp:setProperty> => javaBean의 프로퍼티 설정(HTML form처리와 Data base연동시에 이용, 프로그램 중복을 줄이고 유지보수는 원활하게 할 수 있다)

- <jsp:getProperty> => javaBean의 프로퍼티를 가져온다

- <jsp:forward> => 하나의 JSP페이지에서 다른 JAP페이지로 강제이동

- <jsp:plug-in> => javaBean또는 Applet을 현재 JSP페이지에 포함 시킬때

- <jsp:element> => XML태그를 동적으로 정의

- <jsp:attribute> => 동적으로 정의된 XML태그의 속성을 정의

- <jsp:body> => 동적으로 정의된 XML태그의 본문을 정의

- <jsp:text> =>JSP페이지와 문서에 템플릿 텍스트를 쓰는데 사용

- <jsp:param> => Include된 페이지와 문서에 템플릿 텍스트를 쓰는데 사용(include된 페이지에 request.getParameter가 있어야한다)

 

표현 언어(EL => Expression Language)

- 스크립트 요소의 사용없이 JSP페이지에 값을 표현하는 태그기반의 새로운 언어, 기본 문법은 ${expr}이며 표현언어의 표현식에는 정수, 부동소수, 문자열, boolean, 내장 null을 사용할 수 있다.

- Script요소를 제외한 나머지 영역에서 모두 사용이 가능하다.

- 액션태그나 JSTL의 속성값으로 사용이 가능하다

- ${}와 #{}의 차이점은 ${}는 해석되는 즉시 적용되며 #{}는 해당값이 사용될때 변수의 내용이 적용되어 지연적용이라 한다

(${} = 깊은복사, #{} = 얕은복사 느낌)

 

JSTL(JSP Standard Tag Library)

자바언어의 조건문 반복문을 HTML내에서 태그요소를 사용하여 구현할 수 있게 해준다.

 

1. <c:out> - <%=~~~%>와 같은 역할을 하며 표현식에 사용된다

2. <c:set> - JSP에 사용될 변수를 지정하며 범위를 설정할 수 있다

3. <c:remove> - 변수를 제거한다

4. <c:catch> - 에러를 캐치하고 이를 처리한다

5. <c:if> - 조건문이 참일 경우 본문에 포함한다

6. <c:choose> -조건 태그이며 배타적 조건부 연산에 사용한다

7. <c:when> - choose태그가 true일 경우에 본문에 포함한다

8. <c:otherwise> - choose태그가 false일 경우 본문에 포한 한다

9. <c:import> - 설정된 URL 자원을 삽입한다

10. <c:forEach> - 컬렉션이나 Map과같은 유형을 허용하고 요소를 순서대로 처리한다

11. <c:forToken> - 설정한 구분자로 분리된 토큰을 순서대로 처리한다

12. <c:param> - import태그에 설정된 url파라메터를 추가한다

13. <c:redirect> - 새로운 url로 리다이렉트 시킨다

14. <c:url> - url을 재생성한다.