



→ 로직구현은 Servlet 클래스에, HTML 중심의 코드는 JSP에
-HTML내에서 Java코드를 작성하고 Web서버에서 Web Page를 생성하여 웹 브라우저에게 돌려주는 Java를 기반으로 한 스크립트 언어
-.jsp 확장자
-동적으로 작동하여 html 문서로 응답
-Jsp → Servlet → class → HTML 으로 변환되어 실행



스크립트릿(Scriptlet)
<% 실행문 %> → Jsp내에서 Java코드를 작성할 때 사용
.java로 변환시 _jspService()메소드 내로 이동
표현식
<%= 실행문 %> → 동적인 데이터를 Web에 출력할 때 사용
.java로 변환 시 out.print()메소드로 변환
선언문(Diclartion)
<%! 실행문 %> → 멤버 변수 선언, 메소드 정의할 때 사용
.java로 변환 시 해당 클래스의 영역에 선언

→ 선언문만 따로 문법이 있는 이유
메소드 안에 메소드 선언하면 지역 메소드가 되기 때문에 클래스에 저장하기 위해서 따로 작성한다.





basic.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>
<h1> Jsp 기본문법 </h1>
<!-- 1. 스트립트릿 : Jsp페이지 내에 Java코드를 작성하기 위해서 사용 -->
<%
// Java언어 사용 가능
int a = 1;
int b = 3;
int result = a+b;
System.out.println("a+b의 결과 : " + result);
%>
<% for(int i=0; i<5; i++) {%>
html코드
<%}%>
<!-- 2. 표현식 : Web에 결과값을 출력하기 위해 사용
: 변수, 메소드 호출, 연산 -->
a + b의 결과값 : <%= result+5 %>
</body>
</html>
-스트립트릿 : Jsp페이지 내에 Java코드를 작성하기 위해서 사용
-표현식 : Web에 결과값을 출력하기 위해 사용
: 변수, 메소드 호출, 연산

sum100.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>
<h1> 1~100까지의 합 구하기 </h1>
<%
int sum = 0;
for(int i=1; i<101; i++) {
sum += i;
// sum= sum+i;
}
%>
<%= sum %>
</body>
</html>

table.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>
<h1> 10개의 방 만들기 </h1>
<table border=1 >
<tr>
<%
for(int i=1; i<11; i++){%>
<td> <%= i %> </td>
<%} %>
</tr>
</table>
</body>
</html>

diclation.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>
<h1> Jsp 기본문법 - 선언문 </h1>
<!-- 3. 선언문 : 멤버변수, 메소드 선언 등을
클래스 영역에 하기 위해서 사용 -->
<%!
// 합을 구하는 메소드
public int addNumber(int num1, int num2){
return num1+num2;
}
%>
<% System.out.println(addNumber(1,2)); %>
<%= addNumber(1,2)+3 %>
</body>
</html>
-선언문 : 멤버변수, 메소드 선언 등을
클래스 영역에 하기 위해서 사용

cla.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 계산기 </h1>
<form action="./Ex05_cal.jsp">
Number 1 : <input type="text" name="num1"> <br>
Number 2 : <input type="text" name="num2">
<br><input type="submit">
</form>
</body>
</html>

cal.jsp


<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
// 2. 선언문을 통해서 메소드 만들기
public int plusNum(int num1, int num2) {
return num1 + num2;
}
public int minusNum(int num1, int num2) {
return num1 - num2;
}
public int multiNum(int num1, int num2){
return num1 * num2;
}
public int diviNum(int num1, int num2){
return num1 / num2;
}
%>
<%
// 1. html에서 보낸 숫자 2개 받아오기
String num1 = request.getParameter("num1");
String num2 = request.getParameter("num2");
%>
<%
int number1 = Integer.parseInt(num1);
int number2 = Integer.parseInt(num2);
%>
<!-- 3. 표현식을 통해서 웹에 출력 -->
<%= num1 %> + <%= num2 %> : <%= plusNum(number1, number2) %> <br>
<%= num1 %> - <%= num2 %> : <%= minusNum(number1, number2) %> <br>
<%= num1 %> * <%= num2 %> : <%= multiNum(number1, number2) %> <br>
<%= num1 %> / <%= num2 %> : <%= diviNum(number1, number2) %>
</body>
</html>

error.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>
<img alt="" src="./img/error_txt1.png">
</body>
</html>

makeError.jsp

