JSP 2.0에서는 디자이너와 공유하는 페이지 안에서 복잡한 자바 코드를 제거하는 방식으로 발전했다.
형식 | 타입 |
---|---|
<jsp:include> | 이미 있는 JSP를 현재 JSP에 포함하는 태그 |
<jsp:forward> | 서블릿에서 RequestDispatcher 클래스의 포워딩 기능을 대신하는 태그 |
<jsp:useBean> | 객체를 생성하는 new 연산자를 대신하는 태그 |
<jsp:setProperty> | setter 대신하는 태그 |
<jsp:getProperty> | getter 대신하는 태그 |
JSP 2.0부터 도입된 데이터 출력 기능으로 자바 코드 표현식을 더 편리하게 사용하기 위해 표현 언어가 도입됐다.
JSP에서 표현 언어를 사용하려면 페이지 디렉티브 태그에서 isELIgnored=false
를 설정해야 한다.
표현 언어는 ${표현식 or 값 }
방식으로 사용한다.
구분 | 내장 객체 | 설명 |
---|---|---|
scope | pageScope | JSP의 page와 같은 기능, page 영역에 바인딩된 객체를 참조 |
requestScope | JSP의 request와 같은 기능, request 영역에 바인딩된 객체를 참조 | |
sessionScope | JSP의 session과 같은 기능, session 영역에 바인딩된 객체를 참조 | |
applicationScope | JSP의 application과 같은 기능, application 영역에 바인딩된 객체를 참조 | |
request parameter | param | request.getParameter() 메서드와 같고 한 개의 값을 전달 |
paramValues | request.getParameterValues() 메서드와 같고 여러 개의 값을 전달 | |
header value | header | request.getHeader() 메서드와 같고 한 개의 요청 헤더 이름 정보 전달 |
headerValues | request.getHeaderValues() 메서드와 같고 여러 개의 요청 헤더 이름 전달 | |
cookie value | Cookies | 쿠키 이름의 값 반환 |
JSP description | pageContext | pageContext(=현재 페이지 환경 정보) 객체 참조할 때 사용 |
initial parameter | initParam | 컨텍스트의 초기화 매개변수 이름 값 반환 |
pageScope : 현재 페이지 JSP 태그 전달값
requestScope : 이동 전 페이지 JSP 태그 전달값
sessionScope : 세션 전달값
applicationScope : 같은 서버 내 다른 브라우저 JSP 태그 전달값
<jsp:useBean id="dto" class="dto.MemberDTO" />
<jsp:setProperty property="id" name="dto" value="elid" />
<jsp:setProperty property="pw" name="dto" value="elid" />
<jsp:setProperty property="name" name="dto" value="elname" />
<jsp:setProperty property="email" name="dto" value="elmail" />
<jsp:setProperty property="phone" name="dto" value="01021212121" />
<jsp:setProperty property="address" name="dto" value="서울" />
<jsp:setProperty property="indate" name="dto"
value="<%=new SimpleDateFormat(\"yyyy년 MM월 dd일\").format(new Date()) %>" />
<h1>jsp 회원 정보 확인</h1>
<h3><jsp:getProperty property="id" name="dto" /></h3>
<h3><jsp:getProperty property="pw" name="dto" /></h3>
<h3><jsp:getProperty property="name" name="dto" /></h3>
<h3><jsp:getProperty property="email" name="dto" /></h3>
<h3><jsp:getProperty property="phone" name="dto" /></h3>
<h3><jsp:getProperty property="address" name="dto" /></h3>
<h3><jsp:getProperty property="indate" name="dto" /></h3>
<h1>jsp 회원 정보 확인</h1>
<h3><%=dto.getId() %></h3>
<h3><%=dto.getPw() %></h3>
<h3><%=dto.getName() %></h3>
<h3><%=dto.getEmail() %></h3>
<h3><%=dto.getPhone() %></h3>
<h3><%=dto.getAddress() %></h3>
<h3><%=dto.getIndate() %></h3>
<h1>el 회원 정보 확인</h1>
<h3>${ dto.id }</h3>
<h3>${ dto.pw }</h3>
<h3>${ dto.name }</h3>
<h3>${ dto.email }</h3>
<h3>${ dto.phone }</h3>
<h3>${ dto.address }</h3>
<h3>${ dto.indate }</h3>
세 방법 모두 같은 결과를 출력하지만, 표현언어로 처리된 값이 보기에 더 깔끔하다.
위에 액션 태그와 표현언어로 구현한 JSP 파일은 여전히 자바 코드를 반복적으로 사용하고 있다. 이런 자바 코드를 제거하기 위해 JSTL이나 커스텀 태그가 등장했다.
다음은 JSTL에서 주로 지원하는 태그이다.
라이브러리 | 세부 기능 | 접두어 | 관련 URI |
---|---|---|---|
core | 변수 지원, 흐름 제어, 반복문, URI | c | java.sun.com/jsp/jstl/core |
국제화 | 지역, 메세지, 숫자, 날짜 형식 | fmt | java.sun.com/jsp/jstl/fmt |
XML | XML 코어, 흐름 제어, XML 변환 | x | java.sun.com/jsp/jstl/xml |
DB | SQL | sql | java.sun.com/jsp/jstl/sql |
function | 컬렉션, 문자열 처리 | fn | java.sun.com/jsp/jstl/functions |
유데미 바로가기 / STARTERS 취업 부트캠프 공식 블로그 보러가기
[길벗]자바 웹을 다루는 기술 - 이병승