반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- MemoryStream
- 동기화
- ObjectInputStream
- interrupted()
- Linux세팅
- String char[] 형변환
- 스레드그룸
- Linux셋팅
- include액션태그
- 표현 언어
- 상관서브쿼리
- 메모리스트림
- isinterrupted()
- 아이디중복
- ID중복
- interrupt()
- StringReader
- Daemon()
- ThreadGroup()
- char[] String 형변환
- StringWriter
- include 지시자
- include지시자
- 상관 서브 쿼리
- sleep()메소드
- 리눅스셋팅
- InputDialog
- 리눅스세팅
- first-child
- first-of-child
Archives
- Today
- Total
다연이네
[days08] c태그들 (c:if, c:choose, c:forEach, c:forTokens, c:url, c:redirect c:out, c:catch) 본문
JSP
[days08] c태그들 (c:if, c:choose, c:forEach, c:forTokens, c:url, c:redirect c:out, c:catch)
다연 2021. 1. 5. 13:49반응형
c:if
흐름 제어 태그
<c:if test="조건식"></c:if>
<c:if test="true"></c:if> true면 실행
<c:if test="어떤 문자열 "></c:if> 항상 false
<c:if test="${EL 표현식 } "></c:if> EL표현식의 참거짓에 따라
<c:if test="<%= 표현식%> "></c:if> 표현식의 참거짓에 따라
주의
<c:if test="어떤 문자열 "></c:if> 항상 false
<c:if test="${param.name}">
name: ${param.name }<br>
</c:if>
<!-- 그냥 문자열일 경우 항상 false (파라미터 념겨줘도 안뜸) -->
c:if 의 var 값은 그 조건의 결과값(T/F)을 담는다.
<c:if test="${param.age ge 20 }" scope="page" var="result">
20살 이상이다.<br>
</c:if>
result = ${result } <br> <!-- 위 조건의 결과값(true/false 담음, 쓸 일은 그닥) -->
- 파라미터 값 홀 짝 판단하기
<c:set var="num" value="${param.num }"></c:set>
<c:if test="${ num mod 2 eq 0 }">
짝수
</c:if>
<c:if test="${ num mod 2 ne 0 }">
홀수
</c:if>
c:choose
java의 switch case문
- 국어점수 수우미양가 판단하기
<form action="">
국어 점수 : <input type="text" name="kor" value="${param.kor }" />
</form>
<p id="demo">
<c:choose>
<c:when test="${90<= param.kor && param.kor<=100 }">수</c:when>
<c:when test="${80<= param.kor && param.kor<90 }">우</c:when>
<c:when test="${70<= param.kor && param.kor<80 }">미</c:when>
<c:when test="${60 le param.kor and param.kor < 70 }">양</c:when>
<c:otherwise>가</c:otherwise>
</c:choose>
</p>
c:forEach
배열, 컬렉션, 맵에 저장되어 있는 값들을 순차적으로 처리할 때 사용
-맵 출력
<%
Map<String, String> map = new HashMap<>();
map.put("id","admin");
map.put("addr","seoul");
%>
<c:forEach var="entry" items="<%=map %>">
<li>${entry.key }-${entry.value }</li>
</c:forEach>
-배열(을 변수에 담기)
배열 길이 출력
<%@ page import="days07.ELTest"%>
<c:set var="m" value="<%=new int[] {1,3,5,4,2} %>"></c:set>
배열 크기: ${fn:length(m) }<br> <!-- fn 지시자 추가 필요 -->
배열 크기: ${ELTest.getLength(m) }<br> <!-- 어제만든 메소드 -->
c:forEach의 varStatus: 반복할때 상태값 저장
<c:forEach items="${m}" var="n" varStatus="status">
${status.first} - ${status.last} - m[${status.index}] - ${status.count} : ${n }<br>
</c:forEach>
${status.first} 첫번째 값인지 물음
${status.last} 마지막 값인지 물음
${status.index} 위치값 반환 0, 1, 2, ...
${status.count} 앞부터 1, 2, 3, ..
-sum 변수를 선언 후 1~10=55 출력
1번방법
<c:set var="sum" value="0"></c:set>
<c:forEach begin="1" end="10" step="1" var="i">
<c:if test="${i ne 10 }">
${i}+
</c:if>
<c:if test="${i eq 10 }">
${i}
</c:if>
<c:set var="sum" value="${sum + i }"></c:set>
</c:forEach>
=${sum }
2번방법
<c:set var="sum" value="0"></c:set>
<c:forEach begin="1" end="10" step="1" var="i">
${i}
<c:if test="${i lt 10 }">+</c:if>
<c:set var="sum" value="${sum + i }"></c:set>
</c:forEach>
=${sum }
3번방법(권장)
<c:set var="sum" value="0"></c:set>
<c:forEach begin="1" end="10" step="1" var="i">
${i += (i eq 10 ? "":"+" )}
<c:set var="sum" value="${sum + i }"></c:set>
</c:forEach>
=${sum }
</body>
c:forTokens
마치 split 하듯이 사용
<c:forTokens items="빨간색, 녹색, 파란색" delims="," var="color">
${color }<br> <!-- 마치 split하듯이 사용 (잘쓰진 않음) -->
</c:forTokens>
URL 처리 태그
- c:url 태그
- c:redirect 태그
<%
String url = "http://search.daum.net/search?w=blog";
response.sendRedirect(url);
%>
해당 코딩이 있으면 해당 url로 페이지가 열린다.
강사님은 이렇게 많이 사용하지만, c:를 사용하는 방법도 알고있자.
<c:url var="searchUrl" value="http://search.daum.net/search"></c:url>
<c:redirect url="${searchUrl }">
<c:param name="w" value="blog"></c:param>
<c:param name="q" value="test"></c:param>
</c:redirect>
c:out
<%
String name = "<b>admin</b>";
// <b>admin</b%gt; 문자변환이 이루어진 후 출력하는게 c:out (태그로 인식 안함)
%>
name: <%=name %><br>
name: <c:out value="<%=name %>"></c:out><br>
<!-- c:out에 담으면 <b>문자가 그대로 출력 -->
name: <c:out value="<%=name %>" escapeXml="false"></c:out><br>
name: <c:out value="<%=name %>" escapeXml="true" default="value속성값x 출력할 기본값"></c:out><br>
파라미터를 통해 파일 읽기
<%
FileReader reader = null;
try{
//http://localhost/jspPro/days08/ex04_02.jsp?path=days07/ex01.jsp
//getServletContext().getRealPath(path) 기억
String path = request.getParameter("path");
reader = new FileReader( getServletContext().getRealPath(path) );
%>
<pre>
소스 코드 = <%= path %>
<br>
<c:out value="<%= reader %>" escapeXml="true"></c:out>
</pre>
<%
}catch(Exception e){
%>
에러 : <%= e.getMessage() %>
<%
}finally{
if( reader!= null){
try{
reader.close();
}catch(IOException ex){}
}
}
%>
c:catch
반응형
'JSP' 카테고리의 다른 글
[days08] JSTL이 제공하는 EL함수 (0) | 2021.01.05 |
---|---|
[days08] 숫자 및 날짜 포맷팅 처리 태그 (fmt) (0) | 2021.01.05 |
[days07] 표준 태그 라이브러리(JSTL) (0) | 2021.01.04 |
[days07] EL(표현 언어) (0) | 2021.01.04 |
[days07] 세션을 사용해서 로그인 처리(상태 관리)(회원/비회원/관리자) (0) | 2021.01.04 |
Comments