JSP에 Statement객체를 생성 연결 쿼리처리 select, insert, update, delete
dbconn.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
//페이지 모듈화하기 위해서 연결 부분을 따로 파일로 만들었다.
Connection connection = null;
String url = "jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC";
String id = "root"; //접속아이디
String pw = "7496"; //접속 비밀번호
String driver = "com.mysql.cj.jdbc.Driver";
Class.forName(driver);
connection = DriverManager.getConnection(url, id, pw);
%>
insert_form_statement.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert 실습</title>
</head>
<body>
<h2>사용자 입력값 DB저장하기</h2>
<form action="insert_statement.jsp" method="post">
<p>아이디 : <input type="text" name="id"></p>
<p>비밀번호 : <input type="password" name="pw"></p>
<p>이름 : <input type="text" name="username"></p>
<p><input type="submit" value="전송"></p>
</form>
</body>
</html>
테이블 컬럼값과 동일하게 name값을 넣어준다.
insert_statement.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>사용자 입력값 DB 저장하기</title>
</head>
<body>
<%@include file="dbconn.jsp" %> <!-- 접속할 DB코드를 페이지 지시자 태그로 가져옴 -->
<%
request.setCharacterEncoding("UTF-8");
/* 사용자가 입력한 내용을 가져와서 변수에 저장함 */
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String username = request.getParameter("username");
//쿼리문 실행할 statement 객체 선언
Statement statement = null;
try {
//쿼리문 작성
String sql = "insert into member(id,pw,username) values('"+id+"','"+pw+"','"+username+"')";
//Connection객체로부터 Statement객체를 얻어내는 코드
statement = connection.createStatement();
//쿼리문을 DB에 실행하는 코드
statement.executeUpdate(sql);
out.println("member테이블에 정상적으로 입력 성공되었습니다." +"<br/>");
}catch(SQLException e){
out.println("member테이블에 입력이 실패했습니다." +"<br/>");
out.println("SQLException : " +e.getMessage()+ "<br/>");
e.printStackTrace();
}finally {
//자원 해제 반드시 해야한다.
if(statement != null){
statement.close();
}
if(connection != null){
connection.close();
}
}
%>
<a href="select_statement.jsp">회원조회</a>
</body>
</html>
DB확인
DB SELECT 결과 출력
select_statement.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DB SELECT 결과</title>
</head>
<body>
<%@include file="dbconn.jsp" %>
<table border="1">
<tr>
<th width="300" align="center">아이디</th>
<th width="300" align="center">비밀번호</th>
<th width="300" align="center">이름</th>
</tr>
<%
Statement statement = null;
ResultSet resultSet = null; //select한 결과를 받아오는 객체
try {
String sql = "select * from member";
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
//가져올 행이 있느냐?
while(resultSet.next()){
//해당하는 행의 컬럼값을 각각 저장하고 있다.
String id = resultSet.getString("id");
String pw = resultSet.getString("pw");
String username = resultSet.getString("username");
%>
<tr>
<td width="300" align="center"><%=id %></td>
<td width="300" align="center"><%=pw %></td>
<td width="300" align="center"><%=username %></td>
</tr>
<%
}
}catch(SQLException e) {
out.println("member테이블 select오류가 발생했습니다." +"<br/>");
out.println("SQLException : " +e.getMessage()+ "<br/>");
e.printStackTrace();
}finally {
if(resultSet != null){
resultSet.close();
}
if(statement != null){
statement.close();
}
if(connection != null){
connection.close();
}
}
%>
</table>
<a href="insert_form_statement.jsp">회원 가입</a>
</body>
</html>
입력된 DB값 수정하기
아이디 비밀번호가 맞으면 이름을 수정
update_form_statement.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>update 실습</title>
</head>
<body>
<h2>입력된 DB값 수정하기</h2>
<form action="update_statement.jsp" method="post">
<p>아이디 : <input type="text" name="id"></p>
<p>비밀번호 : <input type="password" name="pw"></p>
<p>이름 : <input type="text" name="username"></p>
<p><input type="submit" value="전송"></p>
</form>
</body>
</html>
update_statement.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DB데이터 수정</title>
</head>
<body>
<%@include file="dbconn.jsp" %> <!-- 접속할 DB코드를 페이지 지시자 태그로 가져옴 -->
<%
request.setCharacterEncoding("UTF-8");
/* 사용자가 입력한 내용을 가져와서 변수에 저장함 */
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String username = request.getParameter("username");
Statement statement = null; //쿼리문을 실행할 Statement객체
ResultSet resultSet = null; //select한 결과를 받아오는 객체
try {
String sql = "select id, pw, username from member where id = '"+id+"' ";
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
/*
if(statement != null)
statement.close();
*/
/* ResultSet 결과물을 가지고 온 Statement객체가 닫힐 경우 ResultSet객체도 함깨 닫힌다.(id pw 비교를 못함)*/
if(resultSet.next()) { //select된값 비교한뒤 update
String rid = resultSet.getString("id");
String rpw = resultSet.getString("pw");
if(id.equals(rid) && pw.equals(rpw)){
sql = "update member set username = '"+username+"' where id = '"+id+"' ";
/* statement객체는 쿼리를 단 한번 실행한다. 재사용 하기위해서는 반드시 다시 Connection 객체로부터
statement객체를 얻어야한다.*/
if(statement != null)
statement.close();
statement = connection.createStatement();
statement.executeUpdate(sql);
out.println(rid +"님의 정보를 수정했습니다.");
}
else {
out.println("아이디나 비밀번호가 일치하지 않습니다.");
}
}
else {
out.println("Member테이블에 잂치하는 아이디가 없습니다.");
}
}catch(SQLException e){
out.println("SQLException : " +e.getMessage()+ "<br/>");
e.printStackTrace();
}finally {
if(resultSet != null){
resultSet.close();
}
if(statement != null){
statement.close();
}
if(connection != null){
connection.close();
}
}
%>
<br/>
<a href="select_statement.jsp">회원리스트</a> <a href="insert_form_statement.jsp">회원가입</a>
</body>
</html>
delete_form_statement.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>delete 실습</title>
</head>
<body>
<h2>입력된 DB값 삭제하기</h2>
<form action="delete_statement.jsp" method="post">
<p>아이디 : <input type="text" name="id"></p>
<p>비밀번호 : <input type="password" name="pw"></p>
<p>이름 : <input type="text" name="username"></p>
<p><input type="submit" value="전송"></p>
</form>
</body>
</html>
delete_statement.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DB데이터 삭제</title>
</head>
<body>
<%@include file="dbconn.jsp" %> <!-- 접속할 DB코드를 페이지 지시자 태그로 가져옴 -->
<%
request.setCharacterEncoding("UTF-8");
/* 사용자가 입력한 내용을 가져와서 변수에 저장함 */
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String username = request.getParameter("username");
Statement statement = null; //쿼리문을 실행할 Statement객체
ResultSet resultSet = null; //select한 결과를 받아오는 객체
try {
String sql = "select id, pw, username from member where id = '"+id+"' ";
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
/*
if(statement != null)
statement.close();
*/
/* ResultSet 결과물을 가지고 온 Statement객체가 닫힐 경우 ResultSet객체도 함깨 닫힌다.(id pw 비교를 못함)*/
if(resultSet.next()) { //select된값 비교한뒤 update
String rid = resultSet.getString("id");
String rpw = resultSet.getString("pw");
if(id.equals(rid) && pw.equals(rpw)){
sql = "delete from member where id = '"+id+"' and pw = '"+pw+"' ";
/* statement객체는 쿼리를 단 한번 실행한다. 재사용 하기위해서는 반드시 다시 Connection 객체로부터
statement객체를 얻어야한다.*/
if(statement != null)
statement.close();
statement = connection.createStatement();
statement.executeUpdate(sql);
out.println(rid +"님의 정보를 삭제했습니다.");
}
else {
out.println("아이디나 비밀번호가 일치하지 않습니다.");
}
}
else {
out.println("Member테이블에 잂치하는 아이디가 없습니다.");
}
}catch(SQLException e){
out.println("SQLException : " +e.getMessage()+ "<br/>");
e.printStackTrace();
}finally {
if(resultSet != null){
resultSet.close();
}
if(statement != null){
statement.close();
}
if(connection != null){
connection.close();
}
}
%>
<br/>
<a href="select_statement.jsp">회원리스트</a>
<a href="update_form_statement.jsp">회원정보수정</a>
<a href="insert_form_statement.jsp">회원가입</a>
</body>
</html>