국비지원학원/JSP

99일차-JSP_JSTL+다이어리

초코맛 2019. 4. 3. 02:25
반응형
*JSTL(JSP Standard Tag Library)
  • 변수 : <c:set >, <c:remove >
  • 출력 : <c:out> 
  • 제어 : <c:if > , <c:choose > ,<c:when > ,<c:otherwise > ,<c:forEach > ,<c:forTokens >
  • redirect : <c:redirect url="이동할 페이지 URL"/>
    • <<<<<forward :데이터 처리와(업무로직) 화면디자인(뷰)을 분리할때(브라우저는 모름 n자) vs redirect : 정상적인 페이지 요청이아닌 비 정상적인 페이지 요청이 일어났을때 페이지이동(브라우저는 페이지 이동을 앎 m자)
    • 정상적 요청이 발생했을 때 응답할 페이지에서 비정상적인 요청이 발생했을 때 페이지 이동 기술
    • include  <<어떻게 하면 중복코드를 줄일것이냐 에서 시작됨>>>
      • 공통코드를 가진 jsp를 분리하여 작성하고 필요한곳에서 사용하기 위해 사용되는 기술.
      • 코드 : <%@ include %> //세션체크(컴퓨터의 호단위 연결-관계유지-저장공간을 얻어냄)
      • 디자인 : <jsp:include   >   //액션 태그
        • <c: import url="끼워넣을 jsp의 URL"/>
<%@page import="java.util.Random"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info ="jstl redirect"
    %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF  url(http://localhost:8080/jsp_prj/common/images/header_bg.png)  repeat-x;
           position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px;  font-weight:bold; text-align:center;
                /* padding-top: 35px */ position:absolute;  top:40px; left:290px; }
#container{width:800px; height:600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px;  padding-right:20px; }
</style>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <%
           boolean flag=new Random().nextBoolean();
           pageContext.setAttribute("flag", flag);
     %>
     <c:if test="${flag}">
           <!-- 비 정상적인 경우의 요청이 있을때 페이지 이동 -->
           <%-- <%response.sendRedirect("jstl_redirect_b.jsp");  %>을 태그로 적는게 훨씬 눈에 안껄끄러움 --%>
           <c:redirect url="jstl_redirect_b.jsp"/>
     </c:if>
     정상적인 경우 제공할 서비스<br/>
     <img src="../common/images/img2.jpg"/>
     
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</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>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF  url(http://localhost:8080/jsp_prj/common/images/header_bg.png)  repeat-x;
           position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px;  font-weight:bold; text-align:center;
                /* padding-top: 35px */ position:absolute;  top:40px; left:290px; }
#container{width:800px; height:600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px;  padding-right:20px; }
</style>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     
     <div id="container">
     비 정상적일때 응답할 페이지<br/>
     <img src="../common/images/img.png"/>
     </div>
     
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>

    • 예외 처리 :
      • <c: catch var="객체명">
      •    예외 발생 예상 코드
      • </c:catch>
      • <c:if test="${객체명 ne null}">//// =not empty 객체명
      •    예외 발생시 제공할 코드
      • </c:if>
    • 이미지)


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="지시자의 충돌이 발생하지 않고 변수나 method읜 공유가  발생하지 않는 import에 대해 사용"
    %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF  url(http://localhost:8080/jsp_prj/common/images/header_bg.png)  repeat-x;
           position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px;  font-weight:bold; text-align:center;
                /* padding-top: 35px */ position:absolute;  top:40px; left:290px; }
#container{width:800px; height:600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px;  padding-right:20px; }
</style>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     외부 페이지
     <div>
     <c:import url="jstl_import_b.jsp"/>
     </div>
     외부페이지<br/>
     <%--
     내부 페이지의 변수는 사용할 수 없다.
     내부 페이지 변수의 사용 : ${pageScope.week} --%>
     
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="지시자의 충돌이 발생하지 않는다."
%>
      공통 디자인 정의<br/>
    <%
    String week="오늘은 월요일!!";
    pageContext.setAttribute("week", week);
    %>
    <strong>${pageScope.week}</strong><!-- pageScope.week=week  -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="예외 처리"
    %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF  url(http://localhost:8080/jsp_prj/common/images/header_bg.png)  repeat-x;
           position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px;  font-weight:bold; text-align:center;
                /* padding-top: 35px */ position:absolute;  top:40px; left:290px; }
