[๊ตฌ๋์์นด๋ฐ๋ฏธ IT๊ตญ๋น์ง์] ๋์ผํ name์ ๊ฐ์ ๋ฐ์ ์ ์๋ request.getParameterValues()์ ์ด ๊ฐ์ ์ด์ฉํ์ฌ ๋์ ์ฟผ๋ฆฌ(where์ )๋ฅผ ์์ฑํด๋ณด์๋ค.
<input type="text" name="x"> <!-- ์ด๋ ๊ฒ ๋์ผํ name์ด ๋๊ฐ ๋์ด์ค๋ฉด..? ์์ ๋๋ฒ๊น
์ฝ๋ ํ์ธํด๋ณด๊ธฐ..! -->
<input type="text" name="x">
<!-- ์ฒดํฌ๋ฐ์ค๋ ๋ง์ฐฌ๊ฐ์ง! -->
<input type="checkbox" name="y" value="๊ตฌ" id="y1"><label for="y1">๊ตฌ</label>
<input type="checkbox" name="y" value="๋" id="y2"><label for="y2">๋</label>
์ด๋ ๊ฒ name์ด ๋์ผํ ๊ฒฝ์ฐ request.getParameter๋ก ๊ฐ์ ๋ฐ์์ค๋ฉด ์ฒซ๋ฒ์งธ ๊ฐ๋ง ๋ถ๋ฌ์ค๊ฒ ๋๋ค.
// ๊ผญ input๋ผ๊ณ ํด์ name์ ๋ค๋ฅด๊ฒ ์ง์ ํ์๋ ์๋ค..! ์๋๋ฉด
System.out.println(request.getParameter("x"));
// ์ด๋ ๊ฒ ๋ฐ์ผ๋ฉด ์ฒซ๋ฒ์งธ ๊ฐ๋ฐ์ ๋ชป๋ฐ์์ค์ง๋ง!
System.out.println(request.getParameterValues("x"));
// ์ด๋ ๊ฒ ๋ฐ์ผ๋ฉด String ํ์
์ ๋ฐฐ์ด๋ก ๋ฐ๊ฒ ๋๋ค
if(request.getParameterValues("x") != null) { // ๋ฐ๋ณต๋ฌธ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ null๊ฐ์ด๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ฏ๋ก if๋ฌธ ์ถ๊ฐ
for(String s : request.getParameterValues("x")) { // ๊ทธ๋์ ์ด๋ ๊ฒ foreach๋ฌธ์ผ๋ก ๋ฐ์์ ์ถ๋ ฅํ๋ฉด ๊ฐ๋ค์ ๋ค ๋ถ๋ฌ์ฌ ์ ์๋ค!
System.out.println(s);
}
}
// checkbox๋ ๋ง์ฐฌ๊ฐ์ง!
System.out.println(request.getParameter("y"));
System.out.println(request.getParameterValues("y"));
if(request.getParameterValues("y") != null) { // ๋ฐ๋ณต๋ฌธ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ null๊ฐ์ด๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ฏ๋ก if๋ฌธ ์ถ๊ฐ
for(String s : request.getParameterValues("y")) {
System.out.println(s);
}
}
๊ทธ๋์ ์ด๋ด ๋์๋ request.getParameterValues๋ฅผ ์ด์ฉํ๋ฉด ์ ํํ ํ๋ ์ด์์ ๋์ผํ name์ ๊ฐ์ ๋ค ๋ฐ์์ฌ ์ ์๋ค. ์ด๋ ์ฌ๋ฌ๊ฐ์ ๊ฐ๋ค์ Stringํ์
์ ๋ฐฐ์ด๋ก ๋ฐ๊ฒ ๋๋ฏ๋ก, ์ถ๋ ฅํ ๋์๋ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ผํ ๊ฒ์ด๋ค!
์ค๋ ๋ฐฐ์ด request.getParameterValues์ ์ด์ฉํ์ฌ ์ ์ฌ์ ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ , ์ ๋ฒ ์๊ฐ์ ๋ฐฐ์ด ์ด๋ฆ ๊ฒ์ ๊ธฐ๋ฅ๋ ํํ์ด์ง์ ์ถ๊ฐํด๋ณด์๋ค.
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "vo.*" %>
<%@ page import = "java.util.*" %>
<%
//์ฝ์์ฐฝ ์ถ๋ ฅ ์์ ์ง์ // final์ด ๋ถ์ ๋ณ์๋ ๋ฐ์์ ์์ ํ ์ ์๋ค
final String RED = "\u001B[31m";
final String BG_RED = "\u001B[41m";
final String GREEN = "\u001B[32m";
final String BG_GREEN = "\u001B[42m";
final String RESET = "\u001B[0m";
// ์์ฒญ์ฒ๋ฆฌํด์ผํ ํ๋ผ๋ฏธํฐ๊ฐ
// currentPage, rowPerPage, ckMonth, searchWord
System.out.println(RED + request.getParameter("currentPage") + " <-- lastEmpList param currentPage");
System.out.println(request.getParameter("rowPerPage") + " <-- lastEmpList param rowPerPage");
if(request.getParameterValues("ckMonth") != null) {
for(String s : request.getParameterValues("ckMonth")) {
System.out.println(s + "์" + " <-- lastEmpList param ckMonth");
}
}
System.out.println(request.getParameter("searchWord") + " <-- lastEmpList param searchWord" + RESET);
// ํ๋ผ๋ฏธํฐ๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ (null์ด์ด๋ ๋๋์ง, ์๋๋ฉด null์ด๋ฉด ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง)
// currentPage
int currentPage = 1;
if(request.getParameter("currentPage") != null) {
currentPage = Integer.parseInt(request.getParameter("currentPage"));
}
// rowPerPage
int rowPerPage = 10;
if(request.getParameter("rowPerPage") != null) {
rowPerPage = Integer.parseInt(request.getParameter("rowPerPage"));
}
// ckMonth
// ckMonth์ ๊ฐ์ ๋ฐ์์ฌ ๋ฐฐ์ด ์์ฑ
String[] ckMonth = request.getParameterValues("ckMonth"); // ์ฒดํฌ๋ฐ์ค์์ ์ ํํ ๊ฐ(request.getParameterValues๋ก ๋ฐ์)์ ์ฐ์ ๋ฐฐ์ด๋ก ๊ฐ์ ธ์จ๋ค // ํ๋์ด์์ ๊ฐ์ผ ์ ์๊ธฐ ๋๋ฌธ์
// checkbox ์ฒดํฌ ์ ๋ฌด์ ์ธ ๋ฐฐ์ด ์์ฑ
boolean[] ckBoolean = new boolean[13]; // ์ธ๋ฑ์ค๊ฐ 0๋ถํฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์ ์ด 13๊ฐ๋ฅผ ์์ฑํด์ผํ๋ค // ์ธ๋ฑ์ค0์ ๋ฒ๋ฆฐ๋ค๊ณ ๋ณด๋ฉด ๋๋ค
// ckMonth์ ๊ฐ๋ค์ intํ์
์ผ๋ก ๋ฐ๊ฟ์ ๋ด์ ๋ฐฐ์ด ์์ฑ
int[] intCkMonth = null; // int[] ๋์ ์ ArrayList<Integer>๋ ๊ฐ๋ฅ
// ์์ฑํ ๋ฐฐ์ด๋ค๋ก ๊ฐ ๋ฐ๊ธฐ
if(ckMonth != null) {
intCkMonth = new int[ckMonth.length]; // ckMonth์ length์ ๊ฐ์ ์๋งํผ(์ ํํ ๊ฐ์ ์๋งํผ) ์ฐ์ ๋ฐฐ์ด์ ๊ณต๊ฐ ํ๋ณด
for(int i=0; i<intCkMonth.length; i+=1) {
intCkMonth[i] = Integer.parseInt(ckMonth[i]); // intCkMonth ๋ฐฐ์ด์ ckMonth ๋ฐฐ์ด์ ๊ฐ์ ์์๋๋ก ๋ฃ๋๋ค (intํ์
์ ๋ฐฐ์ด๋ก ๋ฐ๊พธ๊ธฐ ์ํด)
ckBoolean[intCkMonth[i]] = true; // intCkMonth[i]์ ๋ค์ด์๋ ?์์ ํด๋นํ๋ ์ธ๋ฑ์ค์ ture๊ฐ์ ๋ฃ์ด์ค๋ค
}
}
// searchWord
String searchWord = ""; // ๊ณต๋ฐฑ๊ณผ null ๋๋ค ์คํํ ์ฟผ๋ฆฌ๋ ๊ฐ์ผ๋ฏ๋ก ๋์ ์ฟผ๋ฆฌ ๋ถ๊ธฐ๋ฅผ ์ค์ด๊ธฐ์ํด ๊ณต๋ฐฑ์ผ๋ก ํต์ผ
if(request.getParameter("searchWord") != null) {
searchWord = request.getParameter("searchWord");
}
// ํ๋ผ๋ฏธํฐ๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ ํ ๊ฒฐ๊ณผ๋ณ์ ๋๋ฒ๊น
System.out.println(GREEN + "ํ์ฌ " + currentPage + "ํ์ด์ง <-- lastEmpList currentPage");
System.out.println(rowPerPage + "๊ฐ์ฉ ์ถ๋ ฅ๋ฉ๋๋ค <-- lastEmpList rowPerPage");
if(intCkMonth != null) {
for(int m : intCkMonth) {
System.out.println(m + "์ <-- lastEmpList intCkMonth");
}
System.out.println("์์ฒญํ ์์ ์ด" + intCkMonth.length + "๊ฐ ์
๋๋ค <-- lastEmpList intCkMonth.length");
}
System.out.println("์์ฒญํ ๊ฒ์๋จ์ด๋ " + searchWord + " ์
๋๋ค <-- lastEmpList searchWord");
// ์ฒซ๋ฒ์งธ ๋ชจ๋ธ๊ฐ ๊ตฌํ๊ธฐ
// DB ํธ์ถ // ํธ์ถ์ ํ์ํ ๋ณ์ ์์ฑ
String driver = "org.mariadb.jdbc.Driver";
String dbUrl = "jdbc:mariadb://127.0.0.1:3306/employees";
String dbUser = "****";
String dbPw = "****";
Class.forName(driver);
Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPw);
// ๋ชจ๋ธ๊ฐ์ ๊ตฌํ๊ธฐ ์ํ ๋ณ์ ์ถ๊ฐ
int startRow = (currentPage - 1) * rowPerPage;
System.out.println(startRow + " <-- lastEmpList startRow" + RESET);
// ์ฒซ๋ฒ์งธ ๋์ ์ฟผ๋ฆฌ ๋ง๋ค๊ธฐ
// ๊ฒฝ์ฐ์ ์
// 1) ๋๋ค null 2) checkbox๋ง ๊ฐ์ด ์์๋ 3) searchWord๋ง ๊ฐ์ด ์์๋ 4) ๋๋ค ๊ฐ์ด ์์๋
// 1) SELECT * FROM employees LIMIT ?, ?
// 2) SELECT * FROM employees WHERE MONTH(hire_date) IN (?) LIMIT ?, ?
// 3) SELECT * FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? LIMIT ?, ?
// 4) SELECT * FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND MONTH(hire_date) IN (?) LIMIT ?, ?
String sql = null;
PreparedStatement stmt = null;
// 1) ๋๋ค null์ผ๋
if(intCkMonth == null && searchWord.equals("")) {
sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender gender, hire_date hireDate FROM employees LIMIT ?, ?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, startRow);
stmt.setInt(2, rowPerPage);
// 2) checkbox๋ง ๊ฐ์ด ์์๋
} else if(intCkMonth != null && searchWord.equals("")) {
sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender gender, hire_date hireDate FROM employees WHERE MONTH(hire_date) IN (?";
// ? ํ๊ฐ๋ฅผ ๋ฃ๊ณ ์์
// ์ฟผ๋ฆฌ์ ๋ฌผ์ํ๊ฐ ๋ช๊ฐ๊ฐ ๋ค์ด๊ฐ์ง ์
ํ
for(int i=1; i<intCkMonth.length; i+=1) { // ?์ ๋ฃ์์ผ๋๊น i๋ 1๋ถํฐ ์์
sql += ",?";
}
sql += ") LIMIT ?, ?"; // length๋งํผ ?๊ฐ ์ถ๋ ฅ๋๊ณ ๋ง์ง๋ง์
stmt = conn.prepareStatement(sql);
// ์ฟผ๋ฆฌ ๋ฌผ์ํ์ ๋ฌด์์ด ๋ค์ด๊ฐ์ง ์
ํ
for(int i=0; i<intCkMonth.length; i+=1) { // ๋ฐฐ์ด์ 0๋ถํฐ.. ์์ํ๋๊น i๋ 0๋ถํฐ ์์
stmt.setInt(i+1, intCkMonth[i]); // ํด๋น ๋ฐฐ์ด ์์น(0๋ถํฐ..)์ ์๋ ๊ฐ์ ?์ ์
ํ
}
stmt.setInt(intCkMonth.length+1, startRow); // LIMIT ๋ค์ ๋ค์ด๊ฐ ๋ฌผ์ํ๋ length์ ์๋งํผ ๋ฌผ์ํ๊ฐ ๋์จ ๋ค์ ์์ํ๊ธฐ๋๋ฌธ์ length+1
stmt.setInt(intCkMonth.length+2, rowPerPage);
// 3) searchWord๋ง ๊ฐ์ด ์์๋
} else if(intCkMonth == null & !searchWord.equals("")) {
sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender 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);
// 4) ๋๋ค ๊ฐ์ด ์์๋
} else {
sql = "SELECT emp_no empNo, birth_date birthDate, first_name firstName, last_name lastName, gender gender, hire_date hireDate FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND MONTH(hire_date) IN (?";
for(int i=1; i<intCkMonth.length; i+=1) {
sql += ",?";
}
sql += ") LIMIT ?, ?";
stmt = conn.prepareStatement(sql); // ๋ฌผ์ํ๊ฐ ๋ช๊ฐ ๋ค์ด๊ฐ์ง ๋จผ์ ์
ํ
์๋ฃ
// searchWord ๊ฐ ?์ ์
ํ
stmt.setString(1, "%"+searchWord+"%");
// checkbox ๊ฐ ?์ ์
ํ
for(int i=0; i<intCkMonth.length; i+=1) {
stmt.setInt(i+2, intCkMonth[i]); // ๋ฌด์กฐ๊ฑด ๋๋ฒ์งธ ๋ฌผ์ํ๋ถํฐ ๊ฐ์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ i+2
}
stmt.setInt(intCkMonth.length+2, startRow); // LIMIT ๋ค์ ๋ค์ด๊ฐ ๋ฌผ์ํ๋ searchWord์ ๋ฌผ์ํ 1๊ฐ + length์ ์๋งํผ ๋ฌผ์ํ๊ฐ ๋์จ ๋ค์ ์์ํ๊ธฐ๋๋ฌธ์ length+2
stmt.setInt(intCkMonth.length+3, rowPerPage);
}
// ์์ฑ๋ ๋์ ์ฟผ๋ฆฌ ๋๋ฒ๊น
ํด๋ณด๊ธฐ
System.out.println(BG_GREEN+ stmt + " <-- lastEmpList ์ฒซ๋ฒ์งธ ๋์ ์ฟผ๋ฆฌ ์์ฑ" + RESET);
ResultSet rs = stmt.executeQuery();
// ์ผ๋ฐ์ ์ธ ์๋ฃ๊ตฌ์กฐ๋ก ๋ฐ๊พธ๊ธฐ // ์ฌ๋ฌํ์ ์ถ๋ ฅํด์ผํ๊ธฐ ๋๋ฌธ์ ArrayList๋ก ๋ณ๊ฒฝ
ArrayList<Emp> empList = new ArrayList<Emp>();
while(rs.next()) { // ๋ณ์์ด๋ฆ์ ๋จ์ผ๋ฌธ์๋ก ์ง๋๊ฑด ์ข์ง ์์ง๋ง, ์ง๊ธ๊ฐ์ ๊ฒฝ์ฐ๋ while๋ฌธ์ ๋ธ๋ก ์์์ ์ฐ๋ ์์๊ฐ๋
์ด๊ธฐ ๋๋ฌธ์
Emp e = new Emp();
e.empNo = rs.getInt("empNo"); // ์ปฌ๋ผ๋ช
๋์ ์ ์ซ์(1)์จ๋ ๊ฐ๋ฅํ์ง๋ง, ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋ค
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);
}
// ๋๋ฒ์งธ ๋ชจ๋ธ๊ฐ ๊ตฌํ๊ธฐ
// ๋ชจ๋ธ๊ฐ์ ๊ตฌํ๊ธฐ ์ํ ๋ณ์ ์ถ๊ฐ
int totalCount = 0; // count(*)๋ก ๊ตฌํ ์ ์๋ค
int lastPage = 0; // totalCount / rowPerPage๋ก ๊ตฌํ ์ ์๋ค
// ์ฒซ๋ฒ์งธ ๋์ ์ฟผ๋ฆฌ์ ๋ฐ๋ผ totalCount๋ฅผ ๊ตฌํ count(*)์ ๊ฐ์ด ๋ค๋ฅด๋ฏ๋ก ๋ถ๊ธฐํด์ผ ํ๋ค
// ๋๋ฒ์งธ ๋์ ์ฟผ๋ฆฌ ์์ฑ
// totalCount๋ฅผ ๊ตฌํ๋ ๊ธฐ๋ณธ์ฟผ๋ฆฌ: SELECT count(*) FROM employees
String sql2 = null;
PreparedStatement stmt2 = null;
// 1) ๋๋ค null์ผ๋
if(intCkMonth == null && searchWord.equals("")) {
sql2 = "SELECT count(*) FROM employees";
stmt2 = conn.prepareStatement(sql2);
// 2) checkbox๋ง ๊ฐ์ด ์์๋
} else if(intCkMonth != null && searchWord.equals("")) {
sql2 = "SELECT count(*) FROM employees WHERE MONTH(hire_date) IN (?";
// ์ฒซ๋ฒ์งธ ๋์ ์ฟผ๋ฆฌ์ ๋์ผํ ์กฐ๊ฑด์์(where์ ์ด ๋์ผํ) ๊ฐ์ ์นด์ดํธํ๋ค
for(int i=1; i<intCkMonth.length; i+=1) {
sql2 += ",?";
}
sql2 += ")"; // count๋ limit์ด ํ์ ์๋ค
stmt2 = conn.prepareStatement(sql2);
// ๋ฌผ์ํ์ ๋ค์ด๊ฐ ๊ฐ ์
ํ
for(int i=0; i<intCkMonth.length; i+=1) {
stmt2.setInt(i+1, intCkMonth[i]);
}
// 3) searchWord๋ง ๊ฐ์ด ์์๋
} else if(intCkMonth == null & !searchWord.equals("")) {
sql2 = "SELECT count(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ?";
stmt2 = conn.prepareStatement(sql2);
stmt2.setString(1, "%"+searchWord+"%");
// 4) ๋๋ค ๊ฐ์ด ์์๋
} else {
sql2 = "SELECT count(*) FROM employees WHERE CONCAT(first_name,' ',last_name) LIKE ? AND MONTH(hire_date) IN (?";
for(int i=1; i<intCkMonth.length; i+=1) {
sql2 += ",?";
}
sql2 += ")";
stmt2 = conn.prepareStatement(sql2); // ๋ฌผ์ํ๊ฐ ๋ช๊ฐ ๋ค์ด๊ฐ์ง ๋จผ์ ์
ํ
์๋ฃ
// searchWord ๊ฐ ?์ ์
ํ
stmt2.setString(1, "%"+searchWord+"%");
// checkbox ๊ฐ ?์ ์
ํ
for(int i=0; i<intCkMonth.length; i+=1) {
stmt2.setInt(i+2, intCkMonth[i]); // ๋ฌด์กฐ๊ฑด ๋๋ฒ์งธ ๋ฌผ์ํ๋ถํฐ ๊ฐ์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ i+2
}
}
// ์์ฑ๋ ๋์ ์ฟผ๋ฆฌ ๋๋ฒ๊น
ํด๋ณด๊ธฐ
System.out.println(BG_RED+ stmt2 + " <-- lastEmpList ๋๋ฒ์งธ ๋์ ์ฟผ๋ฆฌ ์์ฑ" + RESET);
ResultSet rs2 = stmt2.executeQuery();
// ์ฟผ๋ฆฌ ์คํ ๊ฒฐ๊ณผ๊ฐ์ ๋ณ์์ ์ ์ฅ
if(rs2.next()) {
totalCount = rs2.getInt("count(*)");
}
System.out.println(GREEN + totalCount + " <-- lastEmpList ๋ถ๊ธฐ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ์ด ๊ฐฏ์");
// lastPage ๊ตฌํ๊ธฐ
lastPage = totalCount / rowPerPage;
if(totalCount % rowPerPage != 0) { // ํ์ด์ง๊ฐ ๋ฑ ๋๋์ด๋จ์ด์ง์ง ์์ผ๋ฉด ๋๋จธ์ง๊ฐ ์ถ๋ ฅ๋ ํํ์ด์ง๊ฐ ๋ ํ์ํ๋ฏ๋ก
lastPage = lastPage + 1;
}
System.out.println(lastPage + " <-- lastEmpList ๋ถ๊ธฐ์ ๋ฐ๋ฅธ ๋ง์ง๋ง ํ์ด์ง ๋๋ฒ" + RESET);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>lastEmpList.jsp</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container mt-3">
<div class="p-5 bg-primary text-white text-center">
<h1>์ฌ์๋ชฉ๋ก</h1>
</div>
<table class="table text-center">
<thead class="table-primary">
<tr>
<th>์ฌ์๋ฒํธ</th>
<th>์๋
์์ผ</th>
<th>์ด๋ฆ</th>
<th>์ฑ</th>
<th>์ฑ๋ณ</th>
<th>์
์ฌ์ผ</th>
</tr>
</thead>
<tbody>
<%
for(Emp e : empList) {
%>
<tr>
<td><%=e.empNo%></td>
<td><%=e.birthDate%></td>
<td><%=e.firstName%></td>
<td><%=e.lastName%></td>
<td><%=e.gender%></td>
<td><%=e.hireDate%></td>
</tr>
<%
}
%>
</tbody>
</table>
<!-- ์์ฒญํผ -->
<div class="text-center">
<form action="./lastEmpList.jsp" method="get">
<label for="hireMonth">์
์ฌ์ ๊ฒ์ : </label>
<%
int[] months = {1,2,3,4,5,6,7,8,9,10,11,12};
for(int m : months) {
%>
<!-- ์์์ ๋ง๋ ckBoolean ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค -->
<input type="checkbox" name="ckMonth" value="<%=m%>" <% if(ckBoolean[m]) { %> checked <% } %> id="hireMonth">
<%=m%>์
<%
}
%>
<br>
<label for="name">์ด๋ฆ ๊ฒ์ : </label>
<input type="text" name="searchWord" value="<%=searchWord%>" id="name"> <!-- ๊ฒ์ํ ๊ฐ์ ํ์ํด์ฃผ๊ธฐ ์ํด -->
<button type="submit">๊ฒ์</button>
</form>
</div>
<!-- ํ์ด์ง -->
<div class="mt-5 p-4 bg-secondary text-white text-center">
<%
// ckMonth์ ๊ฐ์ ๋๊ธฐ๊ธฐ ์ํด ๋ฌธ์์ด ๋ณ์๋ฅผ ์์ฑํ๋ค
String ckMstring = "";
if(ckMonth != null) {
for(String m : ckMonth) {
ckMstring += "&ckMonth=" + m;
}
}
if(currentPage > 1) { // ํ์ฌํ์ด์ง๊ฐ 1๋ณด๋ค ํฌ๋ฉด "์ด์ "์ ์ถ๋ ฅ
%>
<a href="./lastEmpList.jsp?currentPage=<%=currentPage - 1%>&rowPerPage=<%=rowPerPage%>&searchWord=<%=searchWord%><%=ckMstring%>" class="btn btn-primary btn-sm">์ด์ </a>
<%
}
%>
<%=currentPage%>ํ์ด์ง
<%
if(lastPage > currentPage) { // ํ์ฌํ์ด์ง๊ฐ ๋ง์ง๋ง ํ์ด์ง ๋๋ฒ๋ณด๋ค ์์ผ๋ฉด "๋ค์"์ ์ถ๋ ฅ
%>
<a href="./lastEmpList.jsp?currentPage=<%=currentPage + 1%>&rowPerPage=<%=rowPerPage%>&searchWord=<%=searchWord%><%=ckMstring%>" class="btn btn-primary btn-sm">๋ค์</a>
<%
}
%>
</div>
</div>
</body>
</html>
boolean[] ckBoolean = new boolean[13];
: textํ์
์ input ํ๊ทธ๋ value์ ํด๋น ๊ฐ์ ๋ฃ์ผ๋ฉด ๊ตฌํ ๊ฐ๋ฅํ์ง๋ง, checkboxํ์
์ checked๋ฅผ ์
๋ ฅํด์ผํ๋ฏ๋ก boolean ํ์
์ ๋ฐฐ์ด์ ์์ฑํ๊ณ , ํด๋น์๊ณผ ์ผ์นํ๋ ์ธ๋ฑ์ค์ true๊ฐ์ ๋ฃ๋๋ค.
์ฟผ๋ฆฌ ์์ฑ์ ์ ์ฌ์ ๊ฒ์์ IN ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ, ์ ์ฌ์์ ๋ช๊ฐ ์ ํํ๋์ง์ ๋ฐ๋ผ ๋ฌผ์ํ(?) ๊ฐฏ์๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ค. ๋๋ฌธ์ length์ ์ด์ฉํ์ฌ ํด๋น ๋ฐฐ์ด์ ๊ธธ์ด๋งํผ ๋ฌผ์ํ๋ฅผ ์ ํ ํ๋ค.
1~12์์ ์ถ๋ ฅ ์์ inputํ๊ทธ๋ฅผ 12๊ฐ ์์ฑํ๋ ๊ฒ๋ณด๋จ ๋ฐ๋ณต๋ฌธ์ ์์ฑํ๋ ๊ฒ์ด ๋น์ฐํ ํจ์จ์ ์ผ ๊ฒ์ด๋ค. ์ด๋ for๋ฌธ์ ์ฌ์ฉํด๋ ๋์ง๋ง 1~12์์ด๋ผ๋ ๊ตฐ์ง์์ ์ถ๋ ฅํ๋ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์ foreach๋ฌธ์ ์ด์ฉํ๋ ๊ฒ์ด ๋ ์ฐ์์ ๋ง๋ค.
์ ํํ ๊ฐ์ ์ ์ง์ํค๊ธฐ ์ํด์๋ ์ด์ /๋ค์์ผ๋ก ํ์ด์ง์ aํ๊ทธ์ ํด๋น ๊ฐ๋ค์ ๊ฐ์ด ๋๊ฒจ์ฃผ์ด์ผ ํ๋๋ฐ, ํ๋ ์ด์์ ๊ฐ์ด ๋์ด๊ฐ๋ ckMonth์ ๊ฒฝ์ฐ ๋ฐฐ์ด์ด๋ฏ๋ก url์ ํน์๋ฌธ์๊ฐ ํ์๋๊ฒ ๋๋ค. ๊ทธ๋์ ๊ฐ์ ์ ์์ ์ผ๋ก ๋๊ธฐ๊ธฐ ์ํ ๋ฌธ์์ด ๋ณ์๋ฅผ ์ถ๊ฐ๋ก ์์ฑํ์ฌ ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด ๋ฐฐ์ด์ ๊ฐ์ ์ถ์ถํ์ฌ ์ ์ฅํ๋ค.
๐ ๊ฒฐ๊ณผ
์ด๋ฒ ์ฝ๋๋ ๋์ ์ฟผ๋ฆฌ๋ ๋ณต์กํ๊ณ , ์ฟผ๋ฆฌ ์์ฑ ์์ ๊ณ ๋ คํด์ผํ ์ฌ๋ฌ๊ฐ์ง ๋ํ ์ผ์ด ๋ง์๋ค. ๋ํ ๊ฐ์ ์ ์์ ์ผ๋ก ๋๊ธฐ๊ฑฐ๋ ํ์ํ๊ธฐ ์ํด ์๋ก์ด ๋ณ์๋ ๋ฐฐ์ด๋ ์ถ๊ฐํ๋ค.(booleanํ์ ๋ฐฐ์ด, ckMonth์ ๊ฐ์ ๋๊ธฐ๊ธฐ ์ํ ๋ฌธ์์ด ๋ณ์ ๋ฑ) ์ด๋ฒ ์ฝ๋๋ ์ฌ๋ฌ๋ฒ ๋ค์ฌ๋ค ๋ณด๋ฉด์ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ, ๋ฐฐ์ด์ ๊ฐ๋ ์ ๋ค์ ์์งํ๊ณ ๋์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ต์ํด์ง๋๋ก ํด์ผํ ๊ฒ ๊ฐ๋ค!