
최초 jsp 요청하면 jsp file로 변경될 때 jsp가 servlet으로 변경됨
선언 : 멤버 변수 선언이나 메소드르 선언하는 영역
// 형식
<%! 멤버변수와 method 작성%>
스크립트릿 : Client 요청 시 호출되는 영역으로 Servlet 으로 변환 시 service() method에 해당되는 영역이며 request, response에 관련된 코드를 구현하는 곳
// 형식
<%
이곳에 자바코드 작성
%>
표현식 : 데이터를 브라우저에 출력할 때 사용
// 형식
<%= 문자열 %>
주석 : 코드 상에 부가 설명을 작성
<!-- HTML 주석 -->
<%-- JSP 주석 -->
<%
// JAVA 주석
%>
// 1. page Directive
<%@ page attr1="val1" attr2="val2" %>
// 2. include Directive
<%@ include file ="/template/header.jsp" %>
// 3. taglib Directive
<%@ taglib prefix="c" uri="httmp://java.sun.com/jsp/jstl/core" %>

JSP 기본객체의 영역
| 기본 객체 | 설명 |
|---|---|
| pageContext | 하나의 JSP 페이지를 처리할 때 사용되는 영역. 한번의 클라이언트 요청에 대하여 하나의 JSP 페이지가 호출되며 이 때 단 한개의 page 객체만 대응이 됨. 페이지 영역에 저장한 값은 페이지를 벗어나면 사라짐. 커스텀 태그에서 새로운 변수를 추가할 때 사용함 |
| request | 하나의 HTTP 요청을 처리할 때 사용되는 영역. 웹 브라우저가 요청을 할 때마다 새로운 request 객체가 생성됨. request 영역에 저장한 속성은 그 요청에 대한 응답이 완료되면 사라짐. |
| session | 하나의 웹 브라우저와 관련된 영역으로 같은 웹 브라우저 내에서 요청되는 페이지들은 같은 session들을 공유하게됨 -> 로그인 정보 등을 저장 |
| application | 하나의 웹 어플리케이션과 관련된 영역이며 웹 어플리케이션 1개의 application 객체가 생성됨. 같은 웹 어플리케이션에서 요청되는 페이지들은 같은 applicatin 객체를 공유함 |
2.1 선언부(Declaration)
<%! %>
해당 JSP 페이지에서 사용할 멤버 변수와 메소드를 선언하는 영역
JSP 선언부에서 선언된 메소드의 최대 영역은 해당 JSP 페이지이다. > 사용 제한
대신, 일반 자바 클래스를 만들어서 참조한다. > 사용 권한
사용 빈도 낮음
2.2 스크립틀릿(Scriptlet)
<% %>
자바 코드를 작성하는 영역 (*.java와 동일한 성질)
Script + Applet(웹 페이지에 삽입되는 프로그램, ActiveX, Flash)
선언부에서 정의한 메서드를 호출만 할 수 있을 뿐, 다른 메서드를 선언할 수는 없다.
역할 : 주로 비지니스(업무) 코드 작업
1) 데이터 처리(JDBC)
2) 동적 (HTML, CSS, JavaScript) 처리
사용 빈도 높음
위치 상관 X, HTML 코드랑 상관 X
2.3 표현식(Expression)
<%= 값 %>
값 : 상수, 변수, 연산자를 사용한 (수)식, ‘반환값이 있는’ 메서드 호출 등
해당 위치에 자바 값을 HTML 소스에 출력하는 용도
표현식이 있어야 하는 위치가 고정 O
[ 예제 ]
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
ArrayList<String> list = new ArrayList<String>();
list.add("홍길동");
list.add("아무개");
list.add("하하하");
list.add("호호호");
list.add("후후후");
ArrayList<String> color = new ArrayList<String>();
color.add("tomato");
color.add("gold");
color.add("cornflowerblue");
color.add("yellowgreen");
color.add("magenta");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
.item {
border: 1px solid #AAA;
border-radius: 5px;
padding: 15px;
width: 450px;
margin-bottom: 10px;
}
</style>
</head>
<body>
<h1>Member</h1>
<% for(int i=0; i<list.size(); i++) { %>
<div class="item" style="background-color: <%= color.get(i) %>;">
<h2><%= list.get(i) %></h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique ullam ut dolorum ducimus dicta sunt eaque neque pariatur suscipit illo. Ex reiciendis perspiciatis quae temporibus beatae quaerat tempora natus id.</p>
<input type="button" value="자세히보기" class="btn" onclick="info('<%= list.get(i) %>');"/>
</div>
<% } %>
<script>
function info(name) {
alert('회원:' + name);
}
</script>
</body>
</html>
참고
https://developer-ellen.tistory.com/110#--%--JSP%--%EC%-D%--%--%EB%-F%--%EC%-E%--%--%ED%-D%--%EB%A-%--
https://devlog-wjdrbs96.tistory.com/152
https://velog.io/@suyyeon/Servlet-JSP-JSP-x4v090vz