ajax ํ™œ์šฉ ์บ˜๋ฆฐ๋” ๋งŒ๋“ค๊ธฐ

2021. 4. 21. 17:16ยท๐Ÿ’ป ๊ฐœ๋ฐœ/๐Ÿ“– TIL (Today I Learned)

Spring ํ”„๋ ˆ์ž„์›Œํฌ์™€ ajax๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ๋ฐฉ์‹ ์บ˜๋ฆฐ๋”๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.

 

 

 

๊ตฌํ˜„ ๋ฐฉ์‹์€ ์บ˜๋ฆฐ๋” ์ƒ๋‹จ์— new Date()๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ํ˜„์žฌ ๋…„, ์›”์„ ํ‘œ์‹œํ•˜์˜€๊ณ ,

๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํ‘œ์‹œํ•˜๋Š” ๋…„, ์›”์˜ ์ˆซ์ž๊ฐ€ ๋ฐ”๋€” ๋•Œ ๊ทธ ํƒœ๊ทธ text๊ฐ’์„ JQuery๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์™€ ajax Data๋กœ ๋„˜๊ฒจ์ฃผ์—ˆ๋‹ค.

๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ๋•Œ๋งˆ๋‹ค ajax๋ฅผ ์žฌํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹.

๋…„, ์›”์˜ ๊ฐ’์„ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ณด๋‚ด์–ด ํ•ด๋‹น ์›”์˜ ์Šค์ผ€์ค„์„ List ํ˜•์‹์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ณ , 

๊ฐ ์›”์˜ ์ฒซ์งธ๋‚  ์š”์ผ, ๋งˆ์ง€๋ง‰๋‚  ์š”์ผ, ๋งˆ์ง€๋ง‰ ์ผ์ˆ˜ ๋“ฑ์„ ๊ตฌํ•ด ๊ธฐ๋ณธ form์„ ๋งŒ๋“ค๊ณ  

append()๋ฅผ ํ†ตํ•ด ๋งŒ๋“  ํƒœ๊ทธ๋ฅผ ๋ฟŒ๋ ค์ฃผ์—ˆ๋‹ค.

๋…„, ์›”์ด ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ๋‚จ์•„์žˆ๋˜ ํƒœ๊ทธ๋Š” ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ฟŒ๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ƒ์„ฑ๋œ trํƒœ๊ทธ์˜ class ์ด๋ฆ„์„ ํ†ต์ผํ•˜์—ฌ

remove()๋กœ ์‚ญ์ œํ•ด์ฃผ์—ˆ๋‹ค.

๊ธฐ๋Šฅ๊ตฌํ˜„ํ•˜๋Š” ํ•จ์ˆ˜๋“ค์€ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ํ˜ธ์ถœํ•ด์ฃผ์—ˆ๋‹ค.

 

 

 

 

calendarlist.jsp

<%@page import="java.util.List"%>
<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    

<style type="text/css">

#menu { 
	float:right; 
	list-style-type:none; 
	margin:0 0 1em; 
	padding:8px 0 0 10px; 
	white-space:nowrap; 
	width:100%; 
}

.pagination {
   justify-content: center;
}

</style>


<div align="center">
	<!-- ๋‹ฌ๋ ฅ ํ…Œ์ด๋ธ” -->
	<table class="table" border="1" id="calTable">
		<col width="100"><col width="100"><col width="100"><col width="100">
		<col width="100"><col width="100"><col width="100">
			<tr height="100">
				<!-- ์ฒซ๋ฒˆ์งธ ํ–‰ (๋ณด์ด๋Š” ๋…„,์›”๊ณผ ๋ฒ„ํŠผ) -->
			 	<td colspan="7" align="center" style="padding-top: 20px">
			 	
			 	<a href='javascript:prevYear()'><img src='image/left.gif'></a>
			 	<a href='javascript:prevMonth()'><img src='image/prec.gif'></a>
			 	
				<font id="yyyy" color="black" style="font-size: 40px">
		 		</font>
				<font color="black" style="font-size: 40px">๋…„
		 		</font>
				<font id="MM" color="black" style="font-size: 40px">
		 		</font>
				<font color="black" style="font-size: 40px">์›”
		 		</font>
		 		
		 		<a href='javascript:nextMonth()'><img src='image/next.gif'></a>
		 		<a href='javascript:nextYear()'><img src='image/last.gif'></a>
			 	</td>
			</tr>	
		 	
		 	<!-- ๋‘๋ฒˆ์งธ ํ–‰ (์š”์ผ) -->
		 	<tr height="50">
		 		<th align="center">์ผ</th>
		 		<th align="center">์›”</th>
		 		<th align="center">ํ™”</th>
		 		<th align="center">์ˆ˜</th>
		 		<th align="center">๋ชฉ</th>
		 		<th align="center">๊ธˆ</th>
		 		<th align="center">ํ† </th>
		 	</tr>
		 	
		 	
	</table>
