티스토리 뷰

스크립트 태그
1.스크립트 태그

JSP 태그는 크게 스크립트 태그, 디렉티브 태그, 액션태그로 나뉘는데, 여기서 스크립트 태그는 HTML코드에 자바 코드를 삽입해 프로그램이 기능할 수 있게끔 구현할 수 있습니다. 

스크립트 태그의 종류

스크립트 태그 형식 설명
선언문(declartion) <%! · · ·%> 자바 변수나 메서드를 정의하는데 사용
스크립틀릿(scriptlet) <%· · ·%> 자바 로직 코드(함수안에서만 사용가능)를 작성하는데 사용
표현문(expresstion) <%=· · ·%> 변수, 계산식, 메서드 호출 결과를 문자열 형태로 출력.

out.println()과 동일하게 사용.

해당 선언문의 스크립트 태그에서 선언문은 전역에 해당하고, 스크립틀릿은 함수 안에서 기능을 하라는 의미이고, 표현문은 해당 출력이 HTML페이지에 출력을 해주는 것입니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%! int data = 50; %>
	
	<% 
		out.println("Value of the variable is:" + data);
	%>
</body>
</html>

변수 data에 50을 저장하기 위해 선언문 태그를 작성.

out.println() 메서드를 통해 Value of the variable is : 50 이 출력이 되도록 스크립틀릿 태그를 작성을 합니다.

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%! int sum(int a, int b)
	{
		return a + b;
	}
	%>
	
	<%
		out.println("2 +  3 = "+ sum(2,3));
	%>
	
</body>
</html>

sum(2,3) = 5

전역 메서드  sum을 생성합니다.(정수형 데이터 타입 매개변수 a,b / 리턴값 a+b) - 선언문 작성

 out.println메서드에 해당 파라미터의 값을 대입해 5가 출력되는 것을 알 수 있습니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%!
		String makeItLower(String data)
		{
			return data.toLowerCase();
		}
	%>
	
	<%
		out.println(makeItLower("Hell World"));
	%>
</body>
</html>

 

문자열 메서드 makeItLower(String data)을 생성,  리턴값은 data값의 toLowerCase()함수를 사용해 리턴을 해줍니다.
해당 메서드를 실행하기 위해 선언문에 작성
*toLowerCase()함수는 문자열을 소문자로 변환을 하고 반환을 해주는 문자열 함수입니다.

out.println()메서드를 통해 makeItLower함수를 호출한 뒤 "Hello World"를 출력을 하도록 스크립틀릿 태그에 작성을 하는데, 이때 리턴값의 toLowerCase() 문자열 함수를 통해 소문자로 변환이 된 후에 반환이 되어 "hello world"가 출력이 되었습니다.

스크립틀릿 태그의 기능

스크립틀릿 태그는 자바코드로 이루어진 로직 부분을 표현을 합니다. 가장 일반적으로 사용이 되는 태그로 변수나 out객체의 메서드 선언, 유효식 등 다수를 포함할 수가 있습니다.

모든 텍스트,HTML태그, 또는 JSP요소는 스크립틀릿 태그 외부에 있어야 합니다.
또한, 스크립틀릿 태그의 안에서는 행의 끝이 항상 세미콜론으로 끝이 나야 합니다.

선언문 태그와의 비교

선언문 태그 스크립틀릿 태그
변수뿐만 아니라 메서드를 선언할 수 있습니다. 스크립틀릿 태그는 메서드 없이 변수만을 선언할 수가 있습니다
서블릿 프로그램으로 변환이 될 때, _ispService()메서드 외부에 배치가 됩니다. 서블릿 프로그램으로 변환이 될 때, _ispService()메서드 내부에 배치가 됩니다.

 

표현문 태그의 기능

표현문 태그는 <%=…%>를 사용해서 웹 브라우저에 출력할 부분을 표현합니다. 표현문 태그를 이용해 선언문 태그 또는 스크립틀릿 태그에서 선언된 변수나 메서드의 반환 값을 외부로 출력할 수가 있게 됩니다. 또한, 각 행을 세미콜론으로 종료하지 않아야 합니다.

표현문 태그에서는 숫자, 문자, 논리값 등의 기본 데이터 타입과 자바 객체 타입도 사용이 가능한데, 여기서 표현문 태그에 작성된 모든 자바 코드의 값은 문자열로 변환이 되어 웹 브라우저에 출력이 됩니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<%
	int count = 0;
%>
<body>
	Page count is
	<%=
		++count
	%>
</body>
</html>

선언문에서 변수 count0으로 초기화를 시켜줍니다.
표현문태그에서 증감연산자를 통해 count의 값을 1증가 시켜줍니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<p> Today's date : <%= new java.util.Date() %></p>
	
