EL태그(Expression Language)
jsp출력을 편하게 하기 위한 태그
${"Hello"} <br>
<%= "Hello" %> <br>
<% out.println("Hello"); %>
기존 JSP Code | EL을 이용한 Code |
request.getParameter("name"); | ${param.name} ${param["name"]} |
request.getAttribute("name"); | ${name} |
Member m = (Member)request.getAttribute("member"); m.getName(); |
${member.name} |
List list = (List)request.getAttribute("list"); list.get(0); |
${list["0"]}, ${list.get(0)} |
종류 | EL식에 사용될 수 있는 연산자 |
산술 | +, -, *, / (or div), % (or mod) |
관계형 | == (or eq), != (or ne), < (or lt), > (or gt), <= (or le), >= (or ge) |
조건 | a ? b : c |
논리 | && (or and), || (or or), ! (or not) |
null 검사 | empty |
*EL식은 연산할 수 있게 만들어진 애라서 문자열을 비교할때 .equals가 아니라 ==로 비교해도 잘 출력됨
내장 객체 | |
param | 파라미터 값을 불러올 때 |
paramValues | 파라미터 값을 배열로 불러올 때 |
pageScope | page영역의 객체를 참조 할 때 |
requestScope | request영역의 객체를 참조 할 때 |
sessionScope | session영역의 객체를 참조 할 때 |
applicationScope | application영역의 객체를 참조 할 때 |
cookie | 쿠키 객체를 참조 할 때 |
initParam | 초기 context 파라미터 조회 |
pageContext | context 객체를 참조 할 때 |
<%
pageContext.setAttribute("name","pageMan");
request.setAttribute("name","requestMan");
session.setAttribute("name","sessionMan");
application.setAttribute("name","applicationMan");
%>
name : ${name}<hr>
page 속성 : ${pageScope.name}<br>
request 속성 : ${requestScope.name}<br>
session 속성 : ${sessionScope.name}<br>
application 속성 : ${applicationScope.name}<br>
JSTL(JSP Standard Tag Library)
jsp을 깔끔하게 작성하기 위한 태그
사용하기 전에 jstl.jar파일과 standard.jar을 적용해 주고,
jsp에 적절한 지시자를 추가해 준다.(식별자 생성)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
기능 | prefix | 기본 URI |
기본 기능 | c | http://java.sun.com/jsp/jstl/core |
형식화 | fmt | http://java.sun.com/jstl/fmt |
데이터베이스 작업 | sql | http://java.sun.com/jstl/sql |
XML 처리 | x | http://java.sun.com/jstl/xml |
함수 처리 | fn | http://java.sun.com/jsp/jstl/functions |
<c:set>
<c:set var="변수이름" value="변수 값" [scope="영역"]>
변수에 값을 설정(변수 선언)
<c:set var="name" value="김철수" scope="request"/>
<%request.setAttribute("name", "김철수"); %>
<c:out value="출력할 값" [default="디폴트값"]>
변수의 값을 출력(<%= %>를 대체)
<c:remove var="변수명" [scope="영역"]>
변수에 설정된 값을 제거(영역 생략시 전체 영역에서 삭제됨)
<c:if >
조건에 따라 처리를 달리 할 때 사용(else는 없고 if문 만 있는 조건식)
<c:if test="${param.color == 1 }">
<span style="color: red">빨강</span>
</c:if>
//value 값이 1인애를 받았으면 빨강 뿌려~
<c:choose> , <c:when> , <c:otherwise>
여러 조건에 따라 처리를 달리 할 때 사용(if else문)
<c:choose>
<c:when test="${param.fruit == 1}"> 싱싱한 체리 </c:when> //받은값이 1이면 싱싱한 체리
<c:when test="${param.fruit == 2}"> 말랑한 복숭아 </c:when> //2면 복숭아
<c:otherwise><span>X</span></c:otherwise> //둘다 아니면 X뿌려!
</c:choose>
<c:forEach>
<c:forEach var="숫자를담을변수" begin="시작숫자" end="종료숫자" step="증가크기">
<c:forEach var="변수명" items="배열명" varStatus="상태용 변수">
for문
//배열 movieList의 값을 싹 뿌려(move로 사용)
<c:forEach var="movie" items="${movieList}"> ${movie}</c:forEach>
//
<c:foreach var="n" items="${list}" varStatus="status">
<c:out value="${status.index}" /> / <c:out value="${status.end}" />
</c:foreach>
${status.current} 현재 for문의 해당하는 번호
${status.index} 0부터의 순서
${status.count} 1부터의 순서
${status.first} 첫 번째인지 여부
${status.last} 마지막인지 여부
${status.begin} for문의 시작 번호
${status.end} for문의 끝 번호
${status.step} for문의 증가값
<c:url>
<c:url var="변수이름" value="url경로" var="변수명" scope="영역"/>
url을 재 작성
<c:if test="${param.loginFail eq 'true'}">
<div class="login-fail">아이디 혹은 비밀번호가 일치하지 않습니다.</div>
</c:if>
<c:redirect>
<c:forTokens>
구분자로 분리된 각각의 토큰을 처리
<c:forTokens var="city" items="서울.인천,대구.부산" delims=",">
${city} <br>
</c:forTokens>
<hr>
<c:forTokens var="city" items="서울.인천,대구.부산" delims=",.">
${city} <br>
</c:forTokens>
<c:catch>
예외처리에 사용
xml문서에서는 특별한 태그들로 서버의 환경설정을 함.
이 xml에서 자주 사용하는 기능들을 모아놓은 태그들임.
<x:out>
<fmt:formatNumber value="${cVo.sumPrice}" pattern="#,###,###"/>
<sec:authoirize>
if문을 걸어서 session체크하는 것과 동일한 기능
표현식 | 설명 |
hasRole('권한') | 해당 권한을 가지고 있으면 TRUE |
hasAnyRole('권한1','권한2') | 해당 권한들을 가지고 있으면 TRUE |
principal | 현재 사용자를 나타내는 주요 객체에 대한 정보 |
authentication | Authentication객체에 직접 접근 가능 |
permitAll | 모두 허용 |
denyAll | 모두 불가 |
isAnonymous() | 익명사용자라면 TRUE |
isRememberMe() | remember-me 사용자라면 TRUE |
isAuthenticated() | 사용자가 익명이 아니라면 TRUE |
isFullyAuthenticated() | 사용자가 익명이 아니고, remember-me 기능이 비활성화된 경우 TRUE |
'서블릿 JSP' 카테고리의 다른 글
JSP DB연동하기, 커넥션 풀(DBCP) (0) | 2022.09.30 |
---|---|
JSP MultipartRequest로 파일 업로드 (0) | 2022.09.29 |
Servlet 자바빈, 액션태그 (0) | 2022.09.18 |
Servlet 저장소 (0) | 2022.09.17 |
JSP jsp태그 (0) | 2022.09.13 |