[JSP] 달력 출력하기

Beom J·2021년 6월 13일
0

Java

목록 보기
4/8

JSP로 달력 만들기

현재 월 (6월) 출력하기

기본 6월 달력

<%@page import="java.util.Calendar"%>
<%@ 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>
<%
Calendar cal = Calendar.getInstance(); // 2021-06-09
cal.set(Calendar.YEAR,2021);
cal.set(Calendar.MONTH,5);
cal.set(Calendar.DATE,1);
int year = cal.get(Calendar.YEAR); //2021
int month = cal.get(Calendar.MONTH)+1; // 06
int startDay = cal.get(Calendar.DATE); // 01
int startDayOfWeek = cal.get(Calendar.DAY_OF_WEEK); // 3 : 화요일 : 일요일은 1
int lastDay = cal.getActualMaximum(Calendar.DATE); // 6월의 마지막 날 : 30

cal.set(Calendar.DATE, lastDay); // 6월의 마지막 날로 재 설정 : 2021-06-30
int lastWeek = cal.get(Calendar.WEEK_OF_MONTH); // 마지막 주수 : 5

String[] arrWeek = {"일","월","화","수","목","금","토"};
StringBuffer html = new StringBuffer();

html.append("<table border='1' width='800' height='200'>");
for (int col = 0; col < arrWeek.length; col++){
	int i = 1;
	html.append("<tr>");
	for (int row = 0; row <=lastWeek+1; row++ ){
		if ( col ==0 && row ==0){
			// 첫 행에서는 달만 출력
			html.append("<td colspan='7' align='center'>")
			.append(month+" 월").append("</td><tr>");
		} else if (col == 1){
			// 두번째 행에서는 요일만 출력
			html.append("<td>"+arrWeek[row]+"</td>");
		} else {
			html.append("<td>"+i+"</td>");
			i++;
		}
	}
	html.append("</tr>");
} 
html.append("</table>");

out.println(html.toString());
%>
</body>
</html>

일요일만 빨갛게 !

String[] arrWeek = { "일", "월", "화", "수", "목", "금", "토" };

StringBuffer html = new StringBuffer();

// 년도 & 월 출력
html.append("<table border='1' width='800' >");
html.append("<tr><td colspan='7' align=center>").append(year + " 년 " + month + " 월").append("</td></tr>");

// 요일 출력
html.append("<tr>");
for (String str : arrWeek) {
	if (str.equals("일")){
    	html.append("<td style=color:red>" + str + "</td>");
    } else {
		html.append("<td>" + str + "</td>");
	}
}
html.append("</tr>");

// 날짜 출력
for (int cell = 1; cell <= lastDay + 2; cell++) {
	String date = cell < startDayOfWeek ? "" : cell - 2 + "";
    if (cell == 1 || cell % 7 == 1) {
    	html.append("<tr>")
        .append("<td style='color:red'>" + date + "</td>");
    } else if (cell % 7 == 0) {
    	html.append("<td>" + date + "</td>");
        html.append("</tr>");
	} else if (cell > lastDay){
    	html.append("<td></td>");
    } else {
    	html.append("<td>" + date + "</td>");
	}
}

응용! 만년 달력 만들기

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="java.util.Calendar"%>
<%
request.setCharacterEncoding("utf-8");

String Year = request.getParameter("year"); //== null ? "" : request.getParameter("year");
String Month = request.getParameter("month"); //== null ? "" : request.getParameter("month");
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<form action="./calendar3.jsp" method="post" name="frm">
		<select name="year">
			<option value="2021">2021</option>
			<option value="2022">2022</option>
			<option value="2023">2023</option>
		</select><select name="month">
			<option value="1">1</option>
			<option value="2">2</option>
			<option value="3">3</option>
			<option value="4">4</option>
			<option value="5">5</option>
			<option value="6">6</option>
			<option value="7">7</option>
			<option value="8">8</option>
			<option value="9">9</option>
			<option value="10">10</option>
			<option value="11">11</option>
			<option value="12">12</option>
		</select><input type="submit" id="btn" value="달력보기" />
	</form>
	<br />
	<hr />
	<br />

	<%
	if (Year.equals("") || Month.equals("")) {

	} else {
		int year = Integer.parseInt(Year);
		int month = Integer.parseInt(Month);

		int START_DAY_OF_WEEK = 0;
		int END_DAY_OF_WEEK = 0;
		int END_DAY = 0;

		Calendar sDay = Calendar.getInstance();
		Calendar eDay = Calendar.getInstance();

		sDay.set(year, month - 1, 1);
		eDay.set(year, month, 1 - 1);

		START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK);
		END_DAY_OF_WEEK = eDay.get(Calendar.DAY_OF_WEEK);
		END_DAY = eDay.get(Calendar.DATE);

		out.println("<table width='800' border='1'>");
		out.println("<tr>");
		out.println("<td colspan='7'>" + year + "년" + month + "월</td>");
		out.println("</tr>");
		out.println("<tr>");
		out.println("<td style='color:red'>SU</td><td>MO</td><td>TU</td><td>WE</td><td>TH</td><td>FR</td><td>SA</td>");
		out.println("</tr>");

		out.println("<tr>");
		for (int i = 1; i < START_DAY_OF_WEEK; i++) {
			out.println("<td></td>");
		}

		for (int i = 1, n = START_DAY_OF_WEEK; i <= END_DAY; i++, n++) {
			if (n % 7 == 1) {
		out.println("<tr><td style='color:red'><b>" + i + "</b></td>");
			} else if (n % 7 == 0) {
		out.println("<td><b>" + i + "</b></td></tr>");
			} else {
		out.println("<td><b>" + i + "</b></td>");
			}
		}

		for (int i = END_DAY_OF_WEEK; i <= 6; i++) {
			out.println("<td></td>");
		}

		out.println("</tr>");
		out.println("</table>");
	}
	%>
</body>
</html>
profile
네..? 개발자요...? 아....직 일걸요...?

0개의 댓글