반응형
선언문 태그 예시
- 전역 변수
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Scripting Tag</title>
</head>
<body>
<%!
// 선언문 태그를 작성. 정수형 변수 data에 50을 할당(대입)
// 전역 변수. 위/아래에서 사용 가능
int data = 50;
%>
<% // 스크립틀릿 태그
out.print("<p>" + data + "</p>");
%>
</body>
</html>
- 전역 메소드
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Scripting Tag</title>
</head>
<body>
<%!
// 선언문 태그를 작성.
//int : 리턴 타입(정수형), a / b : 정수형 매개변수
//전역 메소드
int sum(int a, int b) {
return a + b;
}
%>
<% // 스크립틀릿 태그
//sum이라는 전역메소드를 호출(두 개의 파라미터 전달)
//out : JSP에서 제공해주는 기본 객체
out.print("<p>2 + 3 = " + sum(2,3) + "</p>");
%>
</body>
</html>
- 대문자 -> 소문자 변환
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Scripting Tag</title>
</head>
<body>
<%!
// 선언문 태그를 작성.
//전역 메소드(makeItLower)->소문자처리
String makeItLower(String eng){
return eng.toLowerCase();
}
%>
<% // 스크립틀릿 태그
//makeItLower이라는 전역메소드를 호출(한 개의 파라미터를 전달)
//out.print() => result : have a good time!
out.print("param : HAVE A GOOD TIME!<br>");
out.print("result : " + makeItLower("HAVE A GOOD TIME!"));
%>
<%-- <p>result : <%=makeItLower("HAVE A GOOD TIME!")%></p> --%>
</body>
</html>
표현문 태그 예시
- 현재 시간 출력
<!-- 페이지 디렉티브 -->
<%@ page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Scripting Tag</title>
</head>
<body>
<p>
Today's date :
<%
out.print(new Date() + "<br />");
%>
<!-- 표현문 : 끝에 세미콜론을 사용하지 않음-->
Today's date : <%=new Date()%><br />
</p>
</body>
</html>
+ <%@ %> 설명
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!--
위의 문장을 페이지 디렉티브로 부름
골뱅이(디렉티브) page
contentType : 컨텐츠 유형 => html
charset : 문자열 세트 => UTF-8로 설정
-->
스크립트 태그를 사용한 쇼핑몰 메인 화면 만들기
5초마다 페이지가 갱신되고 시간이 바뀌는 페이지
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<title>Welcome</title>
</head>
<body>
<nav class="navbar navbar-expand navbar-dart bg-dark">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="welcome.jsp">Home</a>
<%=tagline%>
</div>
</div>
</nav>
<%!
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">
<!-- class="text-center" : style="text-align: center; -->
<div class="text-center">
<h3><%=tagline%></h3>
<%
// 5초마다 페이지를 갱신(새로고침)
response.setIntHeader("Refresh", 5); // 5초마다 새로고침이 됨. 기존에 있는 기능임
Date day = new Date();
// 지역변수 선언
String am_pm;
int hour = day.getHours();
int minute = day.getMinutes();
int second = day.getSeconds();
if(hour/12 == 0) { // 0~11 => 0. 정수/정수 => 정수
am_pm = "AM";
} else { //12~24 => 1 또는 2가 됨
am_pm = "PM";
// 13~23시이면 1~11시로 표현
hour = hour - 12;
}
String CT = hour + ":" + minute + ":" + second + " " + am_pm;
out.print("<p>현재 접속 시각 : " + CT + "</p>");
%>
</div>
</div>
<footer class="container">
<p>©WebMarket</p>
</footer>
</body>
</html>
- 스크립트를 이용한 페이지 새로고침
+ slice 설명
더보기