</div>


<script type="text/javascript">


let now = new Date();
let year = now.getFullYear();	//๋…„
let month = now.getMonth()+1;	//์›”
let date = now.getDate();	//์ผ
let day = now.getDay();	//์š”์ผ 0~6
//alert(date);


$('#yyyy').text(year);
$('#MM').text(month);


getCalListData();

//bbslist๋ฅผ ์ทจ๋“
function getCalListData() {
	
	let selectYear = $('#yyyy').text();
	let selectMonth = $('#MM').text();
	
	
	$.ajax({
		url:"./callistData.do",
		type:"get",
		data:{
			year:selectYear,
			month:selectMonth
		},
		success:function(list){
			//alert('success');
			//alert("๋…„/์›” : "+selectYear+"/"+selectMonth);
			
			$('.calCls').remove();
			
			let lastDay = (new Date(selectYear, selectMonth, 0)).getDate();	// ๋งˆ์ง€๋ง‰ ์ผ์ˆ˜
			//alert("๋งˆ์ง€๋ง‰๋‚  ์ผ์ˆ˜ : "+lastDay);
			let firstDayOfWeek = (new Date(selectYear, selectMonth-1, 1)).getDay();	//์ฒซ๋‚  ์š”์ผ
			//alert("์ฒซ๋‚ ์š”์ผ : "+firstDayOfWeek);
			let lastDayOfWeek = (new Date(selectYear, selectMonth, 0)).getDay();	//๋งˆ์ง€๋ง‰๋‚  ์š”์ผ
			//alert("๋งˆ์ง€๋ง‰๋‚ ์š”์ผ : "+lastDayOfWeek);
			
			let middle = '<tr class="calCls" height="100" align="left" valign="top">';
			
			/* ์ฒซ๋ฒˆ์งธ ์ค„ ํšŒ์ƒ‰์นธ */
			for(i = 1; i <= firstDayOfWeek; i++) {
				middle += "<td style='background-color: #cecece'>&nbsp;</td>";
			} 
			
			/* ๋‚ ์งœ ํ‘œ์‹œ */
			for(i = 1; i <= lastDay; i++) {
				
				middle += "<td>"
					+ callist(selectYear, selectMonth, i)
					+ "&nbsp;&nbsp;"
					+ showPen(selectYear, selectMonth, i)
					+ makeTable(selectYear, selectMonth, i, list)
					+ "</td>";
				
		     	if( (i + firstDayOfWeek) % 7 == 0 && i != lastDay) {				
					middle += "</tr><tr class='calCls' height='100' align='left' valign='top'>";				
				} 			
		     	
			}
			
			/* ๋งˆ์ง€๋ง‰ ์ค„ ํšŒ์ƒ‰์นธ */
			for(i = 1; i <= 6 - lastDayOfWeek; i++) {
				middle += "<td style='background-color: #cecece'>&nbsp;</td>";
			} 
			
			middle += "</tr>";
			
			$("#calTable").append(middle);	
   
		},
		
		error:function(){
			alert('error');
		}
	});
};



function prevYear() {
	
	year -= 1;
	
	$('#yyyy').text(year);
	
	getCalListData();
}

function prevMonth() {
	
	month -= 1;
	
	if(month < 1) {
		month = 12;
		year -= 1;
	}
	
	$('#yyyy').text(year);
	$('#MM').text(month);
	
	getCalListData();
}

