SSENI's
search
sseni
말하는 감자에서 자라기
Today
Yesterday
[웹서버프로그래밍] 2022.03.22 JSP 지시어, 액션, 스크립트릿
# 주석
HTML 주석 : <!-- 주석입니다. -->
JSP 주석 : <%-- 주석입니다. --%>
# 지시어
1) page 지시어
현재 JSP 페이지를 컨테이너에서 처리하는 데 필요한 각종 속성을 기술하는 부분
- JSP 페이지 맨 앞에 위치
<%@ page 속성1="속성값1" 속성2="속성값2“ … %>
- 여러 줄에 나뉘어 작성할 수도 있음
<%@ page contentType="text/html;charset=UTF-8"
import="javax.sql.*, java.util.*" errorPage="error.jsp"%>
<%@ page import="java.util.*" %>
page 지시어 속성 >
language - 스크립트 언어의 유형 결정 (default : java)
import - JSP 내에 외부 자바 패키지나 클래스를 정함
ssesion - 세선의 사용 유무 결정 (default : true)
buffer - 버퍼의 크기 결정 (default : 8KB)
isThreadSafe - 단일 스레드 모델을 사용해 동시성 제어 여부 정함 (default : true)
errorPage - 현재 페이지에서 오류가 발생할 경우 호출될 페이지 지정
htttp 특징인 비연결성을 보완 >> 1. Cookie 2. Session
Cookie 쿠키 허용, local에서 가지고 있음
Session 세션 아이디 발급, 서버에 저장되어 있음
Page 지시어와 JSP 한글 처리 >
1. server.xml 파일에서 정의 - Connector 설정에 URI 요청에 대한 캐릭터셋 지정 가능 (but 소스만 다른 서버에서 실행 시, 한글이 깨질 우려)
2. 각 JSP 파일, Page 지시어의 pageEncoding 속성에서 정의함
3. 각 JSP 파일, Page 지시어의 contentType 속성에서 정의함
import >
<%@ page import="java.sql.*,java.util.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
session >
- 웹 브라우저와 웹 서버가 지속적인 클라이언트 인식을 위해 필요한 정보를 임시로 저장해두는 방법
- 주로 로그인이나, 장바구니 등을 구현할 때사용
<%@ page session="true" %>
errorPage, isErrorPage >
- jsp 파일의 오류 처리
[실습1] 에러 페이지
- error_test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ch05: Error Test </title>
</head>
<body>
<H2>Error 테스트 페이지</H2>
<%
String str = "test";
int i = Integer.parseInt(str);
%>
</body>
</html>
- error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ch05: 에러페이지</title>
</head>
<body>
<center>
<H2>처리중 문제가 발생했습니다</H2>
<HR>
<table>
<tr bgcolor="pink"><td>
관리자에게 문의해 주세요..<BR>
빠른시일내 복구하겠습니다.
<HR>
<%= exception%>
<HR>
</td>
</tr>
</table>
</center>
</body>
</html>

contentType >
- jsp 페이지를 클라이언트에서 처리하기 위한 콘텐츠의 유형을 지정하는 부분
<%@ page contentType=“application/msword” %> -> msword로 인식해 실행
TEST
2) include 지시어
- 현재 jsp 파일에 다른 html이나 jsp 문서를 포함하기 위한 기능을 제공
<%@ include file=“포함할 파일_이름” %>
[실습2] 배너 화면 구성
- include_test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ch05: include 지시어 테스트 </title>
</head>
<body>
<div align="CENTER">
<H2> include 지시어 테스트 </H2>
<HR>
<%@ include file="menu.jsp" %>
<P>
<table border=0 cellpadding=5 cellspacing=1>
<tr>
<td><font size=-1><%@include file="news.jsp" %></font></td>
<td width="20"> </td>
<td><font size=-1><%@include file="shopping.jsp" %></font></td>
</tr>
</table>
</div>
</body>
</html>
- menu.jsp / news.jsp / shopping.jsp
<!-- menu.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp"%>
[게임] [쇼핑] [뉴스]
<!-- news.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp"%>
[최신 뉴스]<HR>
2013.00.00 : 자바 웹 프로그래밍 전면 개정판 출간 !!! <BR>
2013.00.00 : 스프링프레임워크 적용 확산.<BR>
<!-- shopping.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp"%>
[쇼핑정보] 최신 인기 상품 정보 입니다.<HR>
1. 최신 스마트폰 <BR>
2. 10.1인치 최신 태블릿 PC <BR>

3) taglib 지시어
- jsp 기능을 확장하기 위해 만들어진 커스텀 태그 라이브러리
<%@ taglib uri=“/META-INF/mytag.tld” prefix=“mytag” %>
<mytag:GetInfo name=“user1” />
# URI와 URL 차이점
URI - Uniform Resource Identifier. 필요로 하는 자원의 위치 정보를 기술하는데 사용
> URL과의 차이점은 프로토콜, 주소, 포트 번호를 제외한 경로만을 표시한다는 것
# action 액션
1. JSP 액션 종류
<jsp:action_name attribute=“value” />
주로, useBean, include 액션, get/setProperty등 자바 클래스와의 연동을 위해 사용
Action의 기능 >
- JSP 페이지 간 흐름 제어
- 자바 애플릿 지원
- 자바 빈즈 컴포넌트와 JSP 상호작용 지원
Action 종류 >
include - <jsp:include page="xx.jsp" /> 다른 페이지를 현재 페이지에 포함시킴
forward - <jsp:forward page="xx.jsp" /> 이 페이지의 제어를 다른 페이지로 전달
useBean - <jsp:useBean scope="page" id="cls" class="xx.MyBean" /> xx패키지의 MyBean 클래스를 cls 이름으로 page 범위에서 사용할 것을 선언
setProprty
2. include 액션
- 다른 파일을 불러온다는 측면에서 include 지시어와 유사
- include 지시어는 해당 파일을 포함 시킨 후 컴파일, include 액션은 실행 시점에서 해당 파일을 호출하여 결과를 포함

