KDT/WEB

231219 WEB - JSP14(MVC)

001cloudid 2023. 12. 19. 11:41
728x90

8. MVC

<%@page import="member.MemberDAO"%>
<%@page import="member.MemberDTO"%>
<%@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>member/info.jsp</title>
</head>
<body>
<h1>member/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");

//MemberDAO 객체 생성 -> 기억 장소 할당
MemberDAO memberDAO = new MemberDAO();
System.out.println("MemberDAO의 기억장소 주소 : " + memberDAO);
//MemberDAO에 리턴할 형 MemberDTO getMember(String id) 메소드 정의
//MemberDTO memberDTO = MemberDAO의 기억장소 주소.getMember(id) 메소드 호출
MemberDTO memberDTO = memberDAO.getMember(id);
//id가 일치했을 때 memberDTO에 id, pw, name, date가 저장해서 리턴,
//그렇지 않을 경우 memberDTO에 비어있는 값 null이 리턴
System.out.println("리턴 받은 MemberDTO의 바구니 기억장소 주소 : " + memberDTO);
if(memberDTO != null){
%>
아이디 : <%=memberDTO.getId() %> <br>
비밀번호 : <%=memberDTO.getPw() %> <br>
이름 : <%=memberDTO.getName() %> <br>
가입날짜 : <%=memberDTO.getDate() %> <br>
<%
}else {
%> 아이디 없음
<%}
%>

<a href="main.jsp">main.jsp 이동</a>

</body>
</html>

 

public MemberDTO getMember(String id) {
//id, pass, name, date를 담은 MemberDTO 하나를 리턴
//객체 생성 기억장소가 만들어져있음
//MemberDTO 변수 선언
MemberDTO memberDTO = null;
System.out.println("MemberDAO getMember()");
try {
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 pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
System.out.println("ID가 존재함");
//MemberDTO memberDTO 객체생성(기억장소 할당)
memberDTO = new MemberDTO();
System.out.println("ID가 존재할 경우 MemberDTO 바구니 주소 : " + memberDTO);
memberDTO.setId(rs.getString("id"));
memberDTO.setPw(rs.getString("pw"));
memberDTO.setName(rs.getString("name"));
memberDTO.setDate(rs.getTimestamp("date"));
} else {
System.out.println("ID가 존재하지 않음");
//MemberDTO memberDTO null 설정(기본값이기 때문에 해줄 필요는 없음)
memberDTO = null;
System.out.println("ID가 존재하지 않을 경우 MemberDTO 바구니 주소 : " + memberDTO);
}
} catch (Exception e) {
e.printStackTrace();
} finally {

} return memberDTO;
}

 

<%@page import="member.MemberDAO"%>
<%@page import="member.MemberDTO"%>
<%@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>member/update.jsp</title>
</head>
<body>
<h1>member/update.jsp</h1>
<h1>회원 정보 수정</h1>
<!-- 비밀번호가 맞는지 안맞는지를 먼저 확인한 후 이름만 수정 -->
<%
request.setCharacterEncoding("utf-8");

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


//자바 파일 MemberDAO 객체 생성
MemberDAO memberDAO = new MemberDAO();
System.out.println("MemberDAO의 기억장소 주소 : " + memberDAO);

//MemberDTO memberDTO = MemberDAO의 기억장소 주소 .getMember(id) 메소드 호출
MemberDTO memberDTO = memberDAO.getMember(id);

System.out.println("리턴 받은 MemberDTO의 바구니 기억장소 주소 : " + memberDTO);
if(memberDTO!=null){
%>
<form action="06_updatePro.jsp" method="post">
아이디 : <input type="text" name="id" value="<%=memberDTO.getId() %>" readonly><br>
비밀번호 : <input type="password" name="pw"> 비밀번호 입력 시 회원정보 수정<br>
이름 : <input type="text" name="name" value="<%=memberDTO.getName()%>"><br>
<%
}

%>
<input type="submit" value="회원정보수정">
</form>
</body>
</html>

 