function nextMonth() {
	
	month += 1;
	
	if(month > 12) {
		month = 1;
		year += 1;
	}
	
	$('#yyyy').text(year);
	$('#MM').text(month);
	
	getCalListData();
}

function nextYear() {
	
	year += 1;
	
	$('#yyyy').text(year);
	
	getCalListData();
}




/* ๋‚ ์งœ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ทธ ๋‚ ์˜ ์ผ์ •์„ ๋ชจ๋‘ ๋ณผ ์ˆ˜ ์žˆ๋Š” callist.jsp๋กœ ์ด๋™ํ•˜๋Š” url ๋งŒ๋“œ๋Š” ๋ฉ”์†Œ๋“œ */

function callist(year, month, day) {
	
	let str = "&nbsp;<a href='calDayList.do?year="+year+"&month="+month+"&day="+day+"'>"+day+"</a>";
	/* <a href='calDetail.do?year=2021&month=3&day=19'>19</a> */
	return str;
	
}

 

/* ์ผ์ •์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ pen ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด calwrite.jsp๋กœ ์ด๋™ํ•˜๋Š” url ๋งŒ๋“œ๋Š” ๋ฉ”์†Œ๋“œ */
function showPen(year, month, day) {
	
	let str = "";
	let image = "<img src='image/pen.png' width='18px' height='18px'>";
	
	str += "<a href='calWrite.do?year="+year+"&month="+month+"&day="+day+"'>"+image+"</a>";
	
	/* ex)	<a href='calwrite.jsp?year=2021&month=3&day=19'><img src='image/pen2.png' width='18px' height='18px'></a> */
	
	return str;
	
}


/* ๋‹ฌ๋ ฅ์˜ ๋‚ ์งœ ๋ณ„๋กœ ์Šค์ผ€์ค„์„ ์„ค์ •ํ•  ํ…Œ์ด๋ธ”์„ ์ž‘์„ฑํ•˜๋Š” ๋ฉ”์†Œ๋“œ */
function makeTable(year, month, day, list) {

	let str = "";
	let dates = (year+"") + two(month+"") + two(day+"");	//์›”๊ณผ ์ผ์€ ํ•œ์ž๋ฆฌ์ผ๋•Œ ๋‘์ž๋ฆฌ๋กœ ๋ฐ”๊ฟ”์คŒ
	str += "<table>";
	str += "<col width='100'>";
	
	$.each(list, function (i, val) {
		if(val.rdate.substring(0, 8) ==dates) {	//'list์•ˆ์˜ ๋‚ ์งœ'๊ฐ€ '์ž…๋ ฅํ•˜๋Š” ๋‚ ์งœ'์™€ ๊ฐ™์„ ๋•Œ,
			str += "<tr>"
			+ "<td style='line-height: 3px; overflow: hidden; border-collapse:collapse;'>"
			+ "<a href='calDetail.do?seq=" + val.seq + "'>"
			+ "<font style='font-size:13px; color:blue'>"
			+ dot3(val.title)
			+ "</font>"
			+ "</a>"
			+ "</td>"
			+ "</tr>";
		}
	})
	
	str += "</table>";
	
	return str;
	
}


/* ํ•œ ๋ฌธ์ž๋ฅผ ๋‘ ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ (ex 3์›” - > 2021319 ๊ฐ€ ์•„๋‹Œ 20210319๋กœ ๋งŒ๋“ ๋‹ค) */
function two(msg) {
	
	return msg.length < 2 ? "0"+msg : msg;
	//๊ธธ์ด๊ฐ€ 2๋ณด๋‹ค ์ž‘์œผ๋ฉด ์•ž์— 0์„ ๋ถ™์—ฌ์ค€๋‹ค.
}


/* ์ผ์ •์˜ ์ œ๋ชฉ์ด ๊ธธ ๋•Œ ... ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ (ex 4๊ธ€์ž ์ œํ•œ์ผ ๋•Œ, CGV์—์„œ ๋ฐ์ดํŠธ -> CGV์—... ) */
function dot3(msg) {
	let str = "";
	if(msg.length > 4) {
		str = msg.substring(0, 4); // ex) CGV์—์„œ ๋ฐ์ดํŠธ -> CGV์—...
		str += "...";
	}
	else {
		str = msg;
	}
	return str;
}



