반응형
<디렉티브 태그>
현재 JSP 페이지에 대한 정보를 설정하는 태그이다. -> 되도록 페이지 최상단에 선언한다.
문법 : <%@ page %>
<현재 JSP페이지에 대한 속성 설명>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" info="Date 클래스를 이용한 날짜 출력"%>
<%@ page errorPage="myErrorPage.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>디렉티브 태그 예제</title>
</head>
<body>
Today is : <%=new Date() %>
<%-- 오류 발생 코드
<%
String data = null;
data.charAt(0);
%>
--%>
</body>
</html>
// 오류 페이지 (myErrorPage)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>오류</title>
</head>
<body>
<h1>오류가 발송했어요! 다시 해보세요!</h1>
</body>
</html>
<스크립트 태그>
HTML 코드에 자바 코드를 넣어서 프로그램이 수행하는 기능을 구현할 수 있다.
번호 | 이름 | 문법 | 내용 |
1 | 선언문 (declaration) | <%! %> | 자바 변수나 메소드를 정의 하는데 사용 |
2 | 스크립틀릿 (scriptlet) | <% %> | 자바 변수 선언 및 자바 로직 코드를 작성하는데 사용 |
3 | 표현문 (expression) | <%= %> | 변수, 계산식, 리턴이 있는 메소드 호출 결과를 문자열 형태로 출력 [세미콜론은 쓰지 않는다., 꼭 값이 들어가야한다.] (out.println()에서 괄호 안에 변수를 쓰는것에 가깝기 때문) |
선언문과 스크립틀릿 (스크립트 태그)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>스크립트 태그 예제1</title>
</head>
<body>
<h2>Scripting Tag</h2>
// 선언문태그에서는 메소드 또는 변수를 선언한다.
<%!
int count = 3;
String makeItBeLower(String data){
return data.toLowerCase();
}
%>
// 스크립틀릿태그에서는 로직 작성
<%
for(int i=0;i<count; i++){
out.println("Java Server Pages" + (i + 1) + ". <br>");
}
%>
<!-- 표현문은 서블릿의 out.print()메ㅐ소드의 매개변수로 전달되기 때문에 세미콜론을 사용하면 안된다. -->
<h3><%=makeItBeLower("Hello World") %></h3>
</body>
</html>
// 3가지 모두 사용 예제
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>스크립트 태그 예제2</title>
</head>
<body>
<%
out.print(myMethod(0));
// 내장객체로 객체 생성하지 않고 사용가능
// 결과를 보면 두개가 같은 값이 출력 선언부가 먼저 컴파일이 된다.
%>
<%=myMethod(0)%>
<%!
public int myMethod(int count){
return ++count;
}
%>
</body>
</html>
// 표현문에서는 바로 객체 생성하여 사용할수 있다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>스크립트태그 예제3</title>
</head>
<body>
<p>
Today's date : <%=new java.util.Date() %>
</p>
</body>
</html>
<include 디렉티브 태그>
문법 : <% include file="파일경로"%>
현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그이다.
보통 hreader와 footer는 대부분의 페이지에서 동일한 내용으로 작성되기 때문에 유지보수 및 편의를 위하여 외부 파일로 만든 후 include해서 사용한다 => 이를 모듈화라고 한다.
위의 그림에서 header와 footer는 계속 반복하는데 각 페이지마다 내용을 만들어놓는다면 수정이나 삭제시 일일이 변경하는 어려움이 있다 이럴때 include 디렉티브 태그를 사용하여 각각의 페이지를 따로 만들고 참조하는 코드를 통해 각 페이지에 삽입하는것이 옳다!
// Main Source
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>include 디렉티브 태그 예제</title>
</head>
<body>
<!-- 헤더영역 -->
<%@ include file="header.jsp" %>
<h4>--------------------현재 페이지 영역--------------------</h4>
<!-- 푸터영역 액션태그 사용-->
<jsp:include page="footer.jsp"></jsp:include>
</body>
</html>
// header
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h4>헤더 페이지 영역!</h4>
</body>
</html>
// footer
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
Copyright ㈜ 홍길동
</body>
</html>
<action 태그>
서버나 클라이언트에게 어떤 행동을 하도록 명령하는 태그이다.
페이지와 페이지 사이를 제어하거나 다른 페이지의 실행 결과 내용을 현재 페이지에 포함시키거나 자바 빈즈 등의 다양한 기능을 제공한다.
번호 | 이름 | 문법 | 내용 |
1 | forward | <jsp:forward /> | 다른 페이지로의 이동, 페이지 흐름을 제어한다. |
2 | include | <jsp:include page="' /> | 외부 페이지의 내용을 포함하거나 페이지 모듈화 |
3 | param | <jsp:param /> | 현재 페이지에서 다른 페이지에 정보를 전달 |
- forward 예제
// Main Source (실행 화면)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 forward 테스트</title>
</head>
<body>
<form action="controller.jsp">
보고싶은 페이지 선택 :
<select name = "site">
<option value="naver">네이버</option>
<option value="daum">다음</option>
<option value="google">구글</option>
</select>
<input type="submit" value="전송">
</form>
</body>
</html>
// forward시켜주는 naver, daum, goole 페이지
<%@ 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>
</body>
<script>
window.open("https://www.naver.com", "_self");
// 다음, 구글은 안의 URL만 변경된다.
</script>
</html>
- include 예제는 위의 header, footer 설명하면서 같이 있으므로 참조할 것!
- param 예제
// Main Source
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- parameter의 전달방식의 문제가 있기때문에 문자체계를 설정하고 전달해야한다. -->
<%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>param 액션 태그</title>
</head>
<body>
<h3>param 액션 태그</h3>
<jsp:forward page="paramP.jsp">
<jsp:param value="admin" name="id"/>
<jsp:param value="관리자" name="name"/>
</jsp:forward>
</body>
</html>
// parameter를 받아 값 표출해주는 Page
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>param 응답 페이지</title>
</head>
<body>
<p> 아이디 : <%=request.getParameter("id") %>
<p> 이름 : <%=request.getParameter("name") %>
</body>
</html>
반응형
'프로그래밍 공부 > JSP' 카테고리의 다른 글
[DoIt] JSP - 기본 데이터 전달(JSP -> Servlet) , get/post 전달방식 (0) | 2023.01.10 |
---|---|
[lesson] JSP - 쿠키(Cookie) + 세션(Session) (0) | 2023.01.10 |
[lesson] JSP - 내장객체 (0) | 2023.01.10 |
[lesson] JSP - Ajax (Asynchronous Javascript and Xml) (0) | 2023.01.10 |
[lesson] JSP - 개요 (0) | 2021.09.08 |