JSP공부
JSP
NaZZU
2024. 10. 3. 02:02
JSP
- 서블릿의 단점을 보완하기 위한 스크립트 방식의 표준 기술
- 서버 쪽 모듈을 개발하기 위한 기술
- JSP 기본 구조
- HTML 문서 사이에 Java 문법의 코드가 삽입되는 형태로 작성된다
- 실행
- JSP 페이지에 있는 HTML 코드는 웹 브라우저 그대로 전송
- JSP 문법의 코드는 웹 컨테이너 쪽에서 실행되고 그 결과만 웹 브라우저로 전송
- JSP 처리 과정
- JSP 구성 요소
- 디렉티브 (Directive) - 지시자
- <%@ 로 시작해서 %>로 끝난다
- JSP 페이지에 대한 정보를 지정한다
- JSP가 생성하는 문 거의 타입, 출력, 버퍼의 크기, 에러 페이지 등
- JSP 페이지에서 필요로 하는 정보를 설정한다
- Page 지시자
- JSP 페이지가 어떤 문서를 생성하는지
- 어떤 자바 클래스를 사용하는지
- 세션에 참여하는지
- 출력 버퍼의 존재 여부 등을 알 수 있음
속성 | 설명 | 기본 값 |
language | 현재 JSP 페이지가 사용할 프로그래밍 언어를 설정 | java |
contentType | 현재 JSP 페이지가 생성할 문서의 콘텐츠 유형을 설정 | text/html |
pageEncoding | 현재 JSP 페이지의 문자 인코딩을 설정 | ISO-8859-1 |
import | 현재 JSP 페이지가 사용할 자바 클래스를 설정 | |
info | 현재 JSP 페이지에 대한 설명을 설정 |
- include 지시자
- JSP 페이지의 특정 영역에 다른 문서를 포함시킨다.
- 불러올 대상은 file 속성을 이용해서 지정한다
- 지정된 속성 값은 지시자가 속하는 JSP 페이지를 기준으로 한 상대적인 URL로 해석된다
<%@ 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>
<!-- Include.jsp -->
<h3>가장 여행하고 싶은 곳은?</h3>
<h4>1.프랑스</h4>
<h4>2.헝가리</h4>
<h4>3.이탈리아</h4>
<h4>4.캐나다</h4>
<h4>5.호주</h4>
<br>
<hr>
<%@ include file="2_dateTime.jsp" %> <!-- 원하는 곳 어디든 파일을 삽입할 수 있음 -->
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- Include.jsp -->
<h3>가장 여행하고 싶은 곳은?</h3>
<h4>1.프랑스</h4>
<h4>2.헝가리</h4>
<h4>3.이탈리아</h4>
<h4>4.캐나다</h4>
<h4>5.호주</h4>
<br>
<hr>
<!-- include된 dateTime.jsp의 코드 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- dateTime.jsp -->
<h3>
오늘은 2024 년
10 월
3 일입니다
</h3>
<h4>현재 시각 : 03:23:47</h4>
</body>
</html> <!-- 원하는 곳 어디든 파일을 삽입할 수 있음 -->
</body>
</html>
- 스크립트 요소
- 스크립틀릿
- <%로 시작해서 %>로 끝난다.
- JSP 페이지에서 JAVA 코드를 실행할 때 사용
- 표현식
- <%= 로 시작해서 %>로 끝난다
- 사이에 자바식이 들어갈 수 있다.
- 상수나 변수 이름 하나로 구성될 수도 앗다.
- 연산자를 포함할 수도 있다.
- 리턴값이 있는 메서드 호출이 가능하다.
- 선언부
- <%!로 시작해서 %>로 끝난다.
- 사이에 자바 메서드 작성이 가능하다
- 선언부의 함수는 자바 메서드 문법 구조와 동일하다
스크립트 변수의 범위
- 스크립틀릿에서 선언된 변수
- 지역변수에 해당
- 별도로 선언된 메소드 부분에서는 사용 불가능
- 자동 초기화가 안되어 반드시 초기화해줘야 함
- 선언문에서 선언된 변수나 메서드
- 전역변수에 해당된다
- JSP 페이지 내 어디에서든지 사용 가능
- 자동 초기화
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
31
32
33
34
35
36
37
38
39
40
41
42
43
|
<%@ 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>
<!-- Variable Range -->
<!--
선언부 - 전역변수
스크립틀릿 - 지역변수
-->
<h3> 변수의 범위</h3>
<%!
// 선언부
String strVar;
%>
<%!
// 선언부 - 메소드 선언
String getStr() {
strVar = "전역변수입니다";
return strVar;
}
%>
<%
// 스크립틀릿
String strVar2 = "지역변수입니다.";
// 주석처리 하면 밑의 표현식이 에러가 남(자동초기화를 지원하지 않아서!) %>
<%!
/* String getStr2() {
//return strVar2; 지역변수를 다른 메소드에서 반환할 수 없다.
return "a";
} */
%>
<br>
선언문에서 선언한 변수 strVar = <%= getStr() %>
<br>
스트립틀릿에서 선언한 변수 strVar2 = <%= strVar2 %><!-- //화면에 출력하는거 까지는 괜찮다 -->
</body>
</html>
|
cs |
JSP 기본 객체
JSP는 웹 애플리케이션 프로그래밍을 하는데 필요한 기능을 제공
기본 객체 | 실제 타입 | 설명 |
request | javax.servlet.http.HttpServletRequest | 클라이언트의 요청 정보를 저장 |
response | javax.servlet.http.HttpServletResponse | 응답 정보를 저장 |
pageContext | javax.servlet.jsp.PageContext | JSP 페이지에 대한 정보를 저장 |
session | javax.servlet.http.HttpSession | HTTP 세션 정보를 저장 |
request 기본 객체
- 속성
- JSP 페이지에서 가장 많이 사용되는 기본 객체
- 웹 브라우저의 요청 정보를 제공
- 기능
- 클라이언트와 관련된 정보 읽기
- 서버와 관련된 정보 읽기
- 클라이언트가 전송한 요청 파라미터 읽기
- 클라이언트가 전송한 쿠키 읽기
- 속성 처리
메소드 | 리턴 타입 | 설명 |
클라이언트 및 서버 정보 관련 메소드 | ||
getRemoteAddr() | String | 웹 서버에 연결한 클라이언트의 IP 주소를 구한다 |
getContentLength() | Long | 클라이언트가 전송한 요청 정보의 길이를 구한다 |
getCharacterEncoding() | String | 클라이언트가 요청 정보를 전송할 때 사용한 캐릭터의 인코딩을 구한다 |
getContentType() | String | 클라이언트가 요청 정보를 전송할 때 사용한 컨텐츠 타입을 구한다 |
getMethod() | String | 웹 브라우저가 요청한 URL에서 경로를 구한다 |
요청 파라미터 관련 메소드 | ||
getParameter(String name) | String | 이름이 name인 파라미터의 값을 구한다. 존재하지 않을 경우 null을 리턴한다 |
getParameterValues(String name) | String[] | 이름이 name인 모든 파라미터의 값을 배열로 구한다. 존재하지 않을 경우 null을 리턴한다 |
getParameterNames() | java.util.Enumeration | 웹 브라우저가 전송한 파라미터의 이름 목록을 구한다 |
getParameterMap() | java.util.Map | 웹 브라우저가 전송한 파라미터의 맵을 구한다. 맵은 <파라미터 이름, 값>의 쌍으로 구성된다. |
Header 관련 메소드 | ||
getHeader(String name) | String | 지정한 이름의 헤더 값을 구한다 |
getHeaders(String name) | java.util.Enumeration | 지정한 이름의 헤더 목록을 구한다 |
getHeaderNames() | java.util.Enumeration | 모든 헤더의 이름을 구한다 |
getIntHeader(String name) | int | 지정한 헤더 값을 정수 값으로 읽어온다 |
getDateHeader(String name) | long | 지정한 헤더의 값을 시간 값으로 읽어온다 |
response 기본 객체
- 속성
-
- request 기본 객체와 반대 기능을 수행
- 웹 브라우저에 보내는 응답 정보를 담는다
- 기능
- 헤더 정보 입력
- 리다이렉트 기능
메소드 | 설명 |
addDateHeader(String name, long date) | name 헤더에 date를 추가한다 |
addHeader(String name, String value) | name 헤더에 value를 추가한다 |
addIntHeader(String name, int value) | name 헤더에 정수 값 value를 추가한다 |
setDateHeader(String name, long date) | name 헤더의 값을 value로 지정한다 |
setHeader(String name, String value) | name 헤더의 값을 value로 지정한다 |
setIntHeader(String name, int value) | name 헤더의 값을 정수 값 value로 지정한다 |
containsHeader(String name) | 이름이 name인 헤더를 포함하고 있으면 true, 그렇지 않으면 false 라턴 |