</script>

 

 

calWrite.jsp

 

์ผ์ •์„ ์ž‘์„ฑํ•˜๋Š” ํŽ˜์ด์ง€.

elํƒœ๊ทธ์™€ coreํƒœ๊ทธ๋ฅผ ํ™œ์šฉํ–ˆ๋‹ค.

select ํƒœ๊ทธ์—์„œ ๊ธฐ๋ณธ selected ๊ฐ’์ด ์„ ํƒํ•œ ์›”,์ผ๋กœ ํ‘œ์‹œ๋˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ,

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„ ํ™œ์šฉํ•ด๋ณด์•˜๋‹ค.

 

 

โ€ป JSP์—์„œ๋Š” ELํƒœ๊ทธ์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ํ‘œํ˜„์‹ ๋ชจ์–‘์ด ${}๋กœ ๋˜‘๊ฐ™๋‹ค.

๊ทธ๋ž˜์„œ ๋ฆฌํ„ฐ๋Ÿด ํ‘œํ˜„์‹์—๋Š” ๊ตฌ๋ถ„์„ ์ฃผ๊ธฐ ์œ„ํ•ด ๋‹ฌ๋Ÿฌ ์‚ฌ์ธ ์•ž์— \(์—ญ์Šฌ๋ž˜์‹œ)๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 


<div align="center">
	<form action="calWriteAf.do" method="get">
	
		<table border="1">
			<col width="50"><col width="500">
				<tr>
					<th>ID</th>				
					<td>${login.id }<input type="hidden" name="id" value="${login.id }"> </td>
				</tr>
				<tr>
					<th>์ œ๋ชฉ</th>
					<td>
						<input type="text" size="60" name="title">
					</td>
				</tr>
				<tr>
					<th>์ผ์ •</th>
					<td>
					
						<!-- -------์—ฐ๋„ ์„ ํƒ------- -->
						<c:if test="${param.year != null }">
						<select id="year" name="year">
							<c:forEach begin="${param.year - 5 }" end="${param.year + 5 }" step="1" var="i">
								<option value="${i}">${i}</option>
							</c:forEach>
						</select>๋…„
						</c:if>
						
						
						<!-- -------์›” ์„ ํƒ------- -->
						<c:if test="${param.month != null }">
						<select id="month" name="month">
							<c:forEach begin="1" end="12" step="1" var="i">
								<option value="${i}">${i}</option>
							</c:forEach>
						</select>์›”
						</c:if>
						
						
						<!-- -------์ผ ์„ ํƒ------- -->
						<c:if test="${param.month != null }">
						<select id="day" name="day">
							<c:forEach begin="1" end="${maxDay }" step="1" var="i">
								<option value="${i}">${i}</option>
							</c:forEach>
						</select>์›”
						</c:if>	
						
						
						<!-- ์‹œ ์„ ํƒ------- -->
						<c:if test="${param.month != null }">
						<select id="hour" name="hour">
							<c:forEach begin="0" end="23" step="1" var="i">
								<option value="${i}">${i}</option>
							</c:forEach>
						</select>์‹œ
						</c:if>		
							
						
						<!-- ๋ถ„ ์„ ํƒ------- -->
						<c:if test="${param.month != null }">
						<select id="min" name="min">
							<c:forEach begin="0" end="59" step="1" var="i">
								<option value="${i}">${i}</option>
							</c:forEach>
						</select>๋ถ„
						</c:if>		
						
						
					</td>
				</tr>
				
				<tr>
					<th>๋‚ด์šฉ</th>
					<td>
						<textarea rows="20" cols="60" name="content"></textarea>
					</td>
				</tr>
				<tr>
					<td colspan="2" align="center">
						<br><input type="submit" value="์ผ์ •์ถ”๊ฐ€">
					</td>
				</tr>
		</table>
	</form>
</div>


<script type="text/javascript">

	let now = new Date();
	let hour = now.getHours();
	let minutes = now.getMinutes();

	$('#year > option[value="${param.year}"]').attr('selected', true);
	$('#month > option[value="${param.month}"]').attr('selected', true);
	$('#day > option[value="${param.day}"]').attr('selected', true);
	$(`#hour > option[value=\${hour}]`).attr('selected', true);
	$(`#min > option[value=\${minutes}]`).attr('selected', true);


