[23.01.17] 60일차 [프론트엔드]

W·2023년 1월 17일
0

국비

목록 보기
87/119

회원정보 데이터 따로 java 클래스 만들기

  • MemberDTO.java
package member;

import java.sql.Timestamp;

public class MemberDTO {
	// 데이터를 담아서 다른 클래스 전달 
	// 멤버변수 => 데이터 은닉 => 캡슐화
	private String id;
	private String pass;
	private String name;
	private Timestamp date;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Timestamp getDate() {
		return date;
	}
	public void setDate(Timestamp date) {
		this.date = date;
	}
	
}
  • insertMember 메서드 수정
	public void insertMember(MemberDTO dto) {
		System.out.println("MemberDAO insertMember");
		System.out.println("MemberDTO 바구니 전달받은 주소 : " + dto);
		System.out.println("바구니주소 전달받은 아이디 : "+dto.getId() );
		System.out.println("바구니주소 전달받은 비밀번호 : "+dto.getPass() );
		System.out.println("바구니주소 전달받은 이름 : "+dto.getName() );
		System.out.println("바구니주소 전달받은 가입날짜 : "+dto.getDate() );
			
		try {
			// 예외가 발생할 가능성이 높은 명령(1~4단계)
			Connection con = getConnection();
			String sql = "insert into members(id, pass, name, date) values(?,?,?,?)";

			PreparedStatement pstmt=con.prepareStatement(sql);

			pstmt.setString(1,dto.getId());
			pstmt.setString(2,dto.getPass());
			pstmt.setString(3,dto.getName());
			pstmt.setTimestamp(4, dto.getDate());

			pstmt.executeUpdate();
			
		} catch (Exception e) {
			// 예외가 발생하면 처리하는 곳
			e.printStackTrace();
		}finally {
			// 예외 상관없이 마무리 작업 
		}

	}

로그인

  • loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member/loginForm.jsp</title>
</head>
<body>

<h1>member/loginForm.jsp</h1>

<form action="loginPro.jsp" method="get">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pass"><br>
<input type="submit" value="로그인">
<a href="insertForm.jsp"><input type="button" value="회원가입"></a>