</body>
</html>

 

현재 날짜가 출력되도록 표현문 태그를 작성을 합니다.
p
태그 안에서 표현문태그를 사용하여 date객체를 생성합니다
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		int a = 10;
		int b = 20;
		int c = 30;
	%>
	<%= a+b+c %>
</body>
</html>

 

각 정수형 타입의 변수들을 각각의 값을 선언문 태그를 이용해 저장을 해줍니다.
표현문 태그를 이용하여 해당 연산값이 나올 수 있도록 합니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<%
	int count = 0;
%>
<body>
	<%
		out.println(++count);
	%>
	
	
</body>
</html>

선언문에서 변수 count0으로 초기화를 시켜줍니다.
스크립틀릿태그에서 out.println()메서드에 증감연산자를 통해 count의 값을 1증가 시켜줍니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		int a = 2;
		int b = 3;
		int sum = a+b;
		out.println("2 + 3 = " + sum);
	%>
</body>
</html>

선언문을 통해 전역변수로 해당 값들을 저장한 뒤에 out.println()메서드를 통해 해당 연산값을 출력하도록 합니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		for(int i =0; i <=10; i++)
		{
			if(i%2==0)
			{
				out.println(i + "<br>");
			}
		}
	%>
</body>
</html>

for문을 통해 0부터 10까지의 짝수를 출력하도록 스크립틀릿 태그를 작성합니다.
if
문의 조건식(i의 값이 2와 나눠질 때 나머지가 0인 값들(=짝수) 일 경우에 실행부분이 실행)을 통해 짝수만 출력이 되도록 유도해줍니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
		<!-- ch02 2번 -->
	<nav class = "navbar navbar-expand navbar-dark bg-dark">
		<div class = "container">
			<div class = "navbar-header">
				<a class = "navbar-brand" href="./welcome.jsp">
					Home
				</a>
			</div>
		</div>
	</nav>
	<%!
		String greeting = "Welcome to Web Shopping Mall";
		String tagline = "Welcome to Web Market!";
	%>
	<div class= "jumbotron">
		<div class ="container">
			<h1 class = "display-3">
				<%= greeting %>
			</h1>
		</div>
	</div>
	<div class ="container">
		<div class="text-center">
			<h3 class="text-ceter">
				<%= tagline %>
			</h3>
		</div>
		<hr>
	</div>
	<footer class="container">
	<p> &copy; WebMarket</p>
	
	</footer>
</body>
</html>

 

디렉티브 태그
디렉티브 태그

디렉티브 태그는 JSP페이지를 어떻게 처리를 할 것인지를 설정을 하는 태그입니다. JSP페이지가 서블릿 프로그램에서 서블릿 클래스로 변환을 할 때 JSP 페이지와 관련된 정보를 JSP컨테이너에 지시하는 메시지입니다. 즉 디렉티브 태그는 JSP페이지를 수정해 다시 컴파일 하는 경우에만 역할을 수행하기 때문에 개별 HTML응답에 특별한 영향을 미치지 않습니다.

디렉티브 태그 종류

디렉티브 태그 형식 설명
page <%@ page...%> JSP 페이지에 대한 정보를 설정합니다.
include <%@ include...%> JSP 페이지의 특정 영역에 다른 문서를 포함합니다.
taglib <%@ taglib...%> JSP 페이지에서 사용할 태그 라이브러리를 설정합니다.
page 디렉티브 태그

page디렉티브 태그는 현제 JSP 페이지에 대한 정보를 설정하는 태그입니다.

JSP 페이지가 생성할 콘텐츠 유형의 문서나 사용할 자바 클래스, 오류 페이지 설정, 세션 사용여부, 출력 버퍼의 존재 유무 등과 같이 JSP 컨테이너가 JSP 페이지를 실행하는 데 필요한 정보를 설정할 수 있습니다. 선언은 최상단에 하는 것을 권장합니다.

include 디렉티브 태그

Include 디렉티브 태그는 현재 JSP 페이지의 특정 영역에 외부 파일의 내용을 포함하는 태그를 의미합니다.

선언하는 방법으로는 <%@ include file=”파일명” %>으로 선언을 할 수 있습니다.
이렇게 머리글과 바닥글 같은 공통된 부분을 별도의 JSP파일로 만들어 웹 페이지를 모듈화 할 수 있기 때문에 코드의 중복을 눈에 띄게 줄일 수가 있습니다.

<%@ 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 file = "include01_header.jsp" %>
	
	<h4>-------현재 페이지 영역--------</h4>
</body>
</html>
<%@ 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>
	<h4>헤더 페이지 영역입니다.</h4>