중복이 되는 부분

//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);

 

//1,2단계 DB연결하는 getConnection() 메소드 정의
public Connection getConnection() {
Connection con = null;
try {
//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";
con = DriverManager.getConnection(dbUrl, dbUser, dbPw);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}

 

<%@page import="member.MemberDAO"%>
<%@page import="member.MemberDTO"%>
<%@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>member/update.jsp</title>
</head>
<body>
<h1>member/update.jsp</h1>
<h1>회원 정보 수정</h1>
<!-- 비밀번호가 맞는지 안맞는지를 먼저 확인한 후 이름만 수정 -->
<%
request.setCharacterEncoding("utf-8");

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

//자바 파일 MemberDAO 객체 생성
MemberDAO memberDAO = new MemberDAO();
System.out.println("MemberDAO의 기억장소 주소 : " + memberDAO);

//MemberDTO memberDTO = MemberDAO의 기억장소 주소 .getMember(id) 메소드 호출
MemberDTO memberDTO = memberDAO.getMember(id);

System.out.println("리턴 받은 MemberDTO의 바구니 기억장소 주소 : " + memberDTO);
if(memberDTO!=null){
%>
<form action="06_updatePro.jsp" method="post">
아이디 : <input type="text" name="id" value="<%=memberDTO.getId() %>" readonly><br>
비밀번호 : <input type="password" name="pw"> 비밀번호 입력 시 회원정보 수정<br>
이름 : <input type="text" name="name" value="<%=memberDTO.getName() %>"><br>
<%
}
%>
<input type="submit" value="회원정보수정">
</form>
</body>
</html>

 

public void updateMember(MemberDTO memberDTO) {
System.out.println("MemberDTO memberDTO");
System.out.println("전달받은 그릇 memberDTO의 주소 : " + memberDTO);
System.out.println("전달받은 아이디 : " + memberDTO.getId());
System.out.println("전달받은 비밀번호 : " + memberDTO.getPw());
System.out.println("전달받은 이름 : " + memberDTO.getName());
System.out.println("전달받은 시간 : " + memberDTO.getDate());

try {
Connection con = getConnection();
String sql = "update members set name=? where id=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, memberDTO.getName());
ps.setString(2, memberDTO.getId());
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}

 

<%@page import="member.MemberDAO"%>
<%@page import="member.MemberDTO"%>
<%@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>member/updatePro.jsp</title>
</head>
<body>
<h1>member/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");

//자바파일 MemberDAO 객체 생성
MemberDAO memberDAO = new MemberDAO();
System.out.println("MemberDAO의 기억장소주소 : " + memberDAO);
boolean result = memberDAO.userCheck(id, pw);

if(result == true){
out.println("비밀번호 일치");
//MemberDTO 객체생성(기억장소 할당)
MemberDTO memberDTO = new MemberDTO();
//수정할 데이터 파라미터(태그)값을 MemberDTO에 set메소드 호출해서 저장
memberDTO.setId(id);
memberDTO.setPw(pw);
memberDTO.setName(name);
//리턴값없음 updateMember(MemberDTO memberDTO) 메소드 정의
//updateMember(MemberDTO memberDTO) 메소드 정의
memberDAO.updateMember(memberDTO);

// 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>

 

public void deleteMember(String id) {
try {
Connection con = getConnection();
String sql = "delete from members where id=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, id);
ps.executeUpdate();

} catch (Exception e) {
e.printStackTrace();
}
}

 

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

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

MemberDAO memberDAO = new MemberDAO();
System.out.println("MemberDAO의 기억장치주소 : " + memberDAO);

boolean result = memberDAO.userCheck(id, pw);

if(result==true){
out.println("아이디, 비밀번호 일치");
memberDAO.deleteMember(id);
session.invalidate();
response.sendRedirect("03_main.jsp");
} else{
out.println("아이디, 비밀번호 불일치");
response.sendRedirect("07_delete.jsp");
}
%>
</body>
</html>

 

member (2).zip
0.01MB

728x90