KDT/WEB

231214 WEB - JSP11(데이터베이스 연결)

001cloudid 2023. 12. 14. 13:22
728x90

데이터베이스 연결

<%@page import="java.security.Timestamp"%>
<%@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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp4/info.jsp</title>
</head>
<body>
<h1>jsp4/info.jsp</h1>
<h1>회원 정보 조회</h1>
<%
String id = (String)session.getAttribute("id");
//()클래스의 형 변환
//main.jsp에서 info.jsp로 이동할 때 값을 들고오지 않음
//연결정보를 저장하는 session 내장객체 안에 로그인표시("id","id값") 저장
//session에서 로그인 표시값 가져오기 → String id 변수에 저장

request.setCharacterEncoding("utf-8");

//1단계 : Driver.class 자바실행 파일 불러오기
Class.forName("com.mysql.cj.jdbc.Driver");

//2단계 : 불러온 파일을 이용해 DB 연결 → 연결정보 저장
String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);

//3단계 : 연결정보를 이용해 SQL구문을 만들고 실행할 수 있는 객체생성
String sql = "select * from members where id=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);

//4단계 : SQL 구문 실행 → 실행 후 결과 저장 → ResultSet 내장객체저장
ResultSet rs = pstmt.executeQuery();

//5단계 : 결과를 이용해서 출력
if(rs.next()){
%>
아이디 : <%=rs.getString("id") %> <br>
비밀번호 : <%=rs.getString("pw") %> <br>
이름 : <%=rs.getString("name") %> <br>
가입날짜 : <%=rs.getTimestamp("date") %> <br>
<%
}
%>
<a href="main.jsp">main.jsp 이동</a>

</body>
</html>

그림 1. 로그인 후 회원 정보 조회

 

<!-- 231214 -->
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="com.mysql.cj.xdevapi.PreparableStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp4/update.jsp</title>
</head>
<body>
<h1>jsp4/update.jsp</h1>
<h1>회원 정보 수정</h1>
<!-- 비밀번호가 맞는지 안맞는지를 먼저 확인한 후 이름만 수정 -->
<%
request.setCharacterEncoding("utf-8");

String id = (String)session.getAttribute("id");

Class.forName("com.mysql.cj.jdbc.Driver");

String dbUrl = "jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);

String sql = "select * from members where id=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, id);

ResultSet rs = ps.executeQuery();

if(rs.next()){
%>
<form action="06_updatePro.jsp" method="post">
아이디 : <input type="text" name="id" value="<%=rs.getString("id") %>" readonly><br>
비밀번호 : <input type="password" name="pw"> 비밀번호 입력 시 회원정보 수정<br>
이름 : <input type="text" name="name" value="<%=rs.getString("name")%>"><br>
<%
}
%>
<input type="submit" value="회원정보수정">
</form>
</body>
</html>

 

<!-- 231214 -->
<%@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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp4/updatePro.jsp</title>
</head>
<body>
<h1>jsp4/updatePro.jsp</h1>

<%
request.setCharacterEncoding("utf-8");

//request에서 id, pass, name 태그(파라미터)값 가져와서 변수에 저장
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");

Class.forName("com.mysql.cj.jdbc.Driver");

String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);

String sql1 = "select * from members where id=? and pw=?";
PreparedStatement ps1 = con.prepareStatement(sql1);
ps1.setString(1,id);
ps1.setString(2,pw);

ResultSet rs1 = ps1.executeQuery();

if(rs1.next()){
out.println("비밀번호 일치");
String sql2 = "update members set name=? where id=?";
PreparedStatement ps2 = con.prepareStatement(sql2);
ps2.setString(1, name);
ps2.setString(2, id);
ps2.executeUpdate();

response.sendRedirect("03_main.jsp");

}else{
out.println("비밀번호 불일치");
response.sendRedirect("06_update.jsp");
}

%>


</body>
</html>

 

그림 2. 로그인 후 비밀번호를 입력한 후 이름 수정

<!-- 231214 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp4/delete.jsp</title>
</head>
<body>
<h1>jsp4/delete.jsp</h1>
<h1>회원 정보 삭제</h1>
<%
//main.jsp에서 delete.jsp로 이동할 때 아무값도 없이 이동
//연결정보를 저장하는 session 내장객체 안에 로그인표시("id","asdf") 저장
//session에서 로그인 표시값 가져오기 String id 변수저장
String id = (String)session.getAttribute("id");
%>
<form action="07_deletePro.jsp" method="post">
아이디 : <input type="text" name="id" value="<%=id %>" readonly><br>
비밀번호 : <input type="password" name="pw"><br>
<input type="submit" value="회원정보삭제">
</form>
</body>
</html>

 

<!-- 231214 -->
<%@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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp4/deletePro.jsp</title>
</head>
<body>
<h1>jsp4/deletePro.jsp</h1>
<h1>회원 정보 삭제</h1>
<%
//폼에서 입력한 내용이 서버에 전달되어지면 서버에 request 내장객체 저장
//request에서 id,pw 태그값 가져와서 변수에 저장
request.setCharacterEncoding("utf-8");

String id = request.getParameter("id");
String pw = request.getParameter("pw");

Class.forName("com.mysql.cj.jdbc.Driver");

String dbUrl ="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul";
String dbUser = "root";
String dbPw = "1234";
Connection con = DriverManager.getConnection(dbUrl, dbUser, dbPw);

String sql1 = "select * from members where id=? and pw=?";
PreparedStatement ps1 = con.prepareStatement(sql1);
ps1.setString(1, id);
ps1.setString(2, pw);

ResultSet rs = ps1.executeQuery();

if(rs.next()){
out.println("아이디, 비밀번호 일치");
String sql2 = "delete from members where id=?";
PreparedStatement ps2 = con.prepareStatement(sql2);
ps2.setString(1, id);
ps2.executeUpdate();
session.invalidate();
response.sendRedirect("03_main.jsp");
} else{
out.println("아이디, 비밀번호 불일치");
response.sendRedirect("07_delete.jsp");
}

%>


</body>
</html>
그림 3. 로그인 후 회원 삭제

 

Desktop.zip
0.04MB

 

728x90