</script>

 

 

Calcontroller.java

package bit.com.a.controller;

import java.util.Calendar;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import bit.com.a.dto.BbsDto;
import bit.com.a.dto.CalParam;
import bit.com.a.dto.CalendarDto;
import bit.com.a.dto.MemberDto;
import bit.com.a.service.CalService;
import util.UtilEx;

@Controller
public class CalController {
	
	
	@Autowired
	CalService calService;
	
	
	@RequestMapping(value = "callist.do", method = RequestMethod.GET)
	public String callist(Model model) {
		
		model.addAttribute("doc_title", "์ผ์ •๊ด€๋ฆฌ");
		
		return "callist.tiles";
	};
	
	
	@ResponseBody
	@RequestMapping(value = "callistData.do", method = RequestMethod.GET)
	public List<CalendarDto> callistData(String year, String month, HttpServletRequest req) {
		System.out.println("year : "+year+ " month : "+month);
		MemberDto mDto = (MemberDto)req.getSession().getAttribute("login");
		CalParam param = new CalParam(mDto.getId(), year+UtilEx.two(month));
		List<CalendarDto> list = calService.getCalList(param);
		
		return list;
	}
	
	
	@RequestMapping(value = "calDetail.do", method = { RequestMethod.GET, RequestMethod.POST })
	public String calDetail(Model model, Integer seq) {
		
		if(seq == null) seq = 0;
		System.out.println("seq : "+seq);
		CalendarDto dto = calService.calDetail(seq);
		model.addAttribute("cal", dto);
		model.addAttribute("doc_title", "์ผ์ • ์ƒ์„ธํŽ˜์ด์ง€");
		return "calDetail.tiles";
	}
	
	@RequestMapping(value = "calWrite.do", method = { RequestMethod.GET, RequestMethod.POST })
	public String calWrite(Model model, CalParam param) {
		model.addAttribute("doc_title", "์ผ์ •์“ฐ๊ธฐ");
		model.addAttribute("param", param);
		Calendar cal = Calendar.getInstance();
		int year = Integer.parseInt(param.getYear());
		int month = Integer.parseInt(param.getMonth());
		cal.set(year, month-1, 1);
		int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
		//System.out.println(year+"๋…„ "+month+"์›”์˜ ์ผ์ˆ˜ : "+maxDay);
		model.addAttribute("maxDay", maxDay);
		
		
		
		
		
		return "calWrite.tiles";
	}
	
	
	
