728x90
수업내용
1교시 (09:30-10:20)
- Client Side Script
- HTML, CSS, JS
- Server Side Script
- JSP, Servlet
- jasper.jar로 Client와 Server소통
- 데이터 소통의 도구: plain text, xml, json
Clinent side에서 Server side 보낼 수 있는 방법
- form tag
- HTML로 통신
- location.href
- Ajax()
2교시 (10:30-11:20)
- el_03.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL_3 Main</title>
</head>
<body>
<form action="el_03.jsp" method="get">
첫 번째 수 : <input type="number" name="num1" required="required" /><br>
두 번째 수 : <input type="number" name="num2" required="required" /><br>
<input type="submit" value="계산하기" />
<input type="reset" value="초기화하기" />
</form>
</body>
- el_03.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL_03</title>
</head>
<body>
<h3>EL_03</h3>
<hr>
<!-- el_03.jsp?num1=20&num2=10 -->
num1의 값(JSP) : <%= num1 %><br>
num2의 값(JSP) : <%= num2 %><br>
<br>
num1의 값(EL) : ${param.num1 }<br> <!-- ${num1}은 바인딩 객체가 없어서 출력되지 않는다 -->
num2의 값(EL) : ${param.num2 }<br> <!-- request.getParameter()로 가져온 객체가 없어도 출력된다 -->
num1 + num2(잘못된 코드) : ${param.num1 } + ${param.num2 }<br>
<br>
[사칙 연산]<br>
num1 + num2 : ${param.num1 + param.num2 }<br>
num1 + num2 : ${param.num1 - param.num2 }<br>
num1 * num2 : ${param.num1 * param.num2 }<br>
num1 / num2 : ${param.num1 % param.num2 }<br>
<br>
[비교 연산]<br>
num1이 더 큽니까? : ${param.num1 - param.num2 > 0 }<br>
num1이 더 큽니까? : ${param.num1 > param.num2 }<br>
num1이 더 큽니까? : ${param.num1 gt param.num2 }<br>
num1이 더 큽니까? : ${param.num1 gt param.num2 ? "예" : "아니오" }<br>
<br>
num1과 num2가 같습니까? : ${param.num1 == param.num2 }<br>
num1과 num2가 같습니까? : ${param.num1 eq param.num2 }<br>
<!--
> : gt
>= : ge
== : eq
<= : le
< : lt
!= : ne
-->
</body>
</html>
- JstlMemberVO.java
package a.b.c.test.jstl;
public class JstlMemberVO {
private String irum;
private String id;
private String pw;
private String age;
private String addr;
private String tel;
public JstlMemberVO() {
}
public JstlMemberVO(String irum, String id, String pw, String age, String addr, String tel) {
this.irum = irum;
this.id = id;
this.pw = pw;
this.age = age;
this.addr = addr;
this.tel = tel;
}
public String getIrum() {
return irum;
}
public void setIrum(String irum) {
this.irum = irum;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
3교시 (11:30-12:20)
- el_04.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="a.b.c.test.jstl.JstlMemberVO" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL_04</title>
</head>
<body>
<h3>EL_04</h3>
<hr>
<!-- el_04.jsp?str1=korea&str2=kor -->
입력 문자열 str1 : ${param.str1 }<br>
입력 문자열 str2 : ${param.str2 }<br>
문자열 대소 비교 : ${param.str1.compareTo(param.str2) > 0 ? param.str1 : param.str2 }<br>
두 문자열이 같나요? : ${param.str1 eq param.str2 ? "예" : "아니오" }<br>
<br><br><br>
<%
String str1 = request.getParameter("str1");
String str2 = request.getParameter("str2");
out.println("입력 문자열 str1 = " + str1 + "<br />");
out.println("입력 문자열 str2 = " + str2 + "<br />");
out.println("두 문자열이 같나요? : " + (str1.equals(str2) ? "예" : "아니오"));
%>
<br><br><br>
입력 문자열 str1 : <%= str1 %><br>
입력 문자열 str2 : <%= str2 %><br>
두 문자열이 같나요? : <%= (str1.equals(str2) ? "예" : "아니오") %>
</body>
</html>
- el_05.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="a.b.c.test.jstl.JstlMemberVO" %>
<%@ page import="java.util.ArrayList" %>
<%
// study[] 배열을 초기화 → 바인딩(연결) 객체 → el_06.jsp 출력
String[] study = {"JAVA", "View", "SQL", "Servlet/JSP/SPRING", "Android", "IoT", "Project"};
request.setAttribute("study", study);
// ArrayList<> 배열을 생성하고 초기화 → 바인딩(연결) 객체 → el_06.jsp 출력
ArrayList<String> list = new ArrayList<>();
list.add("오렌지");
list.add("바나나");
list.add("사과");
list.add("멜론");
list.add("레몬");
request.setAttribute("list", list);
// MemberVO 객체를 생성하고 초기화 → 바인딩(연결) 객체 → el_06.jsp 출력
JstlMemberVO mvo = new JstlMemberVO();
mvo.setIrum("홍길동");
mvo.setId("HKD");
mvo.setPw("1234");
mvo.setAge("27");
mvo.setAddr("부천시 춘의동");
mvo.setTel("01-123-4567");
request.setAttribute("mvo", mvo);
// ArrayList<> 구조에 MemberVO 객체 배열 생성 → 바인딩(연결) 객체 → el_06.jsp 출력
ArrayList<JstlMemberVO> mlist = new ArrayList<>();
mlist.add(new JstlMemberVO("홍길동1", "hong1", "1234", "11", "광주시", "010-1111-1111"));
mlist.add(new JstlMemberVO("홍길동2", "hong2", "1234", "22", "광주시", "010-1111-1111"));
mlist.add(new JstlMemberVO("홍길동3", "hong3", "1234", "33", "광주시", "010-1111-1111"));
mlist.add(new JstlMemberVO("홍길동4", "hong4", "1234", "44", "광주시", "010-1111-1111"));
mlist.add(new JstlMemberVO("홍길동5", "hong5", "1234", "55", "광주시", "010-1111-1111"));
request.setAttribute("mlist", mlist);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL_05 Main</title>
</head>
<body>
<h3>el_05.jsp</h3>
<hr>
</body>
</html>
<jsp:include page="el_06.jsp" />
4교시 (12:30-13:20)
- el_06.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.ArrayList" %>
<%
request.setCharacterEncoding("UTF-8");
// Object 타입을 String[] 타입으로 캐스팅해준다.
String[] studyJSP = (String[]) request.getAttribute("study");
ArrayList<String> listJSP = (ArrayList<String>) request.getAttribute("list");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL_06</title>
</head>
<body>
<h3>EL_06</h3>
<hr>
[배열을 받는 방법(JSP) - ①]<br>
<% for (int i=0; i < studyJSP.length; i++) { %>
studyJSP[] 배열의 <%= i %>번지(인덱스) 값 : <%= studyJSP[i] %><br>
<% } %>
<br>
[배열을 받는 방법](JSP) - ②]<br>
<%
for (int i=0; i < studyJSP.length; i++) {
out.println("studyJSP[] 배열의 " + i + "번지(인덱스) 값 : " + studyJSP[i] + "<br />");
}
%>
<br>
[배열을 받는 방법(EL)]<br>
<!-- study[]를 페이지에 작성하진 않지만, 05에서 넘어온 study[]에 접근할 수 있다 -->
study[] 배열의 0번지(인덱스) 값 : ${study[0] }<br>
study[] 배열의 1번지(인덱스) 값 : ${study[1] }<br>
study[] 배열의 2번지(인덱스) 값 : ${study[2] }<br>
study[] 배열의 3번지(인덱스) 값 : ${study[3] }<br>
study[] 배열의 4번지(인덱스) 값 : ${study[4] }<br>
study[] 배열의 5번지(인덱스) 값 : ${study[5] }<br>
study[] 배열의 6번지(인덱스) 값 : ${study[6] }<br>
<br><hr><br>
[리스트를 받는 방법(JSP)]<br>
<%
for (int i=0; i < listJSP.size(); i++) {
out.println("ArrayList 배열의 " + i + "번지 값 : " + listJSP.get(i) + "<br />");
}
%>
<br>
[리스트를 받는 방법(EL)]<br>
ArrayList 배열의 0번지 값 : ${list[0] }<br>
ArrayList 배열의 1번지 값 : ${list[1] }<br>
ArrayList 배열의 2번지 값 : ${list[2] }<br>
ArrayList 배열의 3번지 값 : ${list[3] }<br>
ArrayList 배열의 4번지 값 : ${list[4] }<br>
<br><hr><br>
[바인딩 객체(dto)를 받는 방법(EL)]<br>
이름 : ${mvo.irum }<br>
아이디 : ${mvo.id }<br>
비밀번호 : ${mvo.pw }<br>
나이 : ${mvo.age }<br>
주소 : ${mvo.addr }<br>
전화번호 : ${mvo.tel }<br>
<br><hr><br>
[리스트 구조에 객체가 저장된 객체 배열을 받는 방법]<br>
mlist 0번지 값 : ${mlist[0].irum }, ${mlist[0].id }, ${mlist[0].pw },
${mlist[0].age }, ${mlist[0].addr }, ${mlist[0].tel }<br>
mlist 4번지 값 : ${mlist[4].irum }, ${mlist[4].id }, ${mlist[4].pw },
${mlist[4].age }, ${mlist[4].addr }, ${mlist[4].tel }<br>
</body>
</html>
- [JSP.pdf 196 ~ 300p] JSTL 설명
- JSTL if문에는 else 문이 없다.
5교시 (14:30-15:20)
- jstl_01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JSTL core 문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 라이브러리 참조
http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
https://mvnrepository.com/
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL_01</title>
</head>
<body>
<h3>JSTL 01</h3>
<hr>
1. 기본 프로그래밍 Tag(변수, 배열, if, for, switch-case 등) ▶ core<br>
<%
int num = 100;
%>
JAVA num : <%= num %><br>
<%-- JSTL 변수 선언 : <c:set ~~> --%>
<c:set var="su1" value="200" />
JSTL su1 : ${su1 }<br>
<%-- JAVA num 값을 JSTL su2 할당 --%>
<c:set var="su2" value="<%=num %>" />
JSTL su2 : ${su2 }<br>
<%-- JSTL su1 값과 su2 값을 더한 값 : result --%>
<c:set var="result" value="${su1 + su2 }" />
JSTL result : ${result }
</body>
</html>
- jstl_02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JSTL core 문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL 02</title>
</head>
<body>
<h3>JSTL 02</h3>
<hr>
<!-- JSTL core 변수를 선언한 후 jstl_03.jsp로 넘기자 : forward() -->
<c:set var="code" value="abc001" scope="request" />
<c:set var="name" value="컴퓨터" scope="request" />
<c:set var="price" value="5000000" scope="request" />
<jsp:forward page="jstl_03.jsp"/>
</body>
</html>
- jstl_03.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JSTL core 문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL_03</title>
</head>
<body>
<h3>JSTL 03</h3>
<hr>
코드 : ${code }<br>
제품명 : ${name }<br>
가격 : ${price }<br>
</body>
</html>
6교시 (15:30-16:20)
- jstl_04.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JSTL core문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL 04</title>
</head>
<body>
<h3>JSTL 04</h3>
<hr>
<!-- jstl_04.jsp?num1=100&num2=50 -->
<!-- param : el 문법 : request.getParameter("num1") -->
첫 번째 수: ${param.num1 }<br>
두 번째 수: ${param.num2 }<br>
<br>
<%--
<c:if test="조건식">실행문</c:if>
--%>
최댓값 : <c:if test="${param.num1 - param.num2 > 0}">
${param.num1 }
</c:if>
<c:if test="${param.num1 - param.num2 < 0}">
${param.num2 }
</c:if>
<br>
최솟값 : <c:if test="${param.num1 - param.num2 > 0 }">
${param.num2 }
</c:if>
<c:if test="${param.num1 - param.num2 < 0 }">
${param.num1 }
</c:if>
</body>
</html>
- jstl_05.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JSTL core문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL 05</title>
</head>
<body>
<h3>JSTL 05</h3>
<hr>
<!-- jstl_05.jsp?num=일 // jstl_05.jsp?num=2 // jstl_06.jsp?num=3 -->
<%
int num = Integer.parseInt(request.getParameter("num"));
if(num == 1) {
out.println("처음 뵙겠습니다. (java:if)");
} else if(num == 2) {
out.println("안녕하세요. (java:if)");
} else {
out.println("반갑습니다. (java:if)");
}
%>
<br><br>
<c:if test="${param.num == 1 }">처음 뵙겠습니다. (c:if)</c:if>
<c:if test="${param.num == 2 }">안녕하세요. (c:if)</c:if>
<c:if test="${param.num == 3 }">반값습니다. (c:if)</c:if>
<br><br>
<%--
JAVA : switch(비교값) case 기준값 default
JSTL core : <c:choose>
<c:when test="조건식">실행문</c:when>
<c:when test="조건식">실행문</c:when>
<c:otherwise>실행문</c:otherwise>
</c:choose>
--%>
<%
switch(num) {
case 1 :
out.println("처음 뵙겠습니다. (java:switch)");
break;
case 2 :
out.println("안녕하세요. (java.switch)");
break;
default :
out.println("반갑습니다. (java.switch)");
break;
}
%>
<br><br>
<c:choose>
<c:when test="${param.num == 1 }">처음 뵙겠습니다. (c:choose)</c:when>
<c:when test="${param.num == 2 }">안녕하세요. (c:choose)</c:when>
<c:otherwise>반갑습니다. (c:choose)</c:otherwise>
</c:choose>
</body>
</html>
7교시 (16:30-17:20)
- jstl_06.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="a.b.c.test.jstl.JstlMemberVO" %>
<%@ page import="java.util.ArrayList" %>
<!-- JSTL core문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL 06</title>
<hr>
<%--
○ JAVA 반복문 : for, while, do~while
○ JSTL 반목문 : <c:forEach>실행문</c:forEach>
▲ <c:forEach var="반복변수명" begin="초기값" end="최종값" step="증감값">실행문</c:forEach>
--%>
○ JAVA 반복문(for)<br>
<%
for (int i=1; i <= 7; i++) {
out.println("<font size=" + i + ">안녕하세요</font><br />");
}
%>
<br><br>
○ JSTL 반복문(c:forEach)<br>
<c:forEach var="i" begin="1" end="7"><!-- step의 값이 1이라면 생략가능하다. -->
<font size="${i }">반갑습니다.</font><br>
</c:forEach>
<br><br>
<c:forEach var="i" begin="1" end="7" step="2">
<font size="${i }">반갑습니다.</font><br>
</c:forEach>
</head>
<body>
- jstl_07.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- JSTL core 문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String[] fruit = {"사과", "멜론", "오렌지", "바나나", "파인애플"};
pageContext.setAttribute("fruit", fruit); // 현재 페이지에서 사용할 바인딩 객체 생성
// fruit가 다른 페이지에서 넘겨받았으면 바인딩 객체를 생성할 필요가 없으나
// 현재 페이지에서 만들었으므로 EL 표기법에서 사용하기 위해 객체를 생성할 필요가 없다.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL 07</title>
</head>
<body>
<h3>JSTL 07</h3>
<hr>
○ JAVA 반복문(배열)<br>
<ul>
<%
for (int i=0; i < fruit.length; i++) {
out.println("<li>" + fruit[i] + "</li>");
}
%>
</ul>
<%--
JSTL 반복문 : <c:forEach>실행문</c:forEach>
▶ <c:forEach var="반복변수명" items="${배열명}">실행문</c:forEach>
--%>
○ JSTL 반복문(배열)<br>
<ul>
<c:forEach var="i" items="${fruit }">
<li>${i }</li>
</c:forEach>
</ul>
</body>
</html>
- jstl_08.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.ArrayList" %>
<!-- JSTL core문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
ArrayList<String> list = new ArrayList<String>();
list.add("사과");
list.add("멜론");
list.add("오렌지");
list.add("바나나");
list.add("파인애플");
pageContext.setAttribute("list", list); // 현재 페이지에서 EL 문법에 활용 가능
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL 08</title>
</head>
<body>
<h3>JSTL 08</h3>
<hr>
○ JAVA for<br>
<ul>
<%
for (int i=0; i < list.size(); i++) {
out.println("<li>" + list.get(i) + "</li>");
}
%>
</ul>
<hr>
○ JAVA forEach<br>
<ul>
<%
for (String str : list) {
out.println("<li>" + str + "</li>");
}
%>
</ul>
<hr>
○ EL 표기법<br>
<ul>
<li>${list[0] }</li>
<li>${list[1] }</li>
<li>${list[2] }</li>
<li>${list[3] }</li>
<li>${list[4] }</li>
</ul>
<hr>
○ JSTL core<br>
<ul>
<c:forEach var="i" items="${list }">
<li>${i }</li>
</c:forEach>
</ul>
</body>
</html>
- jstl_09.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="a.b.c.test.jstl.JstlMemberVO" %>
<%@ page import="java.util.ArrayList" %>
<!-- JSTL core문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
ArrayList<JstlMemberVO> list = new ArrayList<>();
list.add(new JstlMemberVO("홍길동", "hong1", "1234", "11", "서울특별시", "010-111-1111"));
list.add(new JstlMemberVO("홍길동", "hong2", "1234", "22", "서울특별시", "010-111-1111"));
list.add(new JstlMemberVO("홍길동", "hong3", "1234", "33", "서울특별시", "010-111-1111"));
list.add(new JstlMemberVO("홍길동", "hong4", "1234", "44", "서울특별시", "010-111-1111"));
list.add(new JstlMemberVO("홍길동", "hong5", "1234", "55", "서울특별시", "010-111-1111"));
pageContext.setAttribute("list", list);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL 09</title>
</head>
<body>
<h3>JSTL 09</h3>
<hr>
○ JAVA for<br>
<ul>
<%
for (int i=0; i < list.size(); i++) {
out.println("<li>" + list.get(i).getIrum());
out.println(list.get(i).getId());
out.println(list.get(i).getPw());
out.println(list.get(i).getAge());
out.println(list.get(i).getAddr());
out.println(list.get(i).getTel() + "</li>");
}
%>
</ul>
<hr>
<ul>
<%
for (JstlMemberVO mvo : list) {
out.println("<li>");
out.println(mvo.getIrum());
out.println(mvo.getId());
out.println(mvo.getPw());
out.println(mvo.getAge());
out.println(mvo.getAddr());
out.println(mvo.getTel());
out.println("</li>");
}
%>
</ul>
<hr>
○ EL 표기법<br>
<ul>
<li>${list[0].irum } ${list[0].id } ${list[0].pw } ${list[0].age } ${list[0].addr } ${list[0].tel }</li>
<li>${list[1].irum } ${list[1].id } ${list[1].pw } ${list[1].age } ${list[1].addr } ${list[1].tel }</li>
<li>${list[2].irum } ${list[2].id } ${list[2].pw } ${list[2].age } ${list[2].addr } ${list[2].tel }</li>
<li>${list[3].irum } ${list[3].id } ${list[3].pw } ${list[3].age } ${list[3].addr } ${list[3].tel }</li>
<li>${list[4].irum } ${list[4].id } ${list[4].pw } ${list[4].age } ${list[4].addr } ${list[4].tel }</li>
</ul>
<hr>
○ JSTL core<br>
<ul>
<c:forEach var="i" items="${list }">
<li>${i.irum } ${i.id } ${i.pw } ${i.age } ${i.addr } ${i.tel }</li>
</c:forEach>
</ul>
</body>
</html>
8교시 (17:30-18:30)
- 스프링 코드 버전업하기
- 팀 미팅
Notes
- SpringDBLink 해오기
728x90
'국비지원교육 (22.01-22.07) > 강의노트' 카테고리의 다른 글
22-06-08(수) 090일차 [JavaScript, Node.js, Python] http-server, python 설치 및 자료형 (0) | 2022.06.23 |
---|---|
22-06-07(화) 089일차 [JavaScript, Node.js] Node.js란 무엇인가, 서버 켜는 법 (0) | 2022.06.23 |
22-06-02(목) 087일차 [JSON, EL, JSTL] 차트 시각화, EL 기초 (0) | 2022.06.23 |
22-05-31(화) 086일차 [JSON] 인코딩과 JSON의 활용 (0) | 2022.06.23 |
22-05-30(월) 085일차 [JSON] JSON 형식과 활용 (0) | 2022.06.22 |