계층 사이에서 데이터를 교환하기 위해 생성하는 객체.
속성(멤버 변수)과 그 속성에 접근하기 위한 getter/setter 메서드만 갖춘 게 특징이다. 그래서 값 객체(value object, VO)라고 한다.
데이터베이스의 데이터에 접근하기 위한 객체.
보통 JDBC를 통해 구현하며, 하나의 테이블에서 수행할 수 있는 CRUD(create, read, update, delete 작업)를 전담한다.
//LoginForm.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>Session login 구현 224p</title>
</head>
<body>
<h2>로그인 페이지</h2>
<span style="color : red; font-size : 1.2em;">
<%= request.getAttribute("LoginErrMsg") == null ?
"" : request.getAttribute("LoginErrMsg") %>
</span>
<%
if (session.getAttribute("UserId") == null){ //로그인 상태 확인
//로그아웃 상태
%>
<script>
function validateFrom(form){
if(!form.user_id.value){
alert("아이디를 입력하세요.");
return false;
}
if(form.user_pw.value == ""){
alert("패스워드를 입력하세요.");
return false;
}
}
</script>
<form action="LoginProcess.jsp" method="post" name="loginFrm" onsubmit="return validateFrom(this)";>
아이디 : <input type="text" name="user_id" /><br/>
패스워드 : <input type="password" name="user_pw" /><br/>
<input type="submit" value="로그인하기" /><br/>
</form>
<%
} else { //로그인된 상태
%>
<%= session.getAttribute("UserName") %> 회원님, 로그인 하셨습니다.<br/>
<a href = "Logout.jsp">[로그아웃]</a>
<%
}
%>
</body>
</html>
//MemberDTO :계층 사이에서 데이터를 교환하기 위해 생성하는 객체.
//속성(멤버 변수)과 그 속성에 접근하기 위한 getter/setter 메서드만 갖춘 게 특징
package com.membership;
// 멤버 변수 선언
public class MemberDTO {
private String id;
private String pass;
private String name;
private String regidate;
//속성에 접근하기 위한 getter/setter
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 String getRegidate() {
return regidate;
}
public void setRegidate(String regidate) {
this.regidate = regidate;
}
}
package com.membership;
import com.common.JDBConnect;
public class MemberDAO extends JDBConnect {
//명시한 데이터베이스로의 연결이 완료된 MemberDAO객체를 생성합니다.
public MemberDAO(String drv, String url, String id, String pw){
super(drv, url, id, pw);
}
//명시한 아이디/패스워드와 일치하는 회원 정보를 반환합니다.
public MemberDTO getMemberDTO(String uid, String upass){
MemberDTO dto = new MemberDTO(); //회원 정보 DTO 객체 생성
String query = "SELECT id, pass, name, regidate FROM member WHERE id=? AND pass=?";
//쿼리문 템플릿
try{
psmt = con.prepareStatement(query); //동적 쿼리문 준비
psmt.setString(1, uid);
psmt.setString(2, upass);
rs = psmt.executeQuery(); //쿼리문 실행
//결과 처리
if(rs.next()){
dto.setId(rs.getString("id"));
dto.setPass(rs.getString("pass"));
dto.setName(rs.getString(3));
dto.setRegidate(rs.getString(4));
}
}catch (Exception e){
e.printStackTrace();
}
return dto; //DTO 객체 반환
}
}