본문 바로가기
프로그래밍 공부/JSP

[lesson] JSP - 태그(디렉티브, 스크립트, include, 액션)

by Luna_lua 2021. 9. 7.
반응형

<디렉티브 태그>

현재 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>

<include 디렉티브 태그> 예제 실행 화면

 

<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>
반응형