서블릿 JSP

Servlet EL, JSTL태그

짱코딩러 2022. 9. 22. 20:44

 

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