# JSP를 만나다: JSP 스크립트
## 목차
1. 학습목표
2. JSP 스크립트란?
3. JSP 스크립트 종류
- 선언부
- 표현식
- 스크립트릿
4. 실습하기
## 학습목표
+ JSP 스크립트를 활용한 페이지 구현능력 향상
## JSP 스크립트란?
앞서 우리는 JSP는 HTML문서에 Java문법을 삽입 가능케 한다고 배웠다. 그걸 가능하게 하는 문법이 바로 JSP 스크립트다.
## JSP 스크립트의 종류
JSP 스크립트는 선언부, 표현식, 스크립트릿으로 나뉜다.
| 종 류 | 형 식 | 용 도 |
|:-------------------:|:-----------:|--------------------------------|
| 선언부(declaration) | `<%! ... %>` | 변수 또는 메쏘드를 선언 |
| 표현식(expression) | `<%= ... %>` | 계산식 또는 메쏘드결과를 문자열로 표현 |
| 스크립트릿(scriptlet) | `<% ... %>` | Java 문법을 기술 |
### 선언부(declarations)
선언부에는 변수 또는 메소드를 정의한다. 변수와 메소드가 선언되면 해당파일 어느곳든지 사용가능하다.
```
<%!
String name = "JSP Ninja";
int age = 31;
%>
```
### 표현식(expressions)
표현식은 결과 출력을 위해 사용한다. JSP의 `println()`이다.
```
<h1><%= name %></h1>
<p><%= sayHello() %></p>
```
### 스크립트릿(scriptlet)
스크립트릿 속에는 기타 모든 자바 문법을 기술 가능하다.
```
<% for (int i = 0; i < 10; i++) { %>
<p>Hello World!! <%= i %></p>
<% } %>
```
## 실습하기
뼈대 코드를 참조하여 아래의 페이지를 만드시오.
![Imgur](https://i.imgur.com/o9ENTZS.png)
뼈대코드
```
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%!
class Player {
Integer number;
String name;
String position;
public Player(Integer number, String name, String position) {
this.number = number;
this.name = name;
this.position = position;
}
}
%>
<%!
int[] numbers = {1, 2, 3, 4, 5, 6};
String[] names = {"슈테겐", "세메두", "피케", "라키티치", "부스케츠", "수아레스"};
String[] positions = {"GK", "DF", "DF", "MF", "MF", "MF"};
Player[] players = new Player[numbers.length];
%>
<%
for (int i = 0; i < numbers.length; i++) {
players[i] = new Player(numbers[i], names[i], positions[i]);
}
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<title>Hello JSP</title>
</head>
<body class="container">
<div class="jumbotron">
<h1>선수</h1>
</div>
<table class="table table-striped">
<thead class="thead-dark">
<tr>
<th>번호</th>
<th>포지션</th>
<th>이름</th>
</tr>
</thead>
<tbody>
<!-- 반복문과 표현을 사용하여 테이블을 완성하시오. -->
<tr>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
</tbody>
</table>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<Script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<Script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<Script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
</body>
</html>
```
## 요약
1. JSP 스크립트를 사용하면 HTML에 Java문법을 사용할 수 있다.
2. 선언부(`<%! ... %>`)에서는 클래스와 변수, 메소드 등을 정의할 수 있다.
3. 표현식(`<%= ... %>`)은 결과값을 출력한다.
4. 스크립트릿(`<% ... %>`)은 모든 자바문법의 사용이 가능하다.