#container{width:800px; height:600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px;  padding-right:20px; }
</style>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     
     <c:catch var="e">
     <%
     /* try{ */
     //코드 생성
     Class.forName("Test");
     /* forName은 컴파일예외로 try catch를 해주어야 하는데,, 이미  해주고 있기 때문에 별도의 try~안해주어도 되는것. */
     //예외를 throws하는 method를 호출하더라도 _jspService()가  코드를 try~catch로 감싸고 있기 때문에 코드 에러가 발생하지 않는다.
/*   }catch(ClassNotFoundException cnfe){
           out.print("죄송합니다");
     }//end catch -하지 않으면 500이 떠버린다. */
     %>
     <!-- jsp는 자바가 아니다.....훨신 편함.. -->
     </c:catch>
     <c:if test="${not empty e}"><%-- e ne null --%>
     서비스 도중 문제가 발생하였습니다.<br/>
     ${e}
     </c:if>
     <%--
     <%!
     public void test(){  
            Class.forName(""); //여기서는 예외처리하라고  빨간줄이뜬다.//try~catch 필수
     }
     %> --%>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>

  • fmt : 형식을 가진 문자열을 만드는 taglib
    • 1.지시자
      • <% tablib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
      • 태그사이엣
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"  %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF  url(http://localhost:8080/jsp_prj/common/images/header_bg.png)  repeat-x;
           position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px;  font-weight:bold; text-align:center;
                /* padding-top: 35px */ position:absolute;  top:40px; left:290px; }
#container{width:800px; height:600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px;  padding-right:20px; }
</style>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     
     <div id="container">
     <%
           Date date=new Date();
           pageContext.setAttribute("pageDate", date);
     %>
     <!-- EL사용 -->
     <fmt:formatDate value="${pageDate}" pattern="yyyyMMdd EEEE  HH:mm:ss"/><br/>
     <!-- Expression 사용 -->
     <fmt:formatDate value="<%=date %>" pattern="yyyy년MM월dd일  EEEE HH:mm:ss"/><br/>
     
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"  %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF  url(http://localhost:8080/jsp_prj/common/images/header_bg.png)  repeat-x;
           position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px;  font-weight:bold; text-align:center;
                /* padding-top: 35px */ position:absolute;  top:40px; left:290px; }
#container{width:800px; height:600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px;  padding-right:20px; }
</style>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <%
           int i=20190318;
           int j=2019;
           
           pageContext.setAttribute("i", i);
           pageContext.setAttribute("j", j);
     %>
     #패턴 사용 :
     <fmt:formatNumber value="${i}"  pattern="#,###,###,###"/><br/>
     0패턴 사용 :
     <fmt:formatNumber value="${j}"  pattern="0,000,000,000"/><br/>
     
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
//중간에 에버노트 에러로 날라감ㅠㅠ 다시 줍줍

*변수: <c:set>, <c:remove>
*출력: <c:out>
*제어: <c:if>, <c:choose>, <c:when>, <c:otherwise>, <c:forEach>, <c:forTokens>
 
*redirect : <c:redirect url="이동할페이지 URL">
  • 정상적 요청이 발생했을 때 응답할 페이지에서 비정상적인 요청이 발생했을 때 페이지 이동 기술

웹 : 요청에 대한 응답, 관계 유지(session, cookie), 페이지 이동

(페이지 이동 두 가지 방법 차이)
  • forward : 데이터처리 페이지와 화면디자인을 분리할 때, 업무로직과 View를 분리 할 때(N자이동)
  • redirect : 정상적인 요청이 있는 페이지에서 비정상적인 요청이 있을 때 페이지이동을 할 때, 브라우저는 페이지의 이동을 앎(M자이동)

