[구디아카데미][IT국비지원][TIL] 직원 리스트 : 기능 모두 합치기

Seokhyun Jeong·2023년 4월 28일
0

과제

목록 보기
18/19
post-thumbnail

[구디아카데미][IT국비지원]

직원 리스트에 성별, 이름, 입사년월, 입사월로 검색 기능 추가
리스트 표시 개수 선택 추가

코드

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="vo.*" %>
<%
	//System.out.print font color & bg color 
	final String PUPPLE = "\u001B[35m";
	final String BG_CYAN = "\u001B[46m";
	final String RESET = "\u001B[0m";
	
	//request 인코딩 설정
	request.setCharacterEncoding("utf-8");
	
	// 요청값 확인
	System.out.println(PUPPLE+" "+BG_CYAN+request.getParameter("currentPage") + "<-- lastEmpList parameter currentPage"+RESET); 
	System.out.println(PUPPLE+" "+BG_CYAN+request.getParameter("searchWord") + "<-- lastEmpList parameter searchWord"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+request.getParameter("rowPerPage") + "<-- lastEmpList parameter rowPerPage"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+request.getParameter("gender") + "<-- lastEmpList parameter gender"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+request.getParameter("begin") + "<-- lastEmpList parameter begin"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+request.getParameter("end") + "<-- lastEmpList parameter end"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+request.getParameterValues("ckMonth")+ "<-- lastEmpList parameter end"+RESET);
	
	// 요청값 유효성 검사
	// searchWord 변수 초기화
	String searchWord = ""; 
	// 요청된 searchWord 유효성 검사 
	if(request.getParameter("searchWord") != null) {							
		searchWord = request.getParameter("searchWord");	
	}
	// 디버깅(searchWord 확인)
	System.out.println(PUPPLE+" "+BG_CYAN+searchWord + "<-- lastEmpList searchWord"+RESET); 
	
	// gender 변수 초기화
	String gender = "";
	// 요청값 gender 유효성 검사
	if(request.getParameter("gender") != null) {
		gender = request.getParameter("gender");
	}
	// 디버깅(gender 확인)
	System.out.println(PUPPLE+" "+BG_CYAN+gender + "<-- lastEmpList gender"+RESET); 
	
	// begin, end 변수 초기화
	String begin = "";
	String end = "";
	// 요청값 begin, end 유효성 검사									// 조회 시 공백값이 넘어가기 때문에 공백도 검사
	if(request.getParameter("begin") != null 					// begin이 null이 아니고 공백이 아니면
		&& !request.getParameter("begin").equals("")) {		
		begin = request.getParameter("begin");
	}
	if(request.getParameter("end") != null						// end가  null이 아니고 공백이 아니면
			&& !request.getParameter("end").equals("")) {		
		end = request.getParameter("end");
	}
	// 디버깅(begin, end 확인)
	System.out.println(PUPPLE+" "+BG_CYAN+begin + "<-- lastEmpList begin"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+end + "<-- lastEmpList end"+RESET);
	
	// ckMonth
	// 키가 같은 여러개의 요청값을 배열에 저장
	String[] ckMonth = request.getParameterValues("ckMonth");
	// int배열 선언
	int[] intCkMonth = null;
	// ckMonth가 null이 아니면 int배열로 변환
	if(ckMonth != null) {
		intCkMonth = new int[ckMonth.length];
		for(int i=0; i<intCkMonth.length; i+=1) {
			intCkMonth[i] = Integer.parseInt(ckMonth[i]);
		}
	}
	
	//현재 페이지 변수 : 기본값 1, 요청값 없을 때 1페이지
	int currentPage = 1;
	// 요청된 현재 페이지 값 유효성 검사
	if(request.getParameter("currentPage") != null) {							// 요청된 현재 페이지 값이 null이 아니면
		currentPage = Integer.parseInt(request.getParameter("currentPage"));	// 요청된 현재 페이지 값을 현재 페이지 변수에 저장
	}
	// 디버깅(현재 페이지 확인)
	System.out.println(PUPPLE+" "+BG_CYAN+currentPage + "<-- lastEmpList currentPage"+RESET);
	
	// 페이지당 출력 행의 수 변수 : 기본값 10, 요청값 없을 때 10행
	int rowPerPage = 10;
	// 요청된 페이지당 출력 행의 수 값 유효성 검사
	if(request.getParameter("rowPerPage") != null) {							// 요청된 페이지당 출력 행의 수 값이 null이 아니면
		rowPerPage = Integer.parseInt(request.getParameter("rowPerPage"));		// 요청된 페이지당 출력 행의 수 값을 페이지당 출력 행의 수 변수에 저장
	}
	// 디버깅(페이지당 출력 행의 수)
	System.out.println(PUPPLE+" "+BG_CYAN+rowPerPage + " <-- lastEmpList rowPerPage"+RESET);
	
	// 시작 행 번호 : (현재 페이지-1) * 행의 수
	int startRow = (currentPage-1) * rowPerPage;
	// 디버깅(시작 행 번호 확인)	
	System.out.println(PUPPLE+" "+BG_CYAN+startRow + "<-- lastEmpList startRow"+RESET);
	
	// DB 호출에 필요한 변수 생성
	String driver = "org.mariadb.jdbc.Driver";
	String dbUrl = "jdbc:mariadb://127.0.0.1:3306/employees";
	String dbUser = "root";
	String dbPw =  "java1234";
	// 드라이버 로딩
	Class.forName(driver);
	// DB 접속
	Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPw);
	// sql 전송
	// sql을 전송하기 위한 변수 선언
	String sql = "";
	String sql2 = "";
	PreparedStatement stmt = null;
	PreparedStatement stmt2 = null;
	if(searchWord.equals("")) {	 									// searchWord가 공백이고
		if (gender.equals("")) {									// gender가 선택되지 않았고
			if(begin.equals("") && end.equals("")) {				// begin와 end가 공백이고
				if(intCkMonth != null){								// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+1, intCkMonth[i]);
						stmt2.setInt(i+1, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+1,startRow);
					stmt.setInt(intCkMonth.length+2,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setInt(1,startRow);
					stmt.setInt(2,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees";
					stmt2 = conn.prepareStatement(sql2);
				}
			} else if(begin.equals("")) {								// searchWord가 공백이고 gender가 선택되지 않았고 begin만 공백이면
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') < ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') < ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, end);
					stmt2.setString(1, end);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+2, intCkMonth[i]);
						stmt2.setInt(i+2, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+2,startRow);
					stmt.setInt(intCkMonth.length+3,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') > ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, end);
					stmt.setInt(2,startRow);
					stmt.setInt(3,rowPerPage);
					
					sql2 = "SELECT COUNT(*) FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') > ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, end);
				}
			} else if(end.equals("")) {								// searchWord가 공백이고 gender가 선택되지 않았고 end만 공백이고
				if(intCkMonth != null){								// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') > ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') > ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, begin);
					stmt2.setString(1, begin);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+2, intCkMonth[i]);
						stmt2.setInt(i+2, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+2,startRow);
					stmt.setInt(intCkMonth.length+3,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate  FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') > ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, begin);
					stmt.setInt(2,startRow);
					stmt.setInt(3,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') > ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, begin);
				}
			} else {												// searchWord가 공백이고 gender가 선택되지 않았고 begin와 end가 공백이 아니고
				if(intCkMonth != null){								// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, begin);
					stmt.setString(2, end);
					stmt2.setString(1, begin);
					stmt2.setString(2, end);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+3, intCkMonth[i]);
						stmt2.setInt(i+3, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+3,startRow);
					stmt.setInt(intCkMonth.length+4,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, begin);
					stmt.setString(2, end);
					stmt.setInt(3,startRow);
					stmt.setInt(4,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, begin);
					stmt2.setString(2, end);
				}
			}
		} else if(gender.equals("M") || gender.equals("F")) {			// searchWord가 공백이고 gender가 선택되었고
			if(begin.equals("") && end.equals("")) {					// begin와 end가 공백이고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE gender=? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE gender=? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, gender);
					stmt2.setString(1, gender);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+2, intCkMonth[i]);
						stmt2.setInt(i+2, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+2,startRow);
					stmt.setInt(intCkMonth.length+3,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE gender=? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, gender);
					stmt.setInt(2,startRow);
					stmt.setInt(3,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE gender=?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, gender);
				}
			} else if(begin.equals("")) {								// searchWord가 공백이고 gender가 선택되었고 begin만 공백이고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') < ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') < ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, gender);
					stmt.setString(2, end);
					stmt2.setString(1, gender);
					stmt2.setString(2, end);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+3, intCkMonth[i]);
						stmt2.setInt(i+3, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+3,startRow);
					stmt.setInt(intCkMonth.length+4,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') < ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, gender);
					stmt.setString(2, end);
					stmt.setInt(3,startRow);
					stmt.setInt(4,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') < ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, gender);
					stmt2.setString(2, end);
				}
			} else if(end.equals("")) {									// searchWord가 공백이고 gender가 선택되었고 end만 공백이고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') > ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') > ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, gender);
					stmt.setString(2, begin);
					stmt2.setString(1, gender);
					stmt2.setString(2, begin);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+3, intCkMonth[i]);
						stmt2.setInt(i+3, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+3,startRow);
					stmt.setInt(intCkMonth.length+4,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') > ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, gender);
					stmt.setString(2, begin);
					stmt.setInt(3,startRow);
					stmt.setInt(4,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') > ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, gender);
					stmt2.setString(2, begin);
				}
			} else {													// searchWord가 공백이고 gender가 선택되었고 begin와 end가 공백이 아니고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, gender);
					stmt.setString(2, begin);
					stmt.setString(3, end);
					stmt2.setString(1, gender);
					stmt2.setString(2, begin);
					stmt2.setString(3, end);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+4, intCkMonth[i]);
						stmt2.setInt(i+4, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+4,startRow);
					stmt.setInt(intCkMonth.length+5,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, gender);
					stmt.setString(2, begin);
					stmt.setString(3, end);
					stmt.setInt(4,startRow);
					stmt.setInt(5,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE gender=? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, gender);
					stmt2.setString(2, begin);
					stmt2.setString(3, end);
				}
			}
		}	
	} else {															// searchWord가 공백이 아니고
		if (gender.equals("")) {										// gender가 선택되지 않았고
			if(begin.equals("") && end.equals("")) {					// begin와 end가 공백이고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, "%" + searchWord + "%");
					stmt2.setString(1, "%" + searchWord + "%");
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+2, intCkMonth[i]);
						stmt2.setInt(i+2, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+2,startRow);
					stmt2.setInt(intCkMonth.length+3,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setInt(2,startRow);
					stmt.setInt(3,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, "%" + searchWord + "%");
				}
			} else if(begin.equals("")) {								// searchWord가 공백이 아니고 gender가 선택되지 않았고 begin만 공백이고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') < ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') < ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, end);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, end);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+3, intCkMonth[i]);
						stmt2.setInt(i+3, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+3,startRow);
					stmt2.setInt(intCkMonth.length+4,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') < ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, end);
					stmt.setInt(3,startRow);
					stmt.setInt(4,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') < ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, end);
				}
			} else if(end.equals("")) {									// searchWord가 공백이 아니고 gender가 선택되지 않았고 end만 공백이고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') > ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') > ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, begin);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, begin);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+3, intCkMonth[i]);
						stmt2.setInt(i+3, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+3,startRow);
					stmt2.setInt(intCkMonth.length+4,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') > ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, begin);
					stmt.setInt(3,startRow);
					stmt.setInt(4,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') > ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, begin);
				}
			} else {													// searchWord가 공백이 아니고 gender가 선택되지 않았고 begin과 end만 공백이 아니고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, begin);
					stmt.setString(3, end);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, begin);
					stmt2.setString(3, end);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+4, intCkMonth[i]);
						stmt2.setInt(i+4, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+4,startRow);
					stmt2.setInt(intCkMonth.length+5,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, begin);
					stmt.setString(3, end);
					stmt.setInt(4,startRow);
					stmt.setInt(5,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, begin);
					stmt2.setString(3, end);
				}
			}
		} else if(gender.equals("M") || gender.equals("F")) {			// searchWord가 공백이 아니고 gender가 선택되었고
			if(begin.equals("") && end.equals("")) {					// begin와 end가 공백이고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, gender);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, gender);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+3, intCkMonth[i]);
						stmt2.setInt(i+3, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+3,startRow);
					stmt.setInt(intCkMonth.length+4,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, gender);
					stmt.setInt(3,startRow);
					stmt.setInt(4,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, gender);
				}
			} else if(begin.equals("")) {								// searchWord가 공백이 아니고 gender가 선택되었고 begin만 공백이고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=?  AND DATE_FORMAT(hire_date, '%Y-%m') < ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND DATE_FORMAT(hire_date, '%Y-%m') < ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, gender);
					stmt.setString(3, end);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, gender);
					stmt2.setString(3, end);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+4, intCkMonth[i]);
						stmt2.setInt(i+4, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+4,startRow);
					stmt.setInt(intCkMonth.length+5,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND DATE_FORMAT(hire_date, '%Y-%m') < ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, gender);
					stmt.setString(3, end);
					stmt.setInt(4,startRow);
					stmt.setInt(5,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND DATE_FORMAT(hire_date, '%Y-%m') < ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, gender);
					stmt2.setString(3, end);
				}
			} else if(end.equals("")) {									// searchWord가 공백이 아니고 gender가 선택되었고 end만 공백이고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=?  AND DATE_FORMAT(hire_date, '%Y-%m') > ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND DATE_FORMAT(hire_date, '%Y-%m') > ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, gender);
					stmt.setString(3, begin);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, gender);
					stmt2.setString(3, begin);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+4, intCkMonth[i]);
						stmt2.setInt(i+4, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+4,startRow);
					stmt.setInt(intCkMonth.length+5,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND DATE_FORMAT(hire_date, '%Y-%m') > ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, gender);
					stmt.setString(3, begin);
					stmt.setInt(4,startRow);
					stmt.setInt(5,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND DATE_FORMAT(hire_date, '%Y-%m') > ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, gender);
					stmt2.setString(3, begin);
				}
			} else {													// searchWord가 공백이 아니고 gender가 선택되었고 begin와 end가 공백이 아니고
				if(intCkMonth != null){									// intCkMonth이 null이 아니면
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=?  AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? AND MONTH(hire_date) IN (";
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? AND MONTH(hire_date) IN (";
					// 배열 길이 만큼 sql에 ? 추가
					for(int i=0; i< intCkMonth.length ; i += 1) {
						if(i == intCkMonth.length-1) {	// 마지막 ?에는 ,X
							sql += "?";
							sql2 += "?";
						} else {
							sql += "?,";
							sql2 += "?,";
						}
					}
					sql += ") LIMIT ?,?";
					sql2 += ")";
					stmt = conn.prepareStatement(sql);
					stmt2 = conn.prepareStatement(sql2);
					// ?에 값 대입
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, gender);
					stmt.setString(3, begin);
					stmt.setString(4, end);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, gender);
					stmt2.setString(3, begin);
					stmt2.setString(4, end);
					for(int i=0; i< intCkMonth.length ; i += 1) {
						stmt.setInt(i+5, intCkMonth[i]);
						stmt2.setInt(i+5, intCkMonth[i]);
					}
					stmt.setInt(intCkMonth.length+5,startRow);
					stmt.setInt(intCkMonth.length+6,rowPerPage);
				} else {
					// sql 전송
					sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ? LIMIT ?,?";
					stmt = conn.prepareStatement(sql);
					stmt.setString(1, "%" + searchWord + "%");
					stmt.setString(2, gender);
					stmt.setString(3, begin);
					stmt.setString(4, end);
					stmt.setInt(5,startRow);
					stmt.setInt(6,rowPerPage);
					sql2 = "SELECT COUNT(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND gender=? AND DATE_FORMAT(hire_date, '%Y-%m') BETWEEN ? AND ?";
					stmt2 = conn.prepareStatement(sql2);
					stmt2.setString(1, "%" + searchWord + "%");
					stmt2.setString(2, gender);
					stmt2.setString(3, begin);
					stmt2.setString(4, end);
				}
			}
		}
	}
	// 전송한 sql 디버깅
	System.out.println(PUPPLE+" "+BG_CYAN+stmt + " <-- lastEmpList stmt"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+stmt2 + " <-- lastEmpList stmt2"+RESET);
	
	// sql 전송해서 실행한 결과값
	ResultSet rs = stmt.executeQuery();
	ResultSet rs2 = stmt2.executeQuery();
	
	// 일반적인 자료구조모델로 변경(ResultSet --> ArrayList) 
	ArrayList<Employees> empList = new ArrayList<Employees>();
	while(rs.next()){								// rs.next()가 가리키는 데이터가 있으면(true이면)
		Employees e = new Employees();				// Employees 객체 생성
		e.empNo = rs.getInt("empNo");				// rs가 가르키는 데이터를 객체에 저장
		e.birthDate = rs.getString("birthDate");
		e.firstName = rs.getString("firstName");
		e.lastName = rs.getString("lastName");
		e.gender = rs.getString("gender");
		e.hireDate = rs.getString("hireDate");
		empList.add(e);								// 객체를 ArrayList에 추가
	}
	
	// 전체 행의 수
	int totalRow = 0;
	if(rs2.next()){
		totalRow = rs2.getInt("count(*)");
	}
	// 마지막 페이지 = 전체 행의 수 / 페이지당 출력 행의 수
	int lastPage = totalRow / rowPerPage;
	// 전체 행의 수 / 페이지당 출력 행의 수가 나눠 떨어지지 않는다면 페이지 수 + 1 
	if(totalRow % rowPerPage != 0){
		lastPage = lastPage + 1;
	}
	// 페이지 넘길 때 체크된 월을 넘기기 위한 문자열
	String hrefs = "";
	if(intCkMonth != null){	// intCkMonth이 null이 아니면
		for(int i=0; i< intCkMonth.length ; i += 1) {
			hrefs += "&ckMonth=" + intCkMonth[i];
		}
	}
	// 변수값 디버깅 
	System.out.println(PUPPLE+" "+BG_CYAN+totalRow + " <-- lastEmpList totalRow"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+lastPage + " <-- lastEmpList lastPage"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+hrefs + " <-- lastEmpList hrefs"+RESET);
	
	// 나이를 구하기 위한 현재 날짜
	Calendar today = Calendar.getInstance();
	int year = today.get(Calendar.YEAR);
	int month = today.get(Calendar.MONTH);
	int day = today.get(Calendar.DATE);
	System.out.println(PUPPLE+" "+BG_CYAN+year + " <-- empListBySearch year"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+month + " <-- empListBySearch month"+RESET);
	System.out.println(PUPPLE+" "+BG_CYAN+day + " <-- empListBySearch day"+RESET);
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>lastEmpList</title>
	<!-- Latest compiled and minified CSS -->
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
	
	<!-- Latest compiled JavaScript -->
	<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
	<div class="container">
		<h1>직원 리스트</h1>
		<form action="./lastEmpList.jsp" method="get">
			<div style="text-align: right;">
	  			<label>성별 : </label>
				<select name="gender">
				<%
					if(gender.equals("")) {
				%>
						<option value="" selected="selected">성별선택</option>
						<option value="M"></option>
						<option value="F"></option>
				<%		
					} else if(gender.equals("M")) {
				%>
						<option value="">성별선택</option>
						<option value="M" selected="selected"></option>
						<option value="F"></option>	
				<%	
					} else {
				%>
						<option value="">성별선택</option>
						<option value="M"></option>
						<option value="F" selected="selected"></option>
				<%		
					}
				%>
				</select>
				<label>이름 : </label>
				<input type="text" name="searchWord" value="<%=searchWord %>">
				<label>입사년월 : </label>	
				<input type="month" name="begin" value="<%=begin %>"> - 
				<input type="month" name="end" value="<%=end %>">
				<button type="submit">조회</button>
				<br>
				<label>입사월 :  </label>	
				<%
					// 1월 ~ 12월
					// 체크 검사용 boolean 배열
					boolean[] checked = {false, false, false, false, false, false, false, false, false, false, false, false};
					int[] months = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
					for(int m : months) {
						if(intCkMonth != null) {
							// 체크한 월이면 true 대입
							for(int i : intCkMonth) {
								if(i == m) {
									checked[i-1] = true;
								}
							}
						}
						// ture이면 체크
						if (checked[m-1] == true) {
				%>
							<input type="checkbox" name="ckMonth" value="<%=m%>" checked="checked"> <%=m%>월
				<%	
						} else {
				%>
							<input type="checkbox" name="ckMonth" value="<%=m%>"> <%=m%>월
				<%			
						}		
					}
				%>
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				<br>
				페이지당 목록
				<select name="rowPerPage">
				<%
					if(rowPerPage == 10) {
				%>
							<option value="10" selected="selected">10</option>
							<option value="20">20</option>
							<option value="30">30</option>
							<option value="50">50</option>
							<option value="100">100</option>
				<%		
					} else if(rowPerPage == 20) {
				%>
							<option value="10">10</option>
							<option value="20" selected="selected">20</option>
							<option value="30">30</option>
							<option value="50">50</option>
							<option value="100">100</option>	
				<%		
					} else if(rowPerPage == 30) {
				%>
							<option value="10">10</option>
							<option value="20">20</option>
							<option value="30" selected="selected">30</option>
							<option value="50">50</option>
							<option value="100">100</option>
				<%		
					} else if(rowPerPage == 50) {
				%>
							<option value="10">10</option>
							<option value="20">20</option>
							<option value="30">30</option>
							<option value="50" selected="selected">50</option>
							<option value="100">100</option>
				<%		
					} else {
				%>
							<option value="10">10</option>
							<option value="20">20</option>
							<option value="30">30</option>
							<option value="50">50</option>
							<option value="100" selected="selected">100</option>
				<%
					}
				%>
				</select>		
	  			<button type="submit">변경</button>
	  		</div>
		<table class="table table-bordered">
			<tr>
				<th class="table-dark">번호</th>
				<th class="table-dark">생년월일</th>
				<th class="table-dark">이름</th>
				<th class="table-dark"></th>
				<th class="table-dark">성별</th>
				<th class="table-dark">입사일</th>
			</tr>
			<%
				for(Employees e : empList) {
			%>
					<tr>
						<td><%=e.empNo %></td>
						<%
								// String birthDate를 년, 월, 일로 쪼개서 int로 변환
								int birthYear = Integer.parseInt(e.birthDate.substring(0, 4));
								int birthMonth = Integer.parseInt(e.birthDate.substring(5, 7));
								int birthDay = Integer.parseInt(e.birthDate.substring(8));
								// 나이 = 현재 년도 - 태어난 년도
								int age = year - birthYear;
								// 현재 월, 일이 태어난 월, 일을 지났으면 나이 + 1 
								if(month > birthMonth && day > birthDay) {
							%>
									<td><%=age + 1 %></td>
							<%	
								} else {
							%>
									<td><%=age %></td>
							<%	
								}
							%>
							<td><%=e.firstName %></td>
							<td><%=e.lastName %></td>
							<td><image src="./img/<%=e.gender %>.png" width="50" height="50"></td>
							<td><%=e.hireDate %></td>
					</tr>
			<%	
				}
			%>
		</table>
		</form>
		<%
			// 현재 페이지가 2 이상일 때 이전 화살표 표시 
			if(currentPage > 1) {
		%>
				<a href="./lastEmpList.jsp?currentPage=<%=currentPage-1%>&searchWord=<%=searchWord%>&rowPerPage=<%=rowPerPage%>&gender=<%=gender%>&begin=<%=begin%>&end=<%=end%><%=hrefs%>"><image src="./img/before.png"></a>
		<%	
			}
		%>
			<%=currentPage%>
		<%
			// 현재 페이지가 마지막 페이지보다 작을 때 다음 화살표 표시 
			if(currentPage < lastPage){
		%>
				<a href="./lastEmpList.jsp?currentPage=<%=currentPage+1%>&searchWord=<%=searchWord%>&rowPerPage=<%=rowPerPage%>&gender=<%=gender%>&begin=<%=begin%>&end=<%=end%><%=hrefs%>"><image src="./img/next.png"></a>
		<%	
			}
		%>
	</div>
</body>
</html>

결과화면

0개의 댓글