	@RequestMapping(value = "calWriteAf.do", method = { RequestMethod.GET, RequestMethod.POST })
	public String calWriteAf(CalendarDto dto, CalParam param) {
		
		String rdate = param.getYear()+UtilEx.two(param.getMonth())
						+UtilEx.two(param.getDay())+UtilEx.two(param.getHour())+UtilEx.two(param.getMin());
		System.out.println("๊ธ€์“ด์‹œ๊ฐ„ : "+rdate);
		System.out.println(dto.toString());
		dto.setRdate(rdate);

		int write = calService.calWrite(dto);
		if(write > 0 ) {
			System.out.println("๊ธ€์“ฐ๊ธฐ ์„ฑ๊ณต");
			return "redirect:/callist.do";
		} else {
			System.out.println("๊ธ€์“ฐ๊ธฐ ์‹คํŒจ");
			return "redirect:/calWrite.do";
		}
	}
	
	
	@RequestMapping(value = "calDelete.do", method = RequestMethod.GET) 
	public String calDelete(int seq) {
		
		int del = calService.calDelete(seq);
		
		if(del > 0 ) {
			System.out.println("์‚ญ์ œ ์„ฑ๊ณต");
		} else {
			System.out.println("์‚ญ์ œ ์‹คํŒจ");
		}
		
		return "redirect:/callist.do";
	}
	
	
	@RequestMapping(value = "calUpdate.do", method = { RequestMethod.GET, RequestMethod.POST })
	public String calUpdate(Model model, int seq) {
		model.addAttribute("doc_title", "์ผ์ •์ˆ˜์ •");
		
		CalendarDto dto = calService.calDetail(seq);
		CalParam param = new CalParam(null, null, 
									dto.getRdate().substring(0, 4),
									dto.getRdate().substring(4, 6),
									dto.getRdate().substring(6, 8),
									dto.getRdate().substring(8, 10),
									dto.getRdate().substring(10, 12));
		System.out.println(param.toString());
		System.out.println(dto.toString());
		model.addAttribute("param1", param);
		model.addAttribute("cal", dto);
		
		return "calUpdate.tiles";
	}

	
	@RequestMapping(value = "calUpdateAf.do", method = { RequestMethod.GET, RequestMethod.POST })
	public String calUpdateAf(CalendarDto dto, CalParam param) {
		
		String rdate = param.getYear()+UtilEx.two(param.getMonth())
						+UtilEx.two(param.getDay())+UtilEx.two(param.getHour())+UtilEx.two(param.getMin());
		System.out.println("๊ธ€์“ด์‹œ๊ฐ„ : "+rdate);
		dto.setRdate(rdate);
		System.out.println(dto.toString());

		int update = calService.calUpdate(dto);
		if(update > 0 ) {
			System.out.println("์ˆ˜์ • ์„ฑ๊ณต");
			return "redirect:/callist.do";
		} else {
			System.out.println("์ˆ˜์ • ์‹คํŒจ");
			return "redirect:/calWrite.do";
		}
	}
	
	
	@RequestMapping(value = "calDayList.do", method = { RequestMethod.GET, RequestMethod.POST })
	public String calDayList(Model model, @ModelAttribute("param2")CalParam param, HttpSession session) {
		model.addAttribute("doc_title", "ํ•˜๋ฃจ ์ผ์ •");
		MemberDto mDto = (MemberDto)session.getAttribute("login");
		
		param.setId(mDto.getId());
		param.setYyyyMMdd(param.getYear()+UtilEx.two(param.getMonth())+UtilEx.two(param.getDay()));
		
		System.out.println(param.toString());
		List<CalendarDto> list = calService.getDayList(param);
		
		model.addAttribute("dayList", list);
		
		return "calDayList.tiles";
	}
	
	
	

}

 

 

 

calendar.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  
  
<mapper namespace="Cal">



 <!-- ์บ˜๋ฆฐ๋” ๋ฆฌ์ŠคํŠธ -->
