Servlet/JSP 기초

bitna's study note·2022년 6월 17일

Servlet/JSP

목록 보기
11/21
post-thumbnail

6월 17일 내용정리

1.JSTL태그 <c:if>
자바의 if문과 비슷한 기능을 제공한다.
<c:if test="조건식">
조건이 참일 경우 실행할 문장
</c:if>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:if test = "${param.color==1 }">
<span style= "color:red;">빨강</span>
</c:if>
<c:if test = "${param.color==2 }">
<span style= "color:yellow;">노랑</span>
</c:if>
<c:if test= "${param.color==3 }">
<span style="color:green;">초록</span>
</c:if>
</body>
</html>

2.JSTL태그 <c:choose>
<c:if>은 else를 사용 할수 없기 때문에 if문을 여러번 중복해서 써야됨
<c:choose>에서 <c:when>, <c:otherwise>와 함께 사용하여 <c:if>단점을 극복
자바의 switch문처럼 사용됨.
<c:choose>
<c:when test="조건1">몸체1</c:when> ->조건1에 만족할때
<c:when test="조건2">몸체1</c:when> ->조건2에 만족할때
<c:otherwise>몸체3</c:otherwise> ->조건에 만족하지않을때
</c:choose>

3.JSTL태그 <c:forEach>
배열, 컬렉션, 맵 등과 같은 집합체에 저장되어, 있는 값들을 순차적으로 꺼낼때 사용
자바의 향상된 for문 형태
<c:forEach var="변수이름" items="${배열이름}" varStatus="status">
${변수이름}
</c:forEach>
*varStatus="status" -> 반복상태 정보를 위한 변수

자바의 for문
<c:forEach var="i" begin="시작 번호" end="끝 번호" step="증가치">
내용
</c:forEach>

4.<c:forEach>관련 추가태그
status.indexitems에지정한집합체의현재반복중인항목의index0부터알려줌{status.index} items에 지정한 집합체의 현재 반복중인 항목의 index를 0부터 알려줌{status.count}현재 몇 번째를 반복 중인지 알려줌.
1부터의 순서.
status.first현재루프가처음인지여부를알려준다.boolean타입{status.first}현재 루프가 처음인지 여부를 알려준다.boolean타입{status.last}현재 루프가 마지막인지 여부를 알려준다.boolean타입

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String[] movielist={"타이타닉","파이스토리"};
pageContext.setAttribute("movielist", movielist );
%>
<table border="1" style="width:100%; text-align:center;">
   <tr>
      <th>index</th><th>count</th><th>title</th>
   </tr>
   <c:forEach var="title" items="${movielist }" varStatus="status">
   <tr>
     <td>${status.index}</td>
     <td>${status.count }</td>
     <td>${title }</td>
   </tr>
   </c:forEach>
</table>

<c:forEach var="movie" items="${movielist}" varStatus="aaa">
<!-- for문과 동일해서 안에 내용 반복 -->
	${movie}<c:if test="${not aaa.last }">,</c:if><br> 
</c:forEach>

<c:forEach var="i" begin="1" end="10"  step="2">
5*${i }=${5*i }&nbsp;
</c:forEach>

<table border="1" style="width:100%; text-align:center;">
   <tr>
      <th>index</th><th>count</th><th>title</th>
   </tr>
 <c:forEach var="title" items="${movielist } begin="1" end="3" step="1" varStatus="status">
	   <tr>
	   	<td>${status.index}</td>
	   	<td>${status.count}</td>
	   	<td>${title}</td>
	   </tr>
</c:forEach>
</table>
</body>
</html>

5.<c:forTokens>
문자열을 구분자로 분리해서 하나씩 추출
<c:forTokens var="토큰을 저장할 변수" items="토큰으로 나눌 문자열" delims="구분자">
몸체
</c:forTokens>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:forTokens var="city" items="서울.인천,대구.부산" delims=",">
${city }<br>
</c:forTokens>

<c:forTokens var="city"  items="서울.인천,대구.부산" delims=",.">
${city }<br>
</c:forTokens>
</body>
</html>

6.JSTL fmt
JSTL 국제화 지역화(달러,엔화...) 태그, 날짜와 숫자 형식을 다루는데 사용

(1)<fmt:formatNumber>

(2)<fmt:formatDate>
아래 코드 참고

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!--taglib은 아래 2가지 모두 사용-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<pre>
<!--오늘날짜 객체생성 하기 위함-->
<c:set var="now" value="<%=new java.util.Date() %>"></c:set>
\${now }:${now}
<fmt:formatDate value="${now}"></fmt:formatDate>
date : <fmt:formatDate value="${now}" type="date"></fmt:formatDate>
time : <fmt:formatDate value="${now}" type="time"></fmt:formatDate>
both : <fmt:formatDate value="${now}" type="both"></fmt:formatDate>
default : <fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default"></fmt:formatDate>
short : <fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short"></fmt:formatDate>
medium : <fmt:formatDate value="${now}" type="both" dateStyle="medium" timeStyle="medium"></fmt:formatDate>
long : <fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"></fmt:formatDate>
full : <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"></fmt:formatDate>

pattern="yyyy년 MM월 dd일 hh시 mm분 ss초":
<fmt:formatDate value="${now}" pattern="yyyy년 MM월 dd일 hh시 mm분 ss초"></fmt:formatDate>

</pre>

</body>
</html>
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글