스프링(퀵 스타트) 1-2일차

Lucy in the Sky with Diamond·2023년 8월 4일

스프링 정리

목록 보기
3/5

컴포넌트 정리 및 상황설정

  • 이번에는 회원 상세 조회 및 로그인 기능을 구현한다.
  1. DB 테이블

    CREATE TABLE USERS(
    	ID VARCHAR(8) PRIMARY KEY,
        PASSWORD VARCHAR(8),
        NAME VARCHAR(20),
        ROLE VARCHAR(5)
    );
    INSERT INTO USERS VALUES('test', 'test123', '관리자', 'Admin');
    INSERT INTO USERS VALUES('user1', 'user1', '홍길동', 'User');
  2. VO 클래스

package com.springbook.biz.user;
public class UserVO {
	private String id;
	private String password;
	private String name;
	private String role;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getRole() {
		return role;
	}
	public void setRole(String role) {
		this.role = role;
	}
	@Override
	public String toString() {
		return "UserVO [id=" + id + ", password=" + password + ", name=" + name + ", role=" + role + "]";
	}
}

3.DAO 클래스

package com.springbook.biz.user.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.springbook.biz.common.JDBCUtil;
import com.springbook.biz.user.UserVO;
public class UserDAO {
	//JDBC 관련 변수들
	private Connection conn = null;
	private PreparedStatement stmt = null;
	private ResultSet rs = null;	
	//SQL 명령어
	private final String USER_GET = "SELECT * FROM USERS WHERE ID = ? AND PASSWORD = ?";
	//CRUD 기능의 메소드 구현
	//회원 상세 조회
	public UserVO getUser(UserVO vo) {
		UserVO user = null;
		try {
			conn = JDBCUtil.getConnection();
			stmt = conn.prepareStatement(USER_GET);
			stmt.setString(1, vo.getId());
			stmt.setString(2, vo.getPassword());
			rs = stmt.executeQuery();
			if(rs.next()) {
				user = new UserVO();
				user.setId(rs.getString("ID"));
				user.setPassword(rs.getString("PASSWORD"));
				user.setName(rs.getString("NAME"));
				user.setRole(rs.getString("ROLE"));			}
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtil.close(stmt, conn);
		}
		return user;
	}
}
  1. Service & UserServiceImpl
package com.springbook.biz.user;
public interface UserService {
	//CRUD 기능의 메소드 구현
	//회원 상세 조회
	public UserVO getUser(UserVO vo);
}
package com.springbook.biz.user.impl;
import com.springbook.biz.user.UserService;
import com.springbook.biz.user.UserVO;
public class UserServiceImpl implements UserService{
	private UserDAO userDAO;	
	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}
	public UserVO getUser(UserVO vo) {
		return userDAO.getUser(vo);
	}
}
  1. 클라이언트
package com.springbook.biz.user;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
public class UserServiceClient {
	public static void main(String[] args) {
		//1. Spring 컨테이너를 구동한다.
		AbstractApplicationContext container = new GenericApplicationContext();	
		//2. Spring 컨테이너로부터 UserServiceImpl 객체를 LookUp한다.
		UserService userService = (UserService)container.getBean("userService");		
		//3. 로그인 기능 테스트
		UserVO vo = new UserVO();
		vo.setId("test");
		vo.setPassword("test123"); //test12 라고 하면 없는 비밀번호라 로그인 실패	
		UserVO user = userService.getUser(vo);
		if(user != null) {
			System.out.println(user.getName() + "님 환영합니다.");
		} else {
			System.out.println("로그인 실패");
		}		
		//4. Spring 컨테이너 종료
		container.close();
	}
}

1일차의 그림과 유사하니 그림설명은 패스

0개의 댓글