*include : 공통코드를 가진 jsp를 분리하여 작성하고 필요한 곳에서 사용하기 위해 사용되는 기술
  • 코드 : <%@ include %> : 세션체크
  • 디자인 : <jsp:include>
                  <c:import url="끼워넣은 jsp URL"/>

*예외처리 : <c:catch var="객체명">
                    예외발생 예상 코드
                    </c:catch>
                    <c:if test="${객체명 ne null / 혹은 not empty 객체명}">
                    예외발생시 제공할 코드
                    </c:if>

 
fmt : 형식가진 문자열을 만드는 taglib
  1. 지시자
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>


  • 날짜 형식 변경
<%
Date d = new Date();
pageScope.setAttribute("date", d);
%>

<fnt : formatDate value="date 객체" pattern=" "/>
fnt : prefix
formatDate : suffix
"date 객체" : ${date}, <%=d %>
pattern: SimpleDateFormat pattern

  • 숫자 형식의 변경
<fnt : formatNumber value="숫자" pattern=" "/>
pattern: DecimalFormat에서 제공하는 pattern
데이터가 없어도 출력 : 0
데이터가 없으면 출력 안함 : #


*달력 만들기
  1. Calendar 사용
Calendar cal=Calendar.getInstance();
  1. 마지막 날을 얻을 수 있는지
이번달에 없는 날짜가 입력되면 다음달 1일로 설정(마지막날은 매달 다른데...)
for(int i=1; ; i++){
  cal.set(Calendar.DAY_OF_MONTH, i);
  if( cal.get(Calendar.DAY_OF_MONTH) !=i){
    //cal : 다음달 1일인 부분
   break;
  }
    //여기서 1일인지 확인하면 된다.
  out.println(i);
}
  1. 토요일이면 줄변경(if~7번째 날이니~?보다 토요일이니?가 가독성이 훨씬 좋다.)
switch(cal.get(Calendar.DAY_OF_WEEK) ){
   case Calendar.SATURDAY :
       out.println("</tr><tr>");
}
  1. 1일을 출력하기전에 공백을 출력
if(i==1){
   for(int j=1; j<cal.get(Calendar.DAY_OF_WEEK); j++){
      out.println("<td></td>");
   }
}
  1. 마지막 날 이후에 공백 출력
for(int j=cal.get(Calendar.DAY_OF_WEEK); j<8 ; j++){
    out.println("<td></td>");
}




<<숙제>>
3.다음달이 마저 출력되어 흐리게 나오게△
2..31일이 끝났는데 다음줄이 빈줄일때(8월) 없앤다....마지막날이 토요일이면 공백을 출력하지 않는다.
4.앞쪽으로 앞달/날 마저 보여주고△
1.오늘에 알려주기 (다음달일땐 표시되면 안됨)

<<달력>>
<%@page import="java.util.Date"%>
<%@page import="com.sun.xml.internal.ws.api.Cancelable"%>
<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF  url(http://localhost:8080/jsp_prj/common/images/header_bg.png)  repeat-x;
           position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px;  font-weight:bold; text-align:center;
                /* padding-top: 35px */ position:absolute;  top:40px; left:290px; }
