일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OrCAD 다운로드
- clone
- localhost
- php
- github token
- cmd
- PHPStorm
- run sql script
- github clone
- 에러
- jupyter
- 깃 토큰
- error
- import data
- 단축키
- vscode
- 데이터베이스
- 파이썬
- 오류
- DataGrip
- 클론
- Python
- console창
- csv
- 따옴표 삭제
- error 해결
- MySQL
- Visual Studio Code
- database
- visualstudio code
- Today
- Total
개발 노트
9/8 JSTL을 구성하는 작은 라이브러리들, forEach, forTokens 본문
9/8 JSTL을 구성하는 작은 라이브러리들, forEach, forTokens
hayoung.dev 2022. 9. 15. 19:34[och09]
[JSTL을 구성하는 작은 라이브러리들]
och09 > src > main > webapp > WEB-INF > lib 에
javax.servlet.jsp.jstl-1.2.1.jar
javax.servlet.jsp.jstl-api-1.2.1.jar
설치파일 넣기
webapp 폴더에 cstl, jstl 폴더 생성하기
[jstl]
num.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>두 숫자입력</h2>
<form action="catch.jsp">
첫번째 숫자 : <input type="text" name="num1"><p>
두번째 숫자 : <input type="text" name="num2"><p>
<input type="submit" value="확인">
</form>
</body>
</html>
catch.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- jstl라이브러리인 http://java.sun.com/jsp/jstl/core를 c라고 선언하고 쓰겠다. -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- num에서 호출함. try-catch문과 같음 -->
<c:catch var="e1">
<%
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
%>
나눗셈 결과 : <%=num1/num2 %>
</c:catch>
<c:if test="${e1 != null }">
에러메세지 : ${e1.message }
</c:if>
</body>
</html>
출력 결과
(두번째 숫자에 0을 입력한 경우)
(두번째 숫자에 aa를 입력한 경우)
num2.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>숫자 입력</h2>
<form action="choose.jsp">
숫자 : <input type="text" name="num1"><p>
<input type="submit" value="확인">
</form>
</body>
</html>
choose.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- num2에서 호출 -->
<h2>인사말 Switch유사</h2>
<c:choose>
<c:when test="${param.num1==0}">안녕하세요</c:when>
<c:when test="${param.num1==1 }">Hi Hi</c:when>
<c:when test="${param.num1==2 }">아리가또</c:when>
<!-- switch문과 비슷하다. 0,1,2값이 아닌 경우에 출력된다. -->
<c:otherwise>헐! 누구</c:otherwise>
</c:choose>
</body>
</html>
forEach는 for문과 비슷하다.
color.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String[] color={"red","orange","yellow","green","blue","navy","violet"};
request.setAttribute("color", color);
%>
<!-- jsp:forward page= : 페이지 이동 -->
<%--<jsp:forward page="colorResult.jsp"></jsp:forward> --%>
<jsp:forward page="colorResult2.jsp"></jsp:forward>
</body>
</html>
colorResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 향상형 for문과 같음 -->
<!-- {"red","orange","yellow","green","blue","navy","violet"} -->
<c:forEach var="col" items="${color }">
<font color="${col }">야호</font>
</c:forEach>
</body>
</html>
출력 결과
colorResult2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 1부터 7까지 반복 -->
<c:forEach var="cnt" begin="1" end="7">
<!-- 향상형 for문 -->
<c:forEach var="col" items="${color }">
<font color="${col }" size="${cnt }">야호</font>
</c:forEach>
<br>
</c:forEach>
</body>
</html>
출력 결과
redirect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:redirect url="https://www.naver.com/"></c:redirect>
</body>
</html>
출력 결과 : 네이버 페이지가 켜진다.
set.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<c:set var="num1" value="6"/>
<c:set var="num2" value="2"></c:set>
<c:set var="result" value="${num1+num2 }"></c:set>
<c:set var="divResult" value="${num1/num2 }"></c:set>
<body>
덧셈: ${num1 } + ${num2 } = ${result }<p>
뺄셈: ${num1 } - ${num2 } = ${num1-num2 }<p>
곱셈: ${num1 } * ${num2 } = ${num1*num2}<p>
나눗셈1: ${num1 } / ${num2 } = ${num1/num2 }<p>
나눗셈2: ${num1 } / ${num2 } = ${divResult }<p>
</body>
</html>
출력 결과
set2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var="code" value="1112" scope="request"></c:set>
<c:set var="name" value="온도계" scope="request"></c:set>
<c:set var="price" value="16,000원" scope="request"></c:set>
<jsp:forward page="set2Result.jsp"></jsp:forward>
</body>
</html>
set2Result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>상품정보</h2>
코드 : ${code }<p>
이름 : ${name }<p>
가격 : ${price }
</body>
</html>
출력 결과
<c:forTokens>
token.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var="animals" value="토끼,고양이*강아지,여우"></c:set>
<h2>사자의 생일</h2>
<!-- *이면 *을 기준으로 나누어서 각각을 원소로 만들고 향상형 for문처럼 작동한다.
문자열을 유연하게 나눌 수 있다.-->
<c:forTokens var="an" items="${animals}" delims="*">
${an }<br>
</c:forTokens>
</body>
</html>
출력 결과
colorResult3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<!-- 변수 선언 -->
<c:set var="color" value="red,orange,yellow,green,blue,navy,violet"/>
<c:set var="num" value="1-2-3-4-5-6-7"/>
<body>
<!-- c:forTokens 쓰기위해 원소를 구별할수 있는 일정한 구분자 필요 -->
<c:forTokens var="cnt" items="${num }" delims="-">
<c:forTokens var="col" items="${color }" delims=",">
<font color="${col }" size="${cnt }">야호</font>
</c:forTokens>
<br>
</c:forTokens>
</body>
</html>
출력결과
formDate1.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<!-- Date객체를 선언하여 사용 -->
<c:set var="date1" value="<%=new Date() %>"></c:set>
<body>
오늘 날짜 : <fmt:formatDate value="${date1 }"/><p>
현재 시간 : <fmt:formatDate value="${date1 }" type="time" />
</body>
</html>
출력 결과
formDate2.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<c:set var="date" value="<%=new Date() %>"></c:set>
<body>
<h2>현재 날짜와 시간</h2>
<fmt:formatDate value="${date }" type="both" dateStyle="short" timeStyle="short" /><br>
<fmt:formatDate value="${date }" type="both" dateStyle="medium" timeStyle="medium" /><br>
<fmt:formatDate value="${date }" type="both" dateStyle="long" timeStyle="long" /><br>
<fmt:formatDate value="${date }" type="both" dateStyle="full" timeStyle="full" />
</body>
</html>
출력 결과
formDate3.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<c:set var="date" value="<%=new Date() %>"></c:set>
<body>
<!-- 날짜 사이에 / 넣기 -->
날짜 : <fmt:formatDate value="${date }" type="date" pattern="YYYY/MM/dd (E)" /><p>
<!-- 시간 사이에 : 넣기 -->
시간 : <fmt:formatDate value="${date }" type="time" pattern="hh:mm:ss (a)" />
</body>
</html>
출력 결과
formNumber.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 세자리마다 , 넣어줌. -->
<fmt:formatNumber value="1000000" groupingUsed="true"/><br>
<!-- 소수점을 세 자리까지만 표현하고 반올림. -->
<fmt:formatNumber value="3.1415923" pattern="#.###"/><br>
<!-- 있는 것만 보여줌 -->
<fmt:formatNumber value="3.1" pattern="#.##"/><br>
<!-- 자리가 없으면 0를 넣어줌. -->
<fmt:formatNumber value="3.1" pattern="#.00"/><br>
<!-- 섞어서 사용 가능. -->
<fmt:formatNumber value="121434323453." pattern="#,###.00"/><br>
<!-- \\ : 앞글자 원(한화)자는 특수문자로 인정해줌. -->
<fmt:formatNumber value="250000" type="currency" currencySymbol="\\"/><br>
<fmt:formatNumber value="0.75" type="percent"/><br>
</body>
</html>
출력결과
locale.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<c:set var="date" value="<%=new Date() %>"></c:set>
<body>
<h2>우리나라</h2>
<fmt:setLocale value="ko_kr"/>
<!-- type="currency" : 타입이 화폐-->
금액: <fmt:formatNumber value="1000000" type="currency" /><br>
<!-- 지정한 그 나라 언어로 표현됨. -->
일시: <fmt:formatDate value="${date}" type="both" dateStyle="full"
timeStyle="full" /> <br>
<h2>미국</h2>
<fmt:setLocale value="en_us"/>
금액: <fmt:formatNumber value="1000000" type="currency" /><br>
일시: <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full" /> <br>
<h2>일본</h2>
<fmt:setLocale value="ja_jp"/>
금액: <fmt:formatNumber value="1000000" type="currency" /><br>
일시: <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full" /> <br>
</body>
</html>
출력결과
timeZone.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>각각 나라의 시간 확인</title>
</head>
<c:set var="date" value="<%=new Date() %>"></c:set>
<body>
서울: <fmt:formatDate value="${date}" type="both" /> <br>
<fmt:timeZone value="Asia/Hong_Kong">
홍콩: <fmt:formatDate value="${date}" type="both" /><br>
</fmt:timeZone>
<fmt:timeZone value="Europe/London" >
런던: <fmt:formatDate value="${date}" type="both" /><br>
</fmt:timeZone>
<fmt:timeZone value="America/New_York">
뉴욕: <fmt:formatDate value="${date}" type="both" /><br>
</fmt:timeZone>
</body>
</html>
출력결과
greet.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!-- prefix="fn" : fn으로 지정하면 함수이다.-->
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<c:set var="greet" value="How Are You ?"></c:set>
<body>
원글 : ${greet} <p>
대문자 : ${fn:toUpperCase(greet) }<p>
소문자 : ${fn:toLowerCase(greet) }<p>
How 위치 : ${fn:indexOf(greet,"How")}<p>
Are 위치 : ${fn:indexOf(greet,"Are")}<p>
Are를 Were로 변경 : ${fn:replace(greet,"Are","Were") }<p>
문자 길이 : ${fn:length(greet) }
</body>
</html>
출력 결과
webapp > WEB-INF > tags 폴더 생성 : 사용자가 만드는 태그 저장할 예정
tags > newLine.tag
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ tag body-content="empty" %>
<!-- 외부에서 color, size값을 받아옴 -->
<%@ attribute name="color" required="true" %>
<%@ attribute name="size" required="true" type="java.lang.Integer" %>
<font color="${color }">
<%
for(int i=0 ; i <size ; i++) {
out.println("-");
}
%>
</font>
cstl > book.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- /WEB-INF/tags 폴더에 있는 모든 tags를 가져와서 u로 선언하고 사용 -->
<%@ taglib prefix="u" tagdir="/WEB-INF/tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>좋아하는 책</h2>
<u:newLine color="red" size="20"/><br>
홍길동전<p>
이순신전<p>
김유신전<p>
<u:newLine color="blue" size="27"/>
</body>
</html>
출력결과
tags > max.tag
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ tag body-content="empty" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 파라미터 받음 -->
<%@ attribute name="num1" type="java.lang.Integer" required="true" %>
<%@ attribute name="num2" type="java.lang.Integer" required="true" %>
<!-- 파라미터 돌려줌 -->
<!-- scope="AT_END" : 범위가 끝까지 -->
<%@ variable name-given="maximum" scope="AT_END" variable-class="java.lang.Integer" %>
<%
int result;
if(num1 >= num2) result = num1;
else result = num2;
%>
<c:set var="maximum" value="<%=result %>"></c:set>
cstl > max.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="u" tagdir="/WEB-INF/tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>큰수 찾기</h2>
<u:max num2="33" num1="75" />
큰값 : ${maximum }
</body>
</html>
출력 결과
[och10]
och10 > src > main > webapp > WEB-INF > lib 에
javax.servlet.jsp.jstl-1.2.1.jar
javax.servlet.jsp.jstl-api-1.2.1.jar
설치파일 넣기.
och10 > src > main > webapp > WEB-INF > lib 에
c:oraclexe 폴더에서 ojdbc6.jar 검색 후 파일 복사하여 붙여넣기.
앞으로도 이 3개 파일은 계속 이렇게 가지고다녀야 함.
ora01.jsp
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 연결 확인 -->
<%
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, "scott", "tiger");
/* 화면에 결과 출력 */
if (conn != null) out.println("연결 성공 ㅋㅋ");
else out.println("연결 실패");
conn.close();
%>
</body>
</html>
출력 결과
'프로젝트 기반 JAVA 응용 SW개발 : 22.07.19~23.01.20 > Servlet, JSP' 카테고리의 다른 글
9/20 : MVC 모델1 제작(1/3) (0) | 2022.10.04 |
---|---|
9/19 css 셀렉터, Ajax (0) | 2022.09.24 |
9/7 EL, jsp.forward, 자바빈 (0) | 2022.09.12 |
9/5 <%! %>, application, request, error 처리하는 여러가지 방법, 서블릿 구조 init, doGet, doPost, destroy (0) | 2022.09.12 |
9/2 Servlet, web setting의 get과 post, JSP 시작 (0) | 2022.09.12 |