- include 액션은 동적인 페이지를 포함시킬 경우, include 지시어는 잘 바뀌지 않는 정적인 페이지를 포함할 때
ex.
<jsp:include page=“footer.jsp”>
<jsp:param name=“email” value=“test@test.net” />
<jsp:param name=“tel” value=“000-000-0000” />
</jsp:include>
[실습3] include 액션 사용하기
- request : 내장 객체의 한 종류, 파라미터 값을 다룰 때 사용
- 소스 보기>> 모두 html 형태
- inlcude_action.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ch05: include action test</title>
</head>
<body>
<H2>include_action.jsp 에서footer.jsp 호출</H2>
<HR>
include_action.jsp 에서 출력한 메시지 입니다.<BR>
<jsp:include page="footer.jsp">
<jsp:param name="email" value="test@test.net" />
<jsp:param name="tel" value="000-000-0000" />
</jsp:include>
</body>
</html>
- footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ch05 :footer.jsp</title>
</head>
<body>
footer.jsp 에서 출력한 메시지 입니다.
<HR>
<%= request.getParameter("email") %>,
<%= request.getParameter("tel") %>
<%
out.println(request.getParameter("tel"));
%>
</body>
</html>

3. forward 액션
- include 액션과 유사
- 요청 페이지를 다른 페이지로 전환할 때 사용
- response 내장 객체의 sendRedirect() 와 유사하지만 포워드된 페이지에 파라미터를 전달할 수 있단느 점에 차이가 있음
- 브라우저 URL 창에 최초 요청 페이지가 표시되기 때문에 처리 페이지 정보를 숨기거나 MVC 패턴의 컨트롤러와 같이 특정 기능을 수행 후 다른 페이지로 이동해야 하는 경우 유용하게 사용할 수 있음
ex.
<jsp:forward page=“footer.jsp” />
<jsp:param name=“email” value=“test@test.net” />
<jsp:param name=“tel” value=“000-000-0000” />
</jsp:forward>
[실습4] forward 액션 사용하기
- forward_action.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>ch05 : forward action 테스트</TITLE></HEAD>
<BODY>
<H2>forward_action.jsp 에서 footer.jsp 호출</H2>
<HR>
forward_action.jsp 의 모든 내용은 출력되지 않습니다.
<%!
int a = 10;
%>
<jsp:forward page="footer.jsp">
<jsp:param name="email" value="test@test.net" />
<jsp:param name="tel" value="000-000-0000" />
</jsp:forward>
</BODY>
</html>
a 선언 보이지 않음, 소스 보기해도 없음 >> 정보 은닉 시 forward action 을 사용할 수 있음
# 선언과 표현식
1. 선언
- JSP가 서블릿으로 변환된 자바 코드에서는 모든 내용이 jspService() 메서드에 들어가기 때문에 JSP 에서 선언한 변수는 로컬 변수가 되고 메서드 안에서 다른 메서드를 선언하는 자바 문법 상 잘못된 것이므로 컴파일 에러 발생
- <%! %> 은 JSP 페이지에서 이러한 제약 사항 없이 멤버 변수와 메서드 선언을 가능케 함
2. 표현식
- <%= %> 을 사용해 간단한 데이터 출력이나 메서드 호출에 이용
- ;(세미콜론)을 사용하지 않음
메서드 호출 : <%= calculator() %>
변수 출력 : <%= result %>
사칙 연산과 문자열 결합 : <%= “i+2=“+(i+2)+”입니다” %>
# 스크립트릿(Sciptlet)
- JSP 문서 내에 순수 자바 코드를 기술할 수 있는 부분으로 JSP 가장 큰 특징 중 하나
<%
// 로컬 변수 선언이나 프로그램 로직이 올 수 있다. String str = "test";
for (int i=0; i < 10; i++) {
out.println(i);
}
%>
[실습5] 데이터 출력 프로그램
- scriptlet1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ch05 : 스크립트릿 테스트</title>
</head>
<body>
<div align="center">
<H2>스크립트릿 테스트1</H2>
<HR>
<%
for(int i=1;i<10;i++) {
out.println(i+"<BR>");
}
%>
</div>
</body>
</html>
- scriptlet2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ch05 : 스크립트릿 테스트</title>
</head>
<body>
<div align="center">
<H2>스크립트릿 테스트1</H2>
<HR>
<%
for(int i=1;i<10;i++) {
%>
<%=i %> <BR>
<%
}
%>
</div>
</body>
</html>

| [웹서버프로그래밍] 2022.04.05 JSP 내장객체(2), 핸들러 함수, 데이터 입력 여부 검사 (0) | 2022.04.05 |
|---|---|
| [웹서버프로그래밍] 2022.03.29 JAVA Applet, JSP 내장객체 (0) | 2022.03.29 |
| [웹서버프로그래밍] 2022.03.17 Assign 01 (0) | 2022.03.17 |
| [웹서버프로그래밍] 2022.03.15 자바 웹 프로그래밍 개발환경 구축 (0) | 2022.03.15 |
| [웹서버프로그래밍] 2022.03.08 서론, 웹 프로그래밍에 대한 이해 (0) | 2022.03.08 |