코딩하는 문과생
[Web] 4. MVC 패턴(3) - 로그인 과정을 통해 알아보는 DAO까지의 흐름 본문
[Preview]
[main.jsp 추가 ]
로그인 과정을 통해 알아보는 DAO까지의 흐름
<p/>
Login :: <br/>
<form action="login.inc" method="post">
<input type="text" name="id" id="id">
<input type="text" name="pwd" id="pwd">
<input type="submit" value="로그인">
</form>
[LoginCtrl 생성]
public class LoginCtrl implements Controller{
@Override
public ModelAndView execute(HttpServletRequest request, HttpServletResponse response) {
System.out.println("LoginCtrl execute");
return null;
}
}
[Controller에서 Dao까지 흐름 - 개요]
Service와 DAO를 통한 DB접근
[UserDao 인터페이스 생성]
Dao는 데이터 액세스 로직을 처리
package com.sinc.intern.insa.model.sql;
import java.util.List;
public interface UserDao {
//single finder
public Object selectRow(Object obj);
//multi finder
public List<Object> selectRow() ;
public int insertRow(Object obj) ;
public int updateRow(Object obj) ;
public int deleteRow(Object obj) ;
}
[UserDaoImpl 생성]
DB와 연동된 코드 작성
package com.sinc.intern.insa.model.sql;
import java.util.List;
public class UserDaoImpl implements UserDao {
@Override
public Object selectRow(Object obj) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Object> selectRow() {
// TODO Auto-generated method stub
return null;
}
@Override
public int insertRow(Object obj) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int updateRow(Object obj) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int deleteRow(Object obj) {
// TODO Auto-generated method stub
return 0;
}
}
[UserServiceImpl 생성]
Service는 비즈니스 로직을 처리
그리고, Dao 인스턴스를 받는다.
package com.sinc.intern.insa.service;
import com.sinc.intern.insa.model.sql.UserDao;
import com.sinc.intern.insa.model.sql.UserDaoImpl;
public class UserServiceImpl {
//인터페이스로 선언, Dao를 받을 수 있다.
private UserDao dao;
public UserServiceImpl() {
dao = new UserDaoImpl();
}
}
[UserService 인터페이스 생성]
package com.sinc.intern.insa.service;
import java.util.List;
public interface UserService {
//single finder
public Object select(Object obj);
//multi finder
public List<Object> select() ;
public int insert(Object obj) ;
public int update(Object obj) ;
public int delete(Object obj) ;
}
[UserServiceImpl 수정]
package com.sinc.intern.insa.service;
import java.util.List;
import com.sinc.intern.insa.model.sql.UserDao;
import com.sinc.intern.insa.model.sql.UserDaoImpl;
public class UserServiceImpl implements UserService{
//인터페이스로 선언
private UserDao dao;
public UserServiceImpl() {
dao = new UserDaoImpl();
}
@Override
public Object select(Object obj) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Object> select() {
// TODO Auto-generated method stub
return null;
}
@Override
public int insert(Object obj) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int update(Object obj) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int delete(Object obj) {
// TODO Auto-generated method stub
return 0;
}
}
[LoginCtrl 수정]
Service 인스턴스를 받는다.
package com.sinc.intern.insa.ctrl;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sinc.intern.insa.service.UserService;
import com.sinc.intern.insa.service.UserServiceImpl;
import com.sinc.intern.util.Controller;
import com.sinc.intern.view.util.ModelAndView;
public class LoginCtrl implements Controller{
//Dependency Injection - 의존성 주입
private UserService service;
public LoginCtrl() {
service = new UserServiceImpl();
}
@Override
public ModelAndView execute(HttpServletRequest request, HttpServletResponse response) {
System.out.println("LoginCtrl execute");
return null;
}
}
[UserDAO, UserVO 생성]
데이터를 전달하고 담기 위한 바구니
package com.sinc.intern.insa.model.vo;
public class UserDTO {
private String id, pwd;
public UserDTO() {
// TODO Auto-generated constructor stub
}
public UserDTO(String id, String pwd) {
super();
this.id = id;
this.pwd = pwd;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "UserDTO [id=" + id + ", pwd=" + pwd + "]";
}
}
[Factory 추가]
DAO까지 파라미터가 넘어가는 것 확인
private BeanFactory() {
map.put("/incWEB/main.inc", new MainCtrl());
map.put("/incWEB/parameter.inc", new ParamCtrl());
map.put("/incWEB/insert.inc", new InsertCtrl());
map.put("/incWEB/select.inc", new SelectCtrl());
map.put("/incWEB/login.inc", new LoginCtrl());
}
[LoginCtrl 추가]
DAO까지 파라미터가 넘어가는 것 확인
@Override
public ModelAndView execute(HttpServletRequest request, HttpServletResponse response) {
System.out.println("LoginCtrl execute");
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
UserDTO dto = new UserDTO(id, pwd);
Object user = service.select(dto);
System.out.println("Ctrl result user : " + user);
return null;
}
[UserServiceImpl에 디버그 추가]
DAO까지 파라미터가 넘어가는 것 확인
@Override
public Object select(Object obj) {
System.out.println("UserService select");
return dao.selectRow(obj);
}
[UserDaoImpl에 디버그 추가]
DAO까지 파라미터가 넘어가는 것 확인
@Override
public Object selectRow(Object obj) {
System.out.println("UserDao selectRow");
System.out.println("Dao user : " + obj);
return null;
}
'웹 프로그래밍 > Web' 카테고리의 다른 글
[Web] 6. MVC 패턴(5) - 데이터를 심기 위한 session (0) | 2020.01.31 |
---|---|
[Web] 5. MVC 패턴(4) - DB연동 (0) | 2020.01.30 |
[Web] 3. MVC 패턴(2) - Main과 Param 동작방식 (0) | 2020.01.30 |
[Web] 2. MVC 패턴 - Controller와 View (0) | 2020.01.30 |
[Web] 1. 환경설정 (0) | 2020.01.29 |