#container{width:800px; height:600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px;  padding-right:20px; }
/* 달  력     설  정 */
#diaryTab{margin:0px auto; border-spacing: 0px; border: 1px  solid #CECECE; }
.sunTitle{width : 100px; height:25px; border:1px solid #CECECE;  font-weight:bold;
                color:#FFFFFF; background-color:#ff6b81}
.weekTitle{width : 100px; height:25px; border:1px solid #CECECE}
.satTitle{width : 100px; height:25px; border:1px solid #CECECE;  font-weight:bold;
                color:#FFFFFF; background-color:#3498db}
#diaryTitle{text-align: center; margin-bottom: 10px; margin-top:  20px;}
#diaryToday{width:100px; font-family:고딕체; font-size:28px;  font-weight:bold;vartical-align:bottom;}
.diaryTd{width:100px; height: 60px; border: 1px solid #CECECE;  text-align: right;
                vertical-align: top; font-size:  14px;font-weight: bold;}
.blankTd{width:100px; height: 60px; border: 1px solid #CECECE;  color:#CCCCCC; text-align: right;
                vertical-align: top; font-size:  14px;font-weight: bold;}
.sunColor{font-size: 15px; color:#DE4F44; }
.weekColor{color:#222222; }
.satColor{font-size: 15px; color:#141744; }
.toDay{font-size: 18px; color:#FF55FF; font-weight: bold;}
/* 달  력     설  정    끝 */
</style>
<link rel="stylesheet"  href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <script  src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
  <script  src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
  $( function() {
    $( document ).tooltip({
      position: {
        my: "center bottom-20",
        at: "center top",
        using: function( position, feedback ) {
          $( this ).css( position );
          $( "<div>" )
            .addClass( "arrow" )
            .addClass( feedback.vertical )
            .addClass( feedback.horizontal )
            .appendTo( this );
        }
      }
    });
  } );
</script>
<style>
  .ui-tooltip, .arrow:after {
    background: black;
    border: 2px solid white;
  }
  .ui-tooltip {
    padding: 10px 20px;
    color: white;
    border-radius: 20px;
    font: bold 14px "Helvetica Neue", Sans-Serif;
    text-transform: uppercase;
    box-shadow: 0 0 7px black;
  }
  .arrow {
    width: 70px;
    height: 16px;
    overflow: hidden;
    position: absolute;
    left: 50%;
    margin-left: -35px;
    bottom: -16px;
  }
  .arrow.top {
    top: -16px;
    bottom: auto;
  }
  .arrow.left {
    left: 20%;
  }
  .arrow:after {
    content: "";
    position: absolute;
    left: 20px;
    top: -20px;
    width: 25px;
    height: 25px;
    box-shadow: 6px 5px 9px -9px black;
    -webkit-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    transform: rotate(45deg);
  }
  .arrow.top:after {
    bottom: -20px;
    top: auto;
  }
</style>
<script type="text/javascript">
     function moveMonth(month,year){
          //location.href="diary.jsp?param_year="+year+"&param_month="+month;
/*         var obj=document.diaryFrm;
           obj.param_month.value=month;
           obj.param_year.value=year;
           obj.submit(); */
           
           $("[name='param_year']").val(year);
           $("[name='param_month']").val(month);
           $("[name='diaryFrm']").submit();
     }//moveMonth
</script>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     
     <div id="diaryWrap">
     <%!//declaration
           public static final int START_DAY=1;
     %>
     <%
           Calendar cal=Calendar.getInstance();
           int nowYear=0;
           int nowMonth=0;
           int nowDay=cal.get(Calendar.DAY_OF_MONTH);
           //1 2 3 4 5
           //0 1 2 3 4
           String  param_month=request.getParameter("param_month");
           if(param_month !=null &&  !"".equals(param_month)){//파라메터 월이 존재하면 현재 캘린더  객체의 월을 변경
                cal.set(Calendar.MONTH,  Integer.parseInt(param_month)-1);
           }//end if
           
           nowMonth=cal.get(Calendar.MONTH)+1;
           
           String param_year=request.getParameter("param_year");
           if(param_year !=null &&  !"".equals(param_year)){//파라메터 년이 존재하면 현재 캘린더  객체의 년을 변경
                cal.set(Calendar.YEAR,  Integer.parseInt(param_year));
           }//end if
           
           nowYear=cal.get(Calendar.YEAR);
           
           pageContext.setAttribute("nowYear", nowYear);
           pageContext.setAttribute("nowMonth", nowMonth);
           pageContext.setAttribute("nowDay", nowDay);
     %>
     <form action="diary.jsp" name="diaryFrm" method="post">
           <input type="hidden" name="param_month"/>
           <input type="hidden" name="param_year"/>
     </form>
     
     <div id="diaryTitle">
<%--       <a  href="diary.jsp?param_month=${nowMonth-1==0?12:nowMonth-1}&param_year=${nowMonth-1==0?nowYear-1:nowYear}"><img  src="images/btn_prev.png" title="이전 월"/></a> --%>
           <a href="#void"  onclick="moveMonth(${nowMonth-1==0?12:nowMonth-1},${nowMonth-1==0?nowYear-1:nowYear})"><img src="images/btn_prev.png"  title="이전 월"/></a>
           <span id="diaryToday" title="${nowYear}년  ${nowMonth}월"><c:out value="${nowYear}"/>.<c:out  value="${nowMonth}"/></span>
           <a href="#void"  onclick="moveMonth(${nowMonth+1==13?1:nowMonth+1},${nowMonth+1==13?nowYear+1:nowYear})"><img src="images/btn_next.png"  title="다음 월"/></a>
           <a href="diary.jsp" onclick="moveMonth('','')"><img  src="images/btn_today.png" title="오늘"/></a>
     
     </div>
     <div id="diaryContent">
           <table id="diaryTab">
           <tr>
                <th class="sunTitle">일</th>
                <th class="weekTitle">월</th>
                <th class="weekTitle">화</th>
                <th class="weekTitle">수</th>
                <th class="weekTitle">목</th>
                <th class="weekTitle">금</th>
                <th class="satTitle">토</th>
           </tr>
           <tr>
                <!-- <td class="diaryTd">1</td> -->
                <%
                String dayClass="";
                //매월마다 끝나는 날짜가 다르기 때문에 무한  루프(마지막날 까지)를 사용한다.
                for(int tempDay=1; tempDay<33 ; tempDay++){
                     cal.set(Calendar.DAY_OF_MONTH,  tempDay);//임시일자를 설정한다.
                     if(cal.get(Calendar.DAY_OF_MONTH) !=  tempDay){
                           for(int  blankTd=cal.get(Calendar.DAY_OF_WEEK); blankTd<8; blankTd++){
                                
                                //만약 마지막날이 토요일이라면 +  설정된 날짜가 현재 일자가 아니고
                                if(cal.get(Calendar.DAY_OF_MONTH) != tempDay&&  cal.get(Calendar.DAY_OF_MONTH) == cal.get(Calendar.SATURDAY)){
                                     break;
                                }//end if
                           %>
                                <td  class="blankTd"><%=blankTd%></td>
                           <%
                           }//end for
                           //설정된 날짜가 현재 일자가 아니라면  마지막 일자 다음달 1일이므로 반복문을 빠져나간다.
                           break;/* 나갔을때의 날짜는 다음달 1일   */
                     }//end if
                     //1일을 출력하기 전에 공백 출력. 딱떨어지는  숫자라면 Switch case추쳔
                     switch(tempDay){
                     case START_DAY:
                           for(int blankTd=1;  blankTd<cal.get(Calendar.DAY_OF_WEEK); blankTd++){
                                
                           %>
                                <td  class="blankTd"><%=cal.get(Calendar.MONTH)+"/"+(cal.get(Calendar.DAY_OF_MONTH)+blankTd) %></td>      
                           <%
                           }//end for
                     }//end switch
                     
                     //요일별 색 설정
                     switch(cal.get(Calendar.DAY_OF_WEEK)){
                     case Calendar.SUNDAY:dayClass="sunColor";     break;
                     case Calendar.SATURDAY:     dayClass="satColor"; break;
                     default:                  dayClass="weekColor";
                     }//end switch
                     
                     //오늘
                     Date date=new Date();
                     if(date.getDate()==tempDay &&  Calendar.MONTH+1==cal.get(Calendar.MONTH)+1){
                            dayClass="toDay";
                     }//end switch
                     
                     %>
                     <td class="diaryTd">
                           <div><span class="<%=dayClass%>"><%=  tempDay %></span></div>
                     </td>
                     <%
                     //토요일이라면 줄 변경
                     switch(cal.get(Calendar.DAY_OF_WEEK)){
                     case Calendar.SATURDAY:
                                out.println("</tr><tr>");
                     }//end switch
                }//end for           
                %>
           </tr>
           </table>
     </div>
     </div>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>


 
반응형