.slice(-2)
: 뒤에서 앞까지 총 둘째자리를 잘라 가져옴

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.util.Date"%>
<!--
위의 문장을 페이지 디렉티브로 부름
골뱅이(디렉티브) page
contentType : 컨텐츠 유형 => html
charset : 문자열 세트 => UTF-8로 설정
-->
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<title>Welcome</title>
</head>
<body>
<nav class="navbar navbar-expand navbar-dart bg-dark">
<div class="container">
<div class="navbar-header">
<!-- 요청 URL : /welcome.jsp -->
<a class="navbar-brand" href="welcome.jsp">Home</a>
<%=tagline%> <!-- 전역 변수이기에 쓸 수 있음 -->
</div>
</div>
</nav>
<%! //선언문(전역변수) : 자바 코드 사용 가능
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">
<!-- class="text-center" : style="text-align: center; -->
<div class="text-center">
<!-- 표현문 : 변수에 할당된 값이 출력됨-->
<h3><%=tagline%></h3>
<%
// 5초마다 페이지를 갱신(새로고침)
// response.setIntHeader("Refresh", 5); // 5초마다 새로고침이 됨. 기존에 있는 기능임
Date day = new Date();
// 지역변수 선언
String am_pm;
int hour = day.getHours();
int minute = day.getMinutes();
int second = day.getSeconds();
if(hour/12 == 0) { // 0~11 => 0. 정수/정수 => 정수
am_pm = "AM";
} else { //12~24 => 1 또는 2가 됨
am_pm = "PM";
// 13~23시이면 1~11시로 표현
hour = hour - 12;
}
String CT = hour + ":" + minute + ":" + second + " " + am_pm;
out.print("<p>현재 접속 시각 : " + CT + "</p>");
%>
</div>
</div>
<footer class="container">
<p>©WebMarket</p>
</footer>
<script type="text/javascript">
// 현재시간 처리
function fnCt() {
console.log("개똥이");
// document : body태그 내부
// <h3>태그 select => object
let h3 = document.getElementsByTagName("h3")[0];
// h3 : <h3>Welcome to Web Market!</h3>
let tagline = h3.innerHTML;
console.log("tagline : " + tagline);
let today = new Date();
console.log("today : " + today);
// 연도
let year = today.getFullYear();
let month = ('0' + (today.getMonth()+1)).slice(-2); // 01, 02, 03
let day = ('0' + today.getDate()).slice(-2); // 01, 02, 03
let dateString = year + "-" + month + "-" + day;
console.log("dateString : " + dateString);
// 시간
let hours = ('0' + today.getHours()).slice(-2);
let minutes = ('0' + today.getMinutes()).slice(-2); // 분
let seconds = ('0' + today.getSeconds()).slice(-2); // 초
let timeString = hours + ":" + minutes + ":" + seconds;
console.log("timeString : " + timeString);
//<div class="text-center"></div> 요소 선택
const divTcenter = document.querySelector(".text-center");
divTcenter.innerHTML = "<h3>" + tagline + "</h3><p>현재 접속 시각 : " + dateString + " " + timeString + "</p>";
}
//스크립트에서 제공되는 내장 함수로 파라미터 2개가 필수 / 1초마다 fnCt 함수 요청
setInterval(fnCt, 1000);
</script>
</body>
</html>
- 헤더와 푸터를 다른 파일로 나누기
menu.jsp(헤더 파일)
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<nav class="navbar navbar-expand navbar-dart bg-dark">
<div class="container">
<div class="navbar-header">
<!-- 요청 URL : /welcome.jsp -->
<a class="navbar-brand" href="welcome.jsp">Home</a>
</div>
</div>
</nav>
welcome.jsp (바디 파일)
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<title>Welcome</title>
</head>
<body>
<!-- 머리글에 해당하는 menu.jsp 파일의 내용이 포함되도록 include 디렉티브 태그를 작성 -->
<%@ 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">
<!-- class="text-center" : style="text-align: center; -->
<div class="text-center">
<h3><%=tagline%></h3>
<%
Date day = new Date();
String am_pm;
int hour = day.getHours();
int minute = day.getMinutes();
int second = day.getSeconds();
if(hour/12 == 0) { // 0~11 => 0. 정수/정수 => 정수
am_pm = "AM";
} else { //12~24 => 1 또는 2가 됨
am_pm = "PM";
// 13~23시이면 1~11시로 표현
hour = hour - 12;
}
String CT = hour + ":" + minute + ":" + second + " " + am_pm;
out.print("<p>현재 접속 시각 : " + CT + "</p>");
%>
</div>
</div>
<%@ include file="footer.jsp" %>
<script type="text/javascript">
function fnCt() {
console.log("개똥이");
let h3 = document.getElementsByTagName("h3")[0];
// h3 : <h3>Welcome to Web Market!</h3>
let tagline = h3.innerHTML;
console.log("tagline : " + tagline);
let today = new Date();
console.log("today : " + today);
// 연도
let year = today.getFullYear();
let month = ('0' + (today.getMonth()+1)).slice(-2); // 01, 02, 03
let day = ('0' + today.getDate()).slice(-2); // 01, 02, 03
let dateString = year + "-" + month + "-" + day;
console.log("dateString : " + dateString);
// 시간
let hours = ('0' + today.getHours()).slice(-2);
let minutes = ('0' + today.getMinutes()).slice(-2); // 분
let seconds = ('0' + today.getSeconds()).slice(-2); // 초
let timeString = hours + ":" + minutes + ":" + seconds;
console.log("timeString : " + timeString);
//<div class="text-center"></div> 요소 선택
const divTcenter = document.querySelector(".text-center");
divTcenter.innerHTML = "<h3>" + tagline + "</h3><p>현재 접속 시각 : " + dateString + " " + timeString + "</p>";
}
//스크립트에서 제공되는 내장 함수로 파라미터 2개가 필수 / 1초마다 fnCt 함수 요청
setInterval(fnCt, 1000);
</script>
</body>
</html>
footer.jsp (푸터 파일)
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<footer class="container">
<p>©WebMarket</p>
</footer>
반응형
'스프링' 카테고리의 다른 글
[스프링] 6장 쇼핑몰 시스템 (0) | 2024.03.29 |
---|---|
[스프링] 5장 디렉티브 (0) | 2024.03.28 |
[스프링] 4.5장 과제 (0) | 2024.03.28 |
[스프링] 2장 프로젝트 생성 및 설정 방법 (0) | 2024.03.25 |
[스프링] 1장 JSP의 개요 (0) | 2024.03.25 |