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 라턴