</form>
</body>
</html>
  • MemberDAO.java 파일에 userCheck 메서드 추가
	public MemberDTO userCheck(String id, String pass) {
		// 바구니 주소가 저장되는 변수 null 초기화
		MemberDTO dto = null;
		try {
			Connection con = getConnection();
			String sql = "select * from members where id = ? and pass = ?";
			
			PreparedStatement pstmt = con.prepareStatement(sql);
			
			pstmt.setString(1, id);
			pstmt.setString(2, pass);
			ResultSet rs = pstmt.executeQuery();
			
			if(rs.next()){
				// 바구니 객체 생성
				dto = new MemberDTO();
				dto.setId(rs.getString("id"));
				dto.setPass(rs.getString("pass"));
				dto.setName(rs.getString("name"));
				dto.setDate(rs.getTimestamp("date"));
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {	
		}
		return dto;
	}
  • loginPro.jsp
<%@page import="member.MemberDTO"%>
<%@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/loginPro.jsp</title>
</head>
<body>
<h1>member/loginPro.jsp</h1>

<%
// 폼에서 입력한 내용이 서버에 전달 => request 내장객체 저장
// request 태그이름에 해당하는 값을 가져오기 => 변수에 저장
String id = request.getParameter("id");
String pass = request.getParameter("pass");

// MemberDAO 객체생성 => 기억장소 할당
// 리턴할형 userCheck(String id, String pass) 메서드 정의
// id, pass 일치하면 MemberDTO 바구니에 데이터 담아서 가져오기
// id, pass 틀리면 MemberDTO 빈(null) 바구니 가져오기
// = 주소.userCheck(id,pass)메서드 호출
MemberDAO dao = new MemberDAO();
MemberDTO dto=dao.userCheck(id, pass);
if(dto!=null){
	session.setAttribute("id", id);
	response.sendRedirect("main.jsp");
}else{%>
<script type="text/javascript">
alert("아이디 비밀번호가 일치하지 않습니다");
history.back();
</script>
<%} %>

</body>
</html>

회원정보 조회

  • main.jsp
<a href="info.jsp">회원정보조회</a>
  • MemberDAO.java에 getMember 메서드 추가
	public MemberDTO getMember(String id) {
		MemberDTO dto = null;
		try {
			Connection con = getConnection();
			String sql = "select * from members where id = ?";
			
			PreparedStatement pstmt = con.prepareStatement(sql);
			pstmt.setString(1, id);
			ResultSet rs = pstmt.executeQuery();
			
			if(rs.next()) {
				dto = new MemberDTO();
				dto.setId(rs.getString("id"));
				dto.setPass(rs.getString("pass"));
				dto.setName(rs.getString("name"));
				dto.setDate(rs.getTimestamp("date"));
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return dto;
	}
  • info.jsp
<%@page import="member.MemberDTO"%>
<%@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/info.jsp</title>
</head>
<body>
<h1>member/info.jsp</h1>
<%
// 회원정보 기준값 id => 세션에 "id"값 저장되어 있음
// 세션에서 "id"값을 가져오기 -> 변수에 저장
String id = (String)session.getAttribute("id");
// MemberDAO 객체생성 => 기억장소 할당
MemberDAO dao = new MemberDAO();
// MemberDTO getMember(String id) 메서드 정의
// 메서드 호출
MemberDTO dto = dao.getMember(id);

if(dto!=null){
%>
아이디 : <%=id %><br>
비밀번호 : <%=dto.getPass()%><br>
이름 : <%=dto.getName()%><br>
가입날짜 : <%=dto.getDate() %><br>
<%} %>
<a href="main.jsp">메인으로 이동</a>
</body>
</html>

회원정보 수정

  • updateForm.jsp
    만들어 놓은 MemberDAO, MemberDTO 이용
<%@page import="member.MemberDTO"%>
<%@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/updateForm.jsp</title>
</head>
<body>
<h1>member/updateForm.jsp</h1>
<%
String id = (String)session.getAttribute("id");

MemberDAO dao = new MemberDAO();
MemberDTO dto = dao.getMember(id);
%>

<form action="updatePro.jsp" method="get">
아이디 : <input type="text" name="id" value="<%=id%>" readonly><br>
비밀번호 : <input type="password" name="pass"><br>
이름 : <input type="text" name="name" value="<%=dto.getName()%>"><br>
<input type="submit" value="회원정보 수정">
</form>

</body>
</html>
  • MemberDAO.java에 updateMember 메서드 추가
	public void updateMember(MemberDTO updateDto) {
		
		try {
			 Connection con = getConnection();
			 String sql = "update members set name =? where id=?";
			 PreparedStatement pstmt = con.prepareStatement(sql);
			 pstmt.setString(1, updateDto.getName());
			 pstmt.setString(2, updateDto.getId());
			 pstmt.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
		}		
	}
  • updatePro.jsp
<%@page import="member.MemberDTO"%>
<%@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/updatePro.jsp</title>
</head>
<body>
<h1>member/updatePro.jsp</h1>
<%
request.setCharacterEncoding("utf-8");

String id = (String)session.getAttribute("id");
String pass = request.getParameter("pass");
String name = request.getParameter("name");
// 수정할 내용을 바구니 객체생성 => 바구니에 저장
MemberDTO updateDto = new MemberDTO();
updateDto.setId(id);
updateDto.setPass(pass);
updateDto.setName(name);

// MemberDAO 객체생성
// MemberDTO dto = userCheck(id,pass) 메서드 호출
// 아이디 비밀번호 일치 => 바구니 주소 가져오기
// 아이디 비밀번호 틀림 => 빈 바구니 주소 가져오기

MemberDAO dao = new MemberDAO();
MemberDTO dto = dao.userCheck(id,pass);


if(dto!=null){
	// 리턴값 없음 updateMember(MemberDTO updateDto) 메서드 정의
	// dao.updateMember(updateDto) 메서드 호출
	dao.updateMember(updateDto);
%>
<script type="text/javascript">
alert("수정되었습니다");
location.href="main.jsp";
</script>

<% 
// response.sendRedirect("main.jsp");

}else{
	%>
	<script type="text/javascript">
	alert("아이디 비밀번호 틀림");
	history.back();
	</script>
	<% 
}

%>

</body>
</html>

0개의 댓글

관련 채용 정보