JSP 내장 객체와 EL 사용법
- request: 현재 HTTP 요청을 대표하는
HttpServletRequest객체입니다. 파라미터, 헤더 등의 요청 정보에 접근할 수 있습니다. - response: 현재 HTTP 응답을 대표하는
HttpServletResponse객체입니다. 응답 타입, 쿠키 추가 등의 응답 설정이 가능합니다. - session: 현재 세션을 대표하는
HttpSession객체입니다. 사용자의 세션 정보에 접근하거나 수정할 수 있습니다. - application: 웹 애플리케이션의 서블릿 콘텍스트에 해당하는
ServletContext객체입니다. 애플리케이션 수준의 파라미터나 속성에 접근할 수 있습니다. - pageContext: 현재 JSP 페이지에 대한 콘텍스트 정보를 담고 있는 객체입니다. 다양한 범위(Scope)의 속성에 접근하거나 JSP 페이지의 다양한 측면을 관리할 수 있습니다.
- config: 현재 JSP 페이지의 서블릿 구성을 담고 있는
ServletConfig객체입니다. - page: 현재 JSP 페이지의 인스턴스를 참조하는 객체입니다. 일반적으로 사용되지는 않습니다.
- out: JSP 페이지의 출력 내용을 담당하는
JspWriter객체입니다. HTML 또는 다른 컨텐츠를 클라이언트로 출력할 때 사용합니다. - exception: 오류 페이지에서 예외 정보에 접근할 때 사용하는 객체입니다. 오류 페이지에서만 사용 가능합니다.
Spring MVC가 추가로 제공하는 객체
Spring MVC는 Model, ModelMap 또는 ModelAndView 객체를 통해 모델 데이터를 JSP와 같은 뷰에 전달합니다. 이러한 모델 객체는 JSP에서 사용하기 위해 스프링이 자동으로 관리합니다. 특히, 모델 객체에 저장된 데이터는 JSP 페이지의 EL(Expression Language)을 통해 접근할 수 있습니다.
또한, sessionScope, requestScope, applicationScope와 같은 객체를 통해 JSP 내에서 각각 세션, 요청, 애플리케이션 범위의 속성에 접근할 수 있습니다. 예를 들어, sessionScope.someAttribute는 세션에서 someAttribute 속성 값을 가져옵니다.
추가적인 Spring MVC 컨텍스트 객체
- Spring's form tags: Spring MVC는 JSP에서 사용할 수 있는 폼 처리를 위한 태그 라이브러리를 제공합니다. 이를 통해 폼 백엔드 데이터와의 바인딩, 유효성 검사 등을 쉽게 할 수 있습니다.
- Messages: 국제화(i18n) 지원을 위해 메시지 소스에서 메시지를 가져오는 기능을 JSP에서 사용할 수 있습니다.
위에서 언급한 내장 객체들과 Spring MVC의 추가 기능을 통해 JSP 페이지에서 다양한 데이터와 서버 측 리소스를 효율적으로 사용하고 관리할 수 있습니다.
JSP의 화면에서 EL표현으로 사용가능한 객체
JSP 파일에서 사용할 수 있는 객체들은 JSP의 Implicit Objects(내장 객체)와 Spring MVC가 제공하는 추가적인 객체들로 나눌 수 있습니다. 여기서 sessionScope와 같은 객체는 JSP의 내장 객체 중 하나입니다. 이러한 객체들은 별도의 선언이나 참조 없이 JSP 페이지 내에서 직접 사용할 수 있습니다.
JSP 내장 객체와 EL 표기법 사용법
JSP 페이지에서 사용할 수 있는 내장 객체들은 다음과 같으며, EL 표기법으로 주로 데이터를 읽는 용도로 사용됩니다.
request
- 설명: 현재 HTTP 요청에 대한 정보를 담고 있습니다.
- EL 사용 예제:
${requestScope.paramName}혹은${param.paramName}을 통해 요청 파라미터에 접근합니다.
session
- 설명: 사용자 세션과 관련된 정보를 담고 있습니다.
- EL 사용 예제:
${sessionScope.attributeName}을 통해 세션 속성에 접근합니다.
application
- 설명: 애플리케이션 전역에서 공유되는 정보에 접근합니다.
- EL 사용 예제:
${applicationScope.attributeName}으로 애플리케이션 스코프의 속성 값을 읽습니다.
pageContext
- 설명: 페이지의 컨텍스트 정보에 접근할 수 있습니다. 다양한 스코프와 페이지 수준의 속성을 관리합니다.
- EL 사용 예제:
${pageContext.request.contextPath}로 현재 애플리케이션의 콘텍스트 경로에 접근합니다.
exception
- 설명: 오류 페이지에서 예외 정보에 접근할 때 사용됩니다.
- EL 사용 예제:
${exception.message}로 예외 메시지에 접근합니다. 이는 오류 페이지에서만 사용 가능합니다.
JSP의 EL(Expression Language)
1. EL 사용의 이유
JSP에서는 초기에 Java 코드를 직접적으로 스크립트릿 형식으로 삽입하여 사용하였습니다. 그러나 이러한 방식은 다음과 같은 문제점이 있었습니다:
- 코드와 프레젠테이션의 혼합으로 가독성 저하
- 유지보수의 어려움
- 코드의 재사용성 저하
이를 해결하기 위해 EL(Expression Language)가 도입되었으며, EL을 사용하면:
- 코드와 프레젠테이션을 분리하여 가독성 향상
- 코드의 간결성과 효율성 향상
- 객체의 속성에 쉽게 접근 가능
2. EL의 도입 버전
EL은 JSP 2.0부터 공식적으로 지원되기 시작했습니다.
3. EL의 사용 방법
<%@ page isELIgnored="false" %>
EL은 ${...} 형식으로 데이터를 참조하거나 표현하는 데 사용됩니다.
기본 문법:
${expression}: 값을 평가하고 출력.또는[]: 객체의 속성에 접근
예제:
- 기본 사용법
${userName}- 배열 또는 리스트 접근
${userList [0]. name}- 맵(Map) 접근
${userMap ["key"]. name}
물론이죠! 아래는 JSP의 Expression Language(EL)에서 사용되는 연산자와 그에 대한 예제를 Markdown 형식으로 제공한 내용입니다.
JSP EL (Expression Language) 연산자
1. 산술 연산자
- 기본 연산자:
+,-,*,/(또는div),%(또는mod)
예제:
${3 + 4} <!-- 결과: 7 -->
${4 - 2} <!-- 결과: 2 -->
${3 * 2} <!-- 결과: 6 -->
${6 / 3} <!-- 결과: 2 -->
${5 % 3} <!-- 결과: 2 -->
2. 논리 연산자
- 기본 연산자:
and,or,not
예제:
${true and false} <!-- 결과: false -->
${true or false} <!-- 결과: true -->
${not true} <!-- 결과: false -->
3. 관계 연산자
- 기본 연산자:
==(또는eq),!=(또는ne),<(또는lt),>(또는gt),<=(또는le),>=(또는ge)
예제:
${5 == 5} <!-- 결과: true -->
${5 != 3} <!-- 결과: true -->
${3 < 5} <!-- 결과: true -->
${5 > 2} <!-- 결과: true -->
${4 <= 4} <!-- 결과: true -->
${7 >= 6} <!-- 결과: true -->
4. 조건 연산자
- 기본 연산자:?
:
예제:
${(5 > 3) ? 'True' : 'False'} <!-- 결과: True -->
5. empty 연산자
empty연산자는 변수나 값이 null 또는 빈 값인지를 확인합니다.
예제:
${empty name} <!-- 만약 name이 null이거나 빈 문자열이면 true를 반환 -->
6. 비교
- EL에서는 대상 객체의 타입에 따라 적절한 비교를 수행합니다. 예를 들어, 문자열로 표현된 숫자도 숫자로 비교됩니다.
예제:
${"5" > 3} <!-- 결과: true -->
JSTL (JSP Standard Tag Library)
1. 개요
JSTL은 JSP의 기능을 향상하기 위해 도입된 태그 라이브러리입니다. JSP 1.2와 함께 도입되었으며, 2002년에 JSTL 1.0이 처음 발표되었습니다. 이 라이브러리를 사용하면 JSP 페이지에서 자바 코드를 직접 작성하지 않고, 태그를 사용하여 일반적인 작업을 수행할 수 있습니다. 이로 인해 코드의 가독성이 향상되고, 유지 관리가 더 쉬워집니다.
2. 사용 방법
태그 라이브러리 선언:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
주요 태그와 예제
- c:forEach - 반복 처리
<c:forEach var="item" items="${list}"> <p>${item}</p> </c:forEach>- c:if - 조건 처리
<c:if test="${user.loggedIn}"> <p> 로그인되었습니다. </p> </c:if>- c:set - 변수 설정
<c:set var="userName" value="${user.name}" />- c:choose, c:when, c:otherwise - 다중 조건 처리
<c:choose> <c:when test="${score >= 90}"> <p> A 등급 </p> </c:when> <c:when test="${score >= 80}"> <p> B 등급 </p> </c:when> <c:otherwise> <p>C 등급</p> </c:otherwise> </c:choose>
3. EL(Expression Language)과의 연계
EL과 JSTL은 함께 사용되어 JSP 페이지의 로직을 더욱 간결하고 효과적으로 만들어줍니다. EL은 ${...} 형태로 표현되며, 데이터를 참조하거나 표현하는 데 사용됩니다.
JSP 기본 구성 및 활용 (디렉티브, 스크립트 요소, EL, 표준 액션 태그, 커스텀 태그)
Eclipse에서의 Dynamic Web Project 구조 Dynamic Web Project를 생성한 후에는 왼쪽의 Project Explorer 창에서 다음과 같이 생성된 폴더들을 확인할 수 있습니다. 1) proj 설명: 방금 생성한 프로젝트를 나타냅니다
class.soyiyou.com
'웹 개발(Web Development) > Spring' 카테고리의 다른 글
| [Spring] 데이터 전송과 응답 방법 (0) | 2024.03.17 |
|---|---|
| [Spring] @RequestMapping 이란? 다양한 방식의 매개변수 (0) | 2024.03.14 |
| STS(Spring Tool Suite) 자동 주석 템플릿 설정 방법 (0) | 2024.03.04 |
| Spring MVC(Spring Legacy Project) (0) | 2024.03.03 |
| Spring Framework vs Spring Boot (0) | 2024.03.03 |