<!-- 4. 지시자 : Servlet으로 변환할 때 필요한 정보들을 기술
4-1. page 지시자 : 현재 jsp 페이지에 대한 환경설정
- language : 사용 될 언어
- contentType : 문서의 종류, 인코딩 방식
-> servlet으로 변환 될 때 response.setContentType(매개변수)의 매개변수값
- pageEncoding : 현재 문서의 문자 타입
- errorPage : 오류가 났을 때 대체 할 페이지 지정
- import : Java패키지나 클래스를 볼러올 때 사용 -->
<%@page import="java.util.Random"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page errorPage="./Ex06_error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 일부러 오류 나는 페이지 만들기 -->
<%= 2/0 %>
<% Random r = new Random(); %>
</body>
</html>
-지시자 : Servlet으로 변환할 때 필요한 정보들을 기술
-page 지시자 : 현재 jsp 페이지에 대한 환경설정
- language : 사용 될 언어
- contentType : 문서의 종류, 인코딩 방식
-> servlet으로 변환 될 때 response.setContentType(매개변수)의 매개변수값
- pageEncoding : 현재 문서의 문자 타입
- errorPage : 오류가 났을 때 대체 할 페이지 지정
- import : Java패키지나 클래스를 볼러올 때 사용

footer.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>
<div>
광주광역시 동구 예술길 31-15, 광주 아트센터 4층 <br>
Tel. 062-655-3509 (사)스마트인재개발원
</div>
</body>
</html>

main.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>
<h1> 메인 페이지 </h1>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
맨 아래
<!-- 4-2. include 지시자 : 현재 페이지에 다른 페이지를 삽입할 때 사용 -->
<%@ include file="Ex07_footer.jsp" %>
</body>
</html>
-include 지시자 : 현재 페이지에 다른 페이지를 삽입할 때 사용


annotation.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>
<!-- HTML 주석 : 소스보기 공개 -->
<%-- 스크립트 주석 : 소스보기 비공개 --%>
<%
// Java 주석 : 소스보기 비공개
/* Java 주석 : 소스보기 비공개 */
%>
</body>
</html>

JSTL.jsp



<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 4-3. taglib 지시자 : 태그 라이브러리를 사용하기 위한 지시자 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!-- 문자 하나를 정해서 JSTL을 사용하겠다고 알려주기
prefix -> 이제 밑에서 우리가 custom한 태그를 쓸 건데 기호를 정해서 해당 라이브러리를 사용하겠다! -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 화면에 1~10 출력 -->
<%
for(int i=1;i<=10;i++){
out.print(i + "<br>");
}
%>
<!-- 태그 라이브러리 -->
<!-- var:변수선언, begin:시작, end:끝, step:증가량 -->
<c:forEach var="i" begin="1" end="10" step="1">
<!-- EL표기법 -->
<c:if test="${i%2==0}">
${i} <br>
</c:if>
</c:forEach>
<!-- 1. 변수 선언 -->
<c:set var="a" value="10"> </c:set> <!-- a라는 변수명에 10이라는 값을 주겠다. -->
<c:set var="a" value="10"/> <!-- 끝태그를 쓰지않아도 /를 쓰면 끝태그처럼 쓸 수 있다. -->
<!-- 출력 -->
<c:out value="${a}"></c:out> <!-- a라는 변수명을 쓰고 싶으면 EL표기법을 쓰면된다. -->
<!-- 2. if문 -->
<hr>
<c:if test="${a%2==0}">
<c:out value="a는 짝수" />
</c:if>
<c:if test="${a%2==1}">
<c:out value="a는 홀수"></c:out>
</c:if>
<!-- 3. switch문 -->
<hr>
<c:set var="b" value="11"></c:set>
<c:out value="${b}"></c:out>
<hr>
<c:choose>
<c:when test="${b%2==0}">
<c:out value="b는 짝수"></c:out>
</c:when>
<c:otherwise>
<c:out value="b는 홀수"></c:out>
</c:otherwise>
</c:choose>
<!-- 4. for문 -->
<hr>
<c:forEach var="i" begin="1" end="5">
<c:out value="${i}"></c:out>
</c:forEach>
<!-- 5. functions로 배열 만들기 -->
<hr>
<c:set var="team" value="${fn:split('안서혁,정윤오,임다이,이상훈', ',')}"></c:set>
<c:forEach var="member" items="${team}">
<c:out value="${member}"></c:out>
</c:forEach>
<hr>
<c:out value="${team[1]}"></c:out>
<!-- 6. functions로 문자열의 길이 가져오기 -->
<hr>
<c:out value="${fn:length(team)}"></c:out>
<c:out value="${fn:length('임다이입니다.')}"></c:out>