본문 바로가기
BACK-END

[JSP] 스크립트 태그 / 디렉티브 태그 /액션 태그

by 지에스정 2022. 1. 25.

스크립트 태그

 

HTML 내부에 자바 코드를 넣어 프로그래밍이 가능하도록 만들 수 있다

 

1.  선언문 (Declaration)

    <%! %>

    자바의 변수나 메소드를 정의하는데 사용되는 태그

2.  스크립틀릿 (Scriptlet)

    <% %>

    자바 변수 선언 및 자바 로직 코드를 작성하는데 사용되는 코드

3.  표현문 (Expression)

    <%= %>

    변수, 계산식, 메소드 호출의 리턴값 등을 표현해주는 태그

    HTML 문서에 안에 작성한 값이 그대로 표현된다. 타입은 문자열이다

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>scriptTag1</title>
</head>
<body>
	<h2>scriptTag1</h2>
	<%!
		int count = 3;
	String sayHello(String data){
		return "Hello " + data;
	}
	%>
	<%
	for(int i = 1; i <=count; i++){
		//out객체 : 웹페이지의 화면을 구현하기 위한 JSP내장 객
		out.println(i+". Java Server pages<br>");
	}
	
	%>
	<!-- HTML 주석은 컴파일이 모두 되고 나서 페이지에서 감춰지는 형태이다. 따라서 내부 내용들이 다 실행된다 -->
	<%-- JSP주석은 안에 작성된 모든 코드가 무시되므로 JSP주석을 권장한다  --%>
	<!-- 표현문은 서블릿의 out.print() 메소드의 매개변수로 전달되기 때문에 세미클론을 사용하면 안된다  -->
	<!-- out.println("sayHello(\"JSP"\)의 결과: ");
	out.println(sayHello("JSP")); -->
	
	 sayHello("JSP")의 결과 : <%=sayHello("JSP")%> 
	 
	<!--  -->
</body>
</html>

 

 디렉티브 태그

 

<%@ page %>

현재 JSP 페이지에 대한 정보를 설정하는 태그이다

되도록 페이지 최상단에 선언한다

import를 제외하고 딱 한번씩만 작성할 수 있다

 

속성명

 language : 사용할 프로그래밍 언어 java

 contentType : 생성할 문서의 콘텐츠 유형 text/html

 pageEncoding : 인코딩 설정 ISO-8859-1

 session : 세션을 사용할 것인지 여부 true

 info : 페이지에 대한 설명 작성(주석처럼 이용)

 errorPage : 예외 발생시 이동할 페이지 설정

 isErrorPage : 예외페이지로 설정할지에 대한 여부 false

 import : 사용할 자바 클래스 추가

 

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page errorPage="myErrorPage.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>directiveTag</title>
</head>
<body>
	<h2>directiveTag</h2>
	
	Today is <%= new Date() %>
	<%
		String str = null;
		str.length();
	%>
</body>
</html>

 

 include 디렉티브 태그

 

<%@ include %>

 현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함시키는 태그이다

 보통 header와 footer는 대부분의 페이지에서 동일한 내용으로 작성되기 때문에 각 JSP 파일마다 그 코드들을 반복해서 작성하는 것이 아니라 유지보수 및 편의를 위해 외부 파일로 만든 후 include하여 사용한다

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>includeTest</title>
</head>
<body>
	<%@ include file="./header.jsp" %>
	<h4>-----------현재페이지 영역-------------</h4>
	<p>
		안녕하세
	</p>
	<h4>------------------------------------</h4>
	<%@ include file="./footer.jsp" %>
</body>
</html>

액션 태그

 

서버나 클라이언트에게 어떤 행동을 하도록 명령하는 태그

 페이지나 페이지 사이를 제어하거나 다른 페이지의 실행 결과 내용을 현재 페이지에 포함시키거나 자바빈즈(객체) 드으이 다양한 기능을 제공한다

 액션태그는 XML 형식인 <JSP:?? />를 이용한다

 

1.  <jsp:forward/>

    다른 페이지로 이동, 페이지의 흐름을 제어하기 위한 역할

2.  <jsp:param/>

   현재 페이지에서 다른 페이지의 값을 전달하기 위한 역할

3.  <jsp:useBean/>

4.  <jsp:setProperty/>

5.  <jsp:getProperty/>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>paramTest</title>
</head>
<body>
	<h2>아주 예쁜 제목</h2>
	<% request.setCharacterEncoding("UTF-8"); %>
	<jsp:forward page="paramResult.jsp">
		<jsp:param value="apple" name="userid"/>
		<jsp:param value="김사과" name="username"	/>
	</jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>paramResult</title>
</head>
<body>
	<h2></h2>
	<div>
		꾸며진 내용 
	</div>
	<p>
		아이디 : <%= request.getParameter("userid") %>
	</p>
	<p>
		이름 : <%= request.getParameter("username") %>
	</p>
</body>
</html>

자바빈즈(자바 객체)

 

JSP의 표준 액션 태그를 통해 접근할 수 있는 자바 클래스로서

필드 변수와 setter, getter 메소드로 이루어져 있다

 여러 데이터들을 포장해서 가지고 있는 형태로 구성되어 있다

 

자바빈즈 태그

 

객체 생성

<jsp:useBean class="패키지명.클래스명" id="객체명"/>

객체 필드 세팅

<jsp:setProperty name="세팅할객체" property="필드명" value="세팅값"/>

객체 필드값 접근

<jsp:getProperty name="객체" property="필드명"/>

 

 

 

자바빈즈 개발 규약

 

1.  패키지화(default 패키지 인식 불가)

2.  필드 변수 접근자는 private으로 설정(접근은 메소드로만 가능하게 하기 위함)

3.  getter,setter 메소드는 반드시 public으로 설정

 

'BACK-END' 카테고리의 다른 글

[JSP] EL문과 JSTL  (0) 2022.02.04
[JSP] DB연결 ) Mybatis  (0) 2022.01.31
[JSP]Java Server Pages 시작  (0) 2022.01.17
[MySQL]간단한 MySQL 사용 방법(SQL문)  (0) 2022.01.04
[ORM] ORM 프레임워크  (0) 2020.06.17