<select id="callist" parameterType="bit.com.a.dto.CalParam" resultType="bit.com.a.dto.CalendarDto">
	SELECT SEQ, ID, TITLE, CONTENT, RDATE, WDATE
	FROM 
	(SELECT ROW_NUMBER()OVER(PARTITION BY SUBSTR(RDATE, 1, 8)ORDER BY RDATE ASC) AS RNUM,  
	SEQ, ID, TITLE, CONTENT, RDATE, WDATE 
	FROM CALENDAR 
	WHERE ID=#{id} AND SUBSTR(RDATE, 1, 6)=#{yyyyMM} ) 
	WHERE RNUM BETWEEN 1 AND 3
</select>


<!-- ๋””ํ…Œ์ผ -->
<select id="detail" parameterType="int" resultType="bit.com.a.dto.CalendarDto">
	SELECT *
	FROM CALENDAR
	WHERE SEQ=#{seq}
</select>


<!-- ๊ธ€์“ฐ๊ธฐ -->
<insert id="write" parameterType="bit.com.a.dto.CalendarDto">
	INSERT INTO CALENDAR(SEQ, ID, TITLE, CONTENT, RDATE, WDATE)
	VALUES(SEQ_CAL.NEXTVAL, #{id}, #{title}, #{content}, #{rdate}, SYSDATE)
</insert>



<!-- ๊ธ€์‚ญ์ œ -->
<delete id="delete" parameterType="int">
	DELETE FROM CALENDAR
	WHERE SEQ=#{seq}
</delete>


<!-- ๊ธ€์ˆ˜์ • -->
<update id="update" parameterType="bit.com.a.dto.CalendarDto">
	UPDATE CALENDAR
	SET TITLE=#{title}, CONTENT=#{content}, RDATE =#{rdate} 
	WHERE SEQ=#{seq}
</update>


<!-- ํ•˜๋ฃจ ์ผ์ • -->
<select id="daylist" parameterType="bit.com.a.dto.CalParam" resultType="bit.com.a.dto.CalendarDto">
	SELECT SEQ, ID, TITLE, CONTENT, RDATE, WDATE 
	FROM 
	(SELECT ROW_NUMBER()OVER(PARTITION BY SUBSTR(RDATE, 1, 8)ORDER BY RDATE ASC) AS RNUM,
	SEQ, ID, TITLE, CONTENT, RDATE, WDATE
	FROM CALENDAR
	WHERE ID=#{id} AND SUBSTR(RDATE, 1, 8)=#{yyyyMMdd} )
	ORDER BY RDATE ASC
</select>



</mapper>

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ’ป ๊ฐœ๋ฐœ > ๐Ÿ“– TIL (Today I Learned)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

210427 TIL(D+74 ์Šคํ”„๋ง ํˆฌํ‘œ ๊ตฌํ˜„, Crawling, ์ปค์Šคํ…€ ์–ด๋…ธํ…Œ์ด์…˜ ํ™œ์šฉํ•œ AOP, ์›น ์†Œ์ผ“)  (0) 2021.04.27
210422 TIL (D+71 ์Šคํ”„๋ง File ์—…๋กœ๋“œ, ๋‹ค์šด๋กœ๋“œ ๊ตฌํ˜„)  (0) 2021.04.22
'๐Ÿ’ป ๊ฐœ๋ฐœ/๐Ÿ“– TIL (Today I Learned)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 210427 TIL(D+74 ์Šคํ”„๋ง ํˆฌํ‘œ ๊ตฌํ˜„, Crawling, ์ปค์Šคํ…€ ์–ด๋…ธํ…Œ์ด์…˜ ํ™œ์šฉํ•œ AOP, ์›น ์†Œ์ผ“)
  • 210422 TIL (D+71 ์Šคํ”„๋ง File ์—…๋กœ๋“œ, ๋‹ค์šด๋กœ๋“œ ๊ตฌํ˜„)
EastShine_
EastShine_
๋” ๋‚˜์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๋‚˜์˜ ๊ธฐ๋ก ๐Ÿ“
  • EastShine_
    ๊ฐœ๋ฐœ.LOG ๐Ÿ’ป
    EastShine_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • 05-24 02:15
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (27)
      • ๐Ÿ’ป ๊ฐœ๋ฐœ (21)
        • ๐Ÿ–ฅ๏ธ ์šด์˜์ฒด์ œ (3)
        • ๐ŸŒ ๋„คํŠธ์›Œํฌ (0)
        • ๐Ÿ’พ Database (3)
        • ๐ŸŽ› Java (0)
        • ๐Ÿ–ฒ Javascript (0)
        • ๐Ÿ€ Spring (5)
        • ๐ŸŽธ ETC (4)
        • ๐Ÿ“ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (3)
        • ๐Ÿ“– TIL (Today I Learned) (3)
      • ๐Ÿ  ์ผ์ƒ (6)
        • ๐Ÿ““ ์ผ์ƒ ์ผ๊ธฐ (6)
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    Whisper API
    Python
    ํŠธ๋žœ์žญ์…˜ ๋ถ„๋ฆฌ
    ๋™์‹œ์„ฑ์ฒ˜๋ฆฌ
    transactionaleventlistener
    ๋‚™๊ด€์ ๋ฝ
    redis
    ํ•ญํ•ดํ”Œ๋Ÿฌ์Šค
    ๋ฐฑ์—”๋“œ
    ์ฝ˜์„œํŠธ์˜ˆ์•ฝ์„œ๋น„์Šค
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    e-book pdf ๋ณ€ํ™˜
    ๋น„๊ด€์ ๋ฝ
    ๋Œ€๊ธฐ์—ด
    ํšŒ๊ณ 
    6๊ธฐ
    spring
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    e-book pdf ์ถ”์ถœ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
EastShine_
ajax ํ™œ์šฉ ์บ˜๋ฆฐ๋” ๋งŒ๋“ค๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”