JSP로 달력 만들기(코드 참고용)
부트캠프(END)/-Web 실습2022. 8. 11. 22:14
DateModel.java
package doodoo.model;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.text.*;
public class DiaryModel {
public String diary_main(HttpServletRequest request) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
String today = sdf.format(date);
StringTokenizer st = new StringTokenizer(today,"-");
String sy = st.nextToken();
String sm = st.nextToken();
String sd = st.nextToken();
String strYear = request.getParameter("year");
if(strYear==null)
strYear=sy;
String strMonth = request.getParameter("month");
if(strMonth==null)
strMonth=sm;
int year = Integer.parseInt(strYear);
int month = Integer.parseInt(strMonth);
int day = Integer.parseInt(sd);
request.setAttribute("year", year);
request.setAttribute("month", month);
request.setAttribute("day", day);
return "../diary/diary.jsp";
}
public String diary_ok(HttpServletRequest request) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
String today = sdf.format(date);
StringTokenizer st = new StringTokenizer(today,"-");
String sy = st.nextToken();
String sm = st.nextToken();
String sd = st.nextToken();
String strYear = request.getParameter("year");
if(strYear==null)
strYear=sy;
String strMonth = request.getParameter("month");
if(strMonth==null)
strMonth=sm;
int year = Integer.parseInt(strYear);
int month = Integer.parseInt(strMonth);
int day = Integer.parseInt(sd);
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);
cal.set(Calendar.DATE, 1);
int week = cal.get(Calendar.DAY_OF_WEEK);//각 월 1일자의 요일을 가져온다.
int lastday = cal.getActualMaximum(Calendar.DATE); //각 달의 마지막 날
String[] strWeek = {"일","월","화","수","목","금","토"};
request.setAttribute("year", year);
request.setAttribute("month", month);
request.setAttribute("day", day);
request.setAttribute("week", week-1);
request.setAttribute("lastday", lastday);
request.setAttribute("strWeek", strWeek);
return "../diary/diary_ok.jsp";
}
}
Controller.java (Servlet)
package doodoo.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import doodoo.model.DiaryModel;
@WebServlet("*.do")
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void init(ServletConfig config) throws ServletException {
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri = request.getRequestURI();
uri = uri.substring(request.getContextPath().length()+1);
String jsp="";
if(uri.equals("diary/diary.do")) {
DiaryModel dm = new DiaryModel();
jsp = dm.diary_main(request);
}else if(uri.equals("diary/diary_ok.do")) {
DiaryModel dm = new DiaryModel();
jsp = dm.diary_ok(request);
}
RequestDispatcher rd = request.getRequestDispatcher(jsp);
rd.forward(request, response);
}
}
date.jsp
<%@ 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" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<style type="text/css">
.container{
margin-top:50px;
}
.row{
margin: 0px auto;
width: 300px;
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
<script type="text/javascript">
$(function(){
$.ajax({
type:'post',
url:'diary_ok.do',
success:function(result){
$('#print').html(result);
}
})
$('#year').change(function(){
let year=$('#year').val();
let month=$('#month').val();
$.ajax({
type:'post',
url:'diary_ok.do',
data:{"year":year,"month":month},
success:function(result){
$('#print').html(result);
}
})
})
$('#month').change(function(){
let year=$('#year').val();
let month=$('#month').val();
$.ajax({
type:'post',
url:'diary_ok.do',
data:{"year":year,"month":month},
success:function(result){
$('#print').html(result);
}
})
})
})
</script>
</head>
<body>
<div class="container">
<h1 class="text-center">${year }년 ${month }월 ${day }일</h1>
<div class="row">
<table class="table">
<tr>
<td>
<select name="year" class="input-sm" id="year">
<c:forEach var="i" begin="2022" end="2030">
<option ${year==i?"selected":"" } >${i }</option>
</c:forEach>
</select>년도
<select name="month" class="input-sm" id="month">
<c:forEach var="i" begin="1" end="12">
<option ${month==i?"selected":"" }>${i }</option>
</c:forEach>
</select>월
</td>
</tr>
</table>
<div style="height:15px"></div>
<div id="print"></div>
</div>
</div>
</body>
</html>
date_ok.jsp
<%@ 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" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<style type="text/css">
.container{
margin-top:50px;
}
.row{
margin: 0px auto;
width: 300px;
}
</style>
</head>
<body>
<table class="table">
<tr class="success">
<c:forEach var="sw" items="${strWeek }" varStatus="s">
<c:choose>
<c:when test="${s.index==0 }">
<c:set var="color" value="red"/>
</c:when>
<c:when test="${s.index==6 }">
<c:set var="color" value="blue"/>
</c:when>
<c:otherwise>
<c:set var="color" value="black"/>
</c:otherwise>
</c:choose>
<th class="text-center"><h3 style="color:${color}">${sw }</h3></th>
</c:forEach>
</tr>
<c:forEach var="i" begin="1" end="${lastday }">
<c:if test="${i==1 }">
<tr height="50px">
<c:forEach var="j" begin="1" end="${week }">
<td> </td>
</c:forEach>
<%-- 요일만큼 공백을 만들어 줌 --%>
</c:if>
<td class="text-center ${i==day?'danger':'' }">${i }</td> <%--1 일부터 출력 --%>
<c:set var="week" value="${week+1 }"/>
<c:if test="${week>6 }"><%--일요일 다음에 출력 --%>
</tr>
<c:set var="week" value="0"/>
<tr height="50px">
</c:if>
</c:forEach>
</table>
</body>
</html>
'부트캠프(END) > -Web 실습' 카테고리의 다른 글
MyBatis + MVC 실습 (7) : 회원수정/회원탈퇴(소스코드만 정리) (0) | 2022.08.12 |
---|---|
MyBatis + MVC 실습 (6) : 검색 기능 (0) | 2022.08.08 |
MyBatis + MVC 실습 (5) : 댓글 기능 (0) | 2022.08.08 |
댓글()