본문 바로가기

웹 개발

JSP와 MariaDB 연동하기(5)

728x90

이번엔 이전의 페이지 왼쪽 부분에 사이드바를 만들었다.

 

왼쪽 사이드의 DEPTNO를 누르면 해당 부서의 emp만 나오게 되는 것이다.

 

 

왼쪽 div의 dept값을 요청한 것을 getParameter로 deptNo 변수에 담는다.

 

그후 deptNo가 null일때(아예 초기화면), 0일때(부서 지정x), 값이 있을때로 나뉘어 sql문을 작성한다.

 

왼쪽 div의 DEPTNO는 sql문을 따로 선언했다. DISTINCT를 사용해 중복을 제외하고 SELECT해서 가져올 수 있도록 했다.

empList.jsp

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	// 요청 값 설정하기
	String deptNo = request.getParameter("DEPTNO");
	
	/* 
		// DEPTNO가 null일때 쿼리
		SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
		FROM emp
		ORDER BY EMPNO ASC;

		//DEPTNO가 null이 아닐때 쿼리
		SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
		FROM emp
		WHERE DEPTNO = ?
		ORDER BY EMPNO ASC;
	*/
	
	Class.forName("org.mariadb.jdbc.Driver");
	Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3307/gdj80","root","****");
	
	String sql = null;
	PreparedStatement stmt = null;
	if(deptNo == null) {
		sql = "SELECT EMPNO, ENAME, DEPTNO FROM emp ORDER BY EMPNO ASC";
		stmt = conn.prepareStatement(sql);
		
		System.out.println(stmt);	// 값 체크
	} else if(Integer.parseInt(deptNo) == 0) {	// deptNo가 0일 경우
		
		sql = "SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM emp WHERE DEPTNO IS NULL ORDER BY EMPNO ASC";
		stmt = conn.prepareStatement(sql);
		
	} else {
		
		sql = "SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM emp WHERE DEPTNO = ? ORDER BY EMPNO ASC";
		stmt = conn.prepareStatement(sql);
		
		stmt.setString(1, deptNo);	// ? 값 교체
		System.out.println(stmt);	// 값 체크
	}

	ResultSet rs =stmt.executeQuery();
	
	// DEPTNO만 보여주는 쿼리
	String sql2 = "SELECT DISTINCT DEPTNO FROM emp ORDER BY DEPTNO ASC";
	PreparedStatement stmt2 = conn.prepareStatement(sql2);
	ResultSet rs2 = stmt2.executeQuery();
	
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- Latest compiled and minified CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body class="container">
	<!-- 메인 메뉴 -->
	<div>
		<a href="/crudtest/emp/empList.jsp">emp 관리</a>
	</div>
	
	<div class="row">
	
		<!-- 서브 메뉴(왼쪽) -->
		<div class="col-2 bg-secondary">
			<h1>DEPTNO</h1>
			<div>
				<%
					while(rs2.next()) {
				%>
						<a href="/crudtest/emp/empList.jsp?DEPTNO=<%=rs2.getInt("DEPTNO")%>" class="text-light">
							<%=rs2.getInt("DEPTNO")%>
						</a><br>
						
				<%
					}
				%>
			</div>
		</div>
	
		<!-- 메인 내용(오른쪽) -->
		<div class="col-10 bg-light" >
			<h1>emp 리스트(DEPTNO: <%=deptNo%>)</h1>
			<div>
				<table class="table table-light table-hover">
					<tr>
						<th>EMPNO</th>
						<th>ENAME</th>
						<th>DEPTNO</th>
					</tr>
					
					<%
						while(rs.next()) {
					%>
							<tr>
								<td>
									<a href="/crudtest/emp/empOne.jsp?EMPNO=<%=rs.getString("EMPNO")%>">
										<%=rs.getString("EMPNO")%>
									</a>
								</td>
								<td>
									<%=rs.getString("ENAME")%>
								</td>
								<td><%=rs.getInt("DEPTNO")%></td>
							</tr>
					<%
					
						rs.close();
						stmt.close();
						conn.close();
						}
					%>
				</table>
				
				<div>
					<a href="/crudtest/emp/insertEmpForm.jsp">글쓰기</a>
				</div>
				
			</div>
		</div>
	</div>
	
</body>
</html>
728x90

'웹 개발' 카테고리의 다른 글

JSP와 MariaDB 연동하기(7)  (0) 2024.03.18
JSP와 MariaDB 연동하기(6)  (0) 2024.03.18
JSP와 MariaDB 연동하기(4)  (0) 2024.03.14
JSP와 MariaDB 연동하기(3)  (0) 2024.03.14
JSP와 MariaDB 연동하기(2)  (0) 2024.03.14