728x90
아래에 이전 글이 있다.
2024.03.14 - [웹 개발] - 20240314 JSP와 MariaDB 연동하기(3)
이번에는 전의 DB에 emp를 추가할 수 있는 페이지를 만드려고 한다.
일단 empList.jsp에 글쓰기 폼이 될 insertEmpForm.jsp로 a태그를 사용해 연결한다.
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"%>
<%
/*
SELECT EMPNO, ENAME
FROM emp
ORDER BY EMPNO;
*/
String sql = "SELECT EMPNO, ENAME FROM emp ORDER BY EMPNO";
Class.forName("org.mariadb.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3307/gdj80","root","****");
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs =stmt.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>
<!-- 메인 내용 -->
<h1>emp 리스트</h1>
<div>
<table class="table">
<tr>
<th>EMPNO</th>
<th>ENAME</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>
</tr>
<%
}
%>
</table>
<!-- 글쓰기 -->
<div>
<a href="/crudtest/emp/insertEmpForm.jsp">글쓰기</a>
</div>
</div>
</body>
</html>
다음으로 글쓰는 페이지를 만든다
form 태그를 만들고 method를 post로 설정한다.
입력해야하는 값들을 input태그로 만들어준다.
페이지에서 입력을 하면 insertEmpAction.jsp(아래에 코드가 있다)로 넘어간다
insertEmpForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>
<!-- 메인 내용 -->
<h1>emp 글쓰기</h1>
<form method="post" action="/crudtest/emp/insertEmpAction.jsp">
<div class="mb-3 mt-3">
<label class="form-label">EMPNO</label>
<input type="number" class="form-control" name="empNo">
</div>
<div class="mb-3">
<label class="form-label">ENAME</label>
<input type="text" class="form-control" name="eName">
</div>
<div class="mb-3">
<label class="form-label">JOB</label>
<input type="text" class="form-control" name="job">
</div>
<div class="mb-3">
<label class="form-label">MGR</label>
<input type="number" class="form-control" name="mgr">
</div>
<div class="mb-3">
<label class="form-label">HIREDATE</label>
<input type="date" class="form-control" name="hireDate">
</div>
<div class="mb-3">
<label class="form-label">SAL</label>
<input type="number" class="form-control" name="sal">
</div>
<div class="mb-3">
<label class="form-label">COMM</label>
<input type="number" class="form-control" name="comm">
</div>
<div class="mb-3">
<label class="form-label">DEPTNO</label>
<input type="number" class="form-control" name="deptNo">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</body>
</html>
form태그의 method를 post로 했기때문에 인코딩 설정을 해준다.( utf - 8로 )
입력해준 값들을 int, String 등의 변수에 request.getParameter()로 담는다
이전글에서와 마찬가지로 쿼리를 실행하기 위한 작업들을 해준다.
stmt.executeUpdate()메소드를 통해 insert가 제대로 실행된지 확인을 한다.
insert가 제대로 되었다면 해당 row가 1이 되고, 안되었다면 0이 된다.
그 후 목록(empList.jsp)페이지를 재요청(response.sendRedirect)하면 완료
insertEmpAction.jsp
<%@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"%>
<%
// 0. post 인코딩 설정
request.setCharacterEncoding("utf-8");
// 1. 입력 값 받는다
int empNo = Integer.parseInt(request.getParameter("empNo")); ;
String eName = request.getParameter("eName");
String job = request.getParameter("job");
int mgr = Integer.parseInt(request.getParameter("mgr"));
String hireDate = request.getParameter("hireDate");
int sal = Integer.parseInt(request.getParameter("sal"));
int comm = Integer.parseInt(request.getParameter("comm"));
int deptNo = Integer.parseInt(request.getParameter("deptNo"));
// 값 체크
System.out.println("empNo : " + empNo);
System.out.println("eName : " + eName);
System.out.println("job : " + job);
System.out.println("mgr : " + mgr);
System.out.println("hireDate : " + hireDate);
System.out.println("sal : " + sal);
System.out.println("comm : " + comm);
System.out.println("deptNo : " + deptNo);
// 2. DB 접속해서 입력 값 입력한다.
/*
INSERT INTO emp(
EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO
) VALUES (
?, ?, ?, ?, ?, ?, ?, ?
);
*/
String sql = "INSERT INTO emp(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
Class.forName("org.mariadb.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3307/gdj80","root","****");
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1, empNo);
stmt.setString(2, eName);
stmt.setString(3, job);
stmt.setInt(4, mgr);
stmt.setString(5, hireDate);
stmt.setInt(6, sal);
stmt.setInt(7, comm);
stmt.setInt(8, deptNo);
System.out.println(stmt); // 값 체크
int row = stmt.executeUpdate();
// row가 1이면 1행 입력 성공, 0이면 입력 실패
if(row == 1) {
System.out.println("입력 성공");
} else {
System.out.println("입력 실패");
}
// 3. 목록(empList.jsp)을 재 요청(redirect)하게 한다.
response.sendRedirect("/crudtest/emp/empList.jsp");
%>
728x90
'웹 개발' 카테고리의 다른 글
JSP와 MariaDB 연동하기(6) (0) | 2024.03.18 |
---|---|
JSP와 MariaDB 연동하기(5) (0) | 2024.03.15 |
JSP와 MariaDB 연동하기(3) (0) | 2024.03.14 |
JSP와 MariaDB 연동하기(2) (0) | 2024.03.14 |
JSP와 MariaDB 연동하기(1) (0) | 2024.03.13 |