</body>
</html>

외부 파일 include01_header.jsp의 내용을 포함시키기 위해 include 디렉티브 태그를 작성합니다.
<%@ 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 file ="include02_header.jsp" %>
	<p>방문해주셔서 감사합니다.</p>
	<%@ include file ="include02_footer.jsp" %>
	
</body>
</html>
<%@ 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>
	<%! 
		int pageCount = 0;
		void addCount()
		{
			pageCount++;
		}
	%>
	<%
		addCount();
	%>
	<p>이번 사이트의 방문은 <%=pageCount %>번째 입니다.</p>
</body>
</html>
<%@ 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>
	<p>Copyright ⓒ JSPBook</p>
</body>
</html>

 

Headerfooterjsp파일을 각각 특정 위치에서 include 디렉티브 태그를 작성하였습니다.

변수 pageCount에 값을 저장한 뒤 값이 증감연산자를 통해 1씩 증가하는 함수 addCount()를 선언문 태그에 작성을 합니다.

함수 addCount()를 호출하기 위해 스크립틀릿 태그를 작성합니다

변수 pageCount의 값이 출력이 되도록 p태그안에 표현문 태그를 작성합니다.
<%@ 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>
	<h2>contentType 디렉티브 태그</h2>
	<h4>text/html : HTML 출력</h4>
	<h4>charset = utf-8 : 문자 인코딩</h4>
</body>
</html>

 

<%@ 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>
	<%@ page import = "java.util.Date" %>
	Today is <%=new Date() %>
</body>
</html>

taglib 디렉티브 태그

taglib디렉티브 태그는 현재 JSP 페이지에 표현 언어나 JSTL, 사용자 정의 태그 등 태그 라이브러리를 설정하는 태그로 선언하는 방법은
<%@ taglib uri=”
경로” prefix=”태그 식별자” %> 로 합니다.

uri속성은 사용자가 정의한 태그의 설정 정보를 가진 경로 주소를 뜻합니다.

prefix속성은 uri에 설정한 사용자가 정의한 태그를 식별하기 위한 고유 이름을 뜻합니다

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>


<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:out value="JSTL Core 태그 라이브러리"/>
</body>
</html>

Taglib 디렉티브 태그에 태그 라이브러리로 JSTL을 설정하는 예제입니다.
uri속성 값은 JSTLCore라이브러리의 위치를 나타내고,
prefix의 속성 값은 JSTLCore 태그를 식별하기 위한 접두어로 c를 사용합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ taglib prefix ="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:forEach var="k" begin="1" end="10" step="1">
	<c:out value ="${k}"/>
	</c:forEach>
</body>
</html>

JSTLCore 태그를 사용하기 위해 taglib 태그를 작성합니다.
변수 k1부터 10까지 증감연산자를 통해 1씩 증가하도록 JSTLCore 태그 반복문 <c:forEach>…</c:forEach> 태그를 작성합니다.
변수 k값을 출력하도록 <c:out>태그를 작성합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import = "java.util.Date" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist
/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0
E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
	<!-- include 삽입 구문1 -->
	<%-- <%@ include file = "menu.jsp" %> --%>
	<!-- 변경 구문 한글 출력하기 -->
	<%! 
		String greeting = "웹 쇼핑몰에 오신 것을 환영합니다";
		String tagline = "Welcome to Web Market!";
	%>
	<div class= "jumbotron">
		<div class ="container">
			<h1 class = "display-3">
				<%= greeting %>
			</h1>
		</div>
	</div>
	<div class ="container">
		<div class="text-center">
			<h3 class="text-ceter">
				<%= tagline %>
			</h3>
			<!-- 삽입 구문 현재 접속 시각 출력하기 -->
			<%
				Date day = new java.util.Date();
				String am_pm;
				int hour = day.getHours();
				int minute = day.getMinutes();
				int second = day.getSeconds();
				if (hour /12 ==0)
				{
					am_pm = "AM";
				}
				else
				{
					am_pm = "PM";
					hour = hour -12;
				}
				String CT = hour + ":" + minute + ":" + second +" "+am_pm;
				out.println("현재 접속 시각: "+CT + "\n");
			%>
		</div>
		<hr>
	</div>
	<!-- include 삽입 구문2 -->
	<%@ include file = "footer.jsp" %>
</body>
</html>

 

'정리 노트 > JSP' 카테고리의 다른 글

9주차-2일  (0) 2023.12.05
9주차-1일  (0) 2023.12.04
8주차-5일  (0) 2023.12.01
8주차-4일  (0) 2023.11.30
8주차-2일  (0) 2023.11.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
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
글 보관함