<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!
String str1 = "멤버(전역) 변수입니다.";
public void method1() {
System.out.println("선언문 내의 method1() 메서드 호출됨!");
}
public String method2() {
return "method2() 메서드의 리턴값";
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
.
.
<h3>멤버변수 str1 = <%=str1 %></h3>
<h3>method2() 메서드 호출 결과 : <%=method2() %></h3>
<%-- 주의! 리턴값이 없는 메서드(void)는 표현식에서 호출 불가! 오류 발생! --%>
<%-- <h3>method1() 메서드 호출 결과 : <%=method1() %></h3> --%>
💡표현식 내부에는 반드시 출력할 어떤 데이터가 존재해야함
<%
String str2 = "로컬(지역) 변수입니다.";
// 다른 메서드를 호출하거나, 객체(인스턴스) 생성 등의 다양한 작업도 가능함
method1();
// System.out.println() 또는 print() 메서드 호출하여 이클립스 콘솔에 내용을 출력
System.out.println("이 문장은 이클립스 콘솔에 출력됩니다.");
// out.println() 또는 print() 메서드 호출하여 웹브라우저에 내용 출력 가능
// => 문자열과 함께 HTML 태그도 그대로 사용 가능함
out.println("<h3>스크립틀릿에서 출력한 데이터</h3>");
%>
💡스크립틀릿 내부에서는 메서드 정의 불가 (=자바에서 메서드 내에 메서드 정의 불가)
// (X) public void method3() { }
<%-- 선언문보다 윗쪽에서 멤버변수에 접근 가능 --%>
<h3>멤버변수 str3(선언문 위) = <%=str3 %></h3>
<%-- 선언문을 사용하여 str3 멤버변수 선언하고 "멤버변수 str3 입니다" 로 초기화 --%>
<%! String str3 = "멤버변수 str3 입니다."; %>
<h3>멤버변수 str3 = <%=str3 %></h3>
💡BUT 스클립틀릿 내부에서 선언되는 변수는 선언 위치보다 위쪽에서 접근 불가
<h3>로컬변수 str2 = <%=str2 %></h3>
<%
String str2 = "로컬(지역) 변수입니다.";
%>
//🚨해당 코드는 오류 발생
<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
// 스크립틀릿(자바의 메서드 내부와 동일)
// Calendar 클래스를 사용하여 현재 시각을 시, 분, 초로 분리하여 가져오기
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY); // 시
int min = c.get(Calendar.MINUTE); // 분
int sec = c.get(Calendar.SECOND); // 초
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- 스크립틀릿 내에서 선언된 변수는 표현식으로 출력 가능 --%>
<h3>현재시각 : <%=hour %>시 <%=min %>분 <%=sec %>초</h3>
✍️자바 코드와 HTML 태그 조합 방법 2가지
- 스크립틀릿 내에서 출력할 데이터만 out.println() 메서드로 출력하는 방법
→ HTML 태그보다 자바 코드가 더 많을 경우 주로 사용- 스크립틀릿 내에서 조건문 등의 실행문을 지정하고 블럭문 내의 스크립틀릿 분리하여 스크립틀릿 외부에 HTML 태그 작성
→ 자바 코드보다 HTML 태그가 더 많을 경우 주로 사용
<%--
1. 스크립틀릿 내에서 out.println() 메서드를 사용하여 태그를 문자열로 지정하는 방법
--%>
<%
// if 문을 사용하여 현재 시각(hour)이 12 미만이면 "오전입니다" 출력하고
// 아니면 "오후입니다" 출력
if(hour < 12) {
out.println("<h3>오전입니다.</h3>");
} else {
out.println("<h3>오후입니다.</h3>");
}
%>
<%--
2. 스크립틀릿으로 if문만 표현하고, 블록문 사이에 스크립틀릿을 단절시킨 후 HTML 태그 표현
--%>
<%if(hour < 12) {
%><h3>오전입니다.</h3><%
} else {
%><h3>오후입니다.</h3><%
}%>
<%if(hour < 12) { %>
<h3>오전입니다.</h3>
<%} else { %>
<h3>오후입니다.</h3>
<%} %>