기초/JSP

[jsp] MVC패턴1 으로 프로젝트 구성 (구성중)

장동규 2017. 3. 22. 12:54

MVC방법으로 프로젝트를 만드려고 한다. 

#MVC 패턴

뷰 (view) : 사용자에게 보여지는 구간


뷰 >> 뷰로 이동하는게 아니다

뷰 >> 서블릿 >> 뷰로 이동한다.

이때 서블릿은 DB에 접근해서 데이터처리를 통해 사용자에게 뷰를 제공하낟.


ex) 로그인이 안되있을 때 login페이지 로그인 되있으면 member 페이지..


조정 (Controller) : 실질적으로 데이터가 처리되는 구간

서블릿이 DB접근, ID체크, CRUD메소드를 각각 서블릿에 구현하지않고

DB에 관련된 클래스를 만들어 호출하는 형식으로 사용한다.

이러한 DB관련 메소드를 가지고 있는 클래스가 DAO다.


서블릿 >> DAO에서 메소드 호출 >> DB접근 >> 데이터처리 >> 뷰


이런 형식이 만들어 지는것이다.


DAO : Data Access Object

DB에 관련된 메서드를 가지는 클래스( db연결, crud메서드)

crud : c: create(insert)     r : read(select)     u : update     d : delete

>>DAO(객체)의 목적은 서블릿이 DB에 접근하는 메서드들의 집합체 역할이다.


모델 (model) : 데이터 단위

return값은 0 or 1개이다.

하지만 여러개의 데이터처리(insert, delete, update...)에서 데이터들을 가져올 때

변수 하나하나를 가져오는게 아니라 객체단위로 묶어서 가져온다


이러한 데이터 단위를 객체로 묶은 클래스가 DTO이며 

단위가 정해져있으니깐 실제 데이터를 저장할 클래스 ValueObject를 만들며 이 클래스는 Bean규약을 가진다.


 Model =>>>> DTO = VO = Bean

DTO : Data Transfer Object
VO : Value Object
Bean 규약 : 멤버변수는 private  멤버변수 접근은 getter / setter

그림으로 .. 그리느라 ... 힘들었습니다...





구성


= 멤버쉽 게시판 =

페이지 명세 


뷰 (jsp) - 

  member 폴더

login.jsp                   아이디, 비번

>> 로그인에 실패하면 main으로 이동할 수 없다.

>> idCheck.jsp


join.jsp                    가입 페이지

>> 회원가입 페이지로써 가입이 완료되면 다시 login페이지로 이동

>> 자바코드는 서블릿으로

>> insert(of DAO)


idCheck.jsp              id 중복/사용 여부 체크하는 양식

>> 로그인을 체크한다 로그인이 성공하면 main으로 이동한다

>> userCheck(of DAO)


memberUpdate.jsp    회원정보 수정


WebContent 폴더

main.jsp     (로그아웃, 회원정보수정, #회원탈퇴) : 로그인이 성공된 다음의 회원페이지를 만든다.

로그아웃 : 따로 폼이 필요없다

회원정보수정 : memberUpdate.jsp    >> 데이터수정은 서블릿으로

회원탈퇴 : 비밀번호만 체크하는 곳이랑 


index.jsp                web.xml에 등록되어있는 페이지로써 naver.com/index.htm으로 이동되지않고 

naver.com으로 이동되는 대문 같은 페이지


@컨트롤 (서블릿)

com.koreait.controller    매핑값(확장자 패턴)

IdCheckServlet               -    /idCheck.do

JoinServlet                   -     /join.do

LoginServlet                 -     /login.do

LogoutServlet               -     /logout.do

MemberUpdateServlet    -    /memberUpdate.do


com.koreait.dao.MemberDAO    (DB연동 / 메서드 CRUD sql / id 체크) -> 클래스



모델 

com.koreait.dto.MemberVO    -> 클래스


페이지 요소 - view에 들어갈 css, js, ....

WebContext 폴더

script 폴더

member.js (입력 확인)





*작성 순서

#1 DB에 맞춰서 모델 클래스를 생성한다


sql > create로 생성된 table을 그대로 가져와서 자바 변수로 바꿔준다.


class Member{

private String name;

private String id;

private String pw;

private String phone;

private String email

private int admin;

//기본 생성자 getter/setter, toString

}



#2 DAO 메서드 틀을 제작한다.

DB연결해서 권한을 가져오는 것은 한번만 만든다 > 싱글턴패턴을 사용한다

그리고 메서드로 계속 부르겠다.


싱글턴 패턴 : 생성자는 private를 가지고 있으며 생성자는 다른 메서드의 return값의 new로 반환된다


[DAO 생성메서드]

id : primary key

1) public int userCheck(String id, String pwd){} >>user체크 //id와 pwd가 필요


2) public MemberVO getMember(String id){} 

>> Member를 가져오는데 name, id, pw, phone..등등 가져와야되는데 return 값은 하나여서 객체로 리턴받는데

>> 그때 사용되는게 MemberVo.java(Model객체)


3) public int confirmID(String id){} >> id 체크 >> boolean타입으로 안하는이유는 없는지 있는지 틀린지 << 여러개의 상황으로 처리


4) public void insertMember(MemberVO vo){}


5) public void updateMember(MemberVO vo){}


6) public void deleteMember(MemberVO vo){}




#3 뷰 페이지부터 설계를 시작한다.


view > servlet > view > servlet > ... 이렇게 뷰와 뷰사이에는 항상 서블릿에서 이동한다.


>view>1) index.jsp >> 

로그인을 하려고 한다. 타이틀은 북마크를 생각해서 자세한 내용을 적는다 

ex) 회원관리 홈페이지::자바프로젝트::jsp프로젝트


>servelt> 2) LoginServlet.java(로그인체크) >> 

세션(getSession)에 로그인 정보가 있으면 회원전용페이지(미정)로 

없으면 login.jsp로 이동한다. >move> 3) login.jsp 이동


이때 페이지이동 기술은 쿼리스트링을 사용하는 response.sendredirect가 아니라 

url, request ,response 파라매터를 사용하는 request.Dispatcher.forward를 사용한다. 



>view> 4) 로그인 창으로 로그인버튼과 회원가입버튼으로 경로가 나뉜다.

  여기서 id와 pwd에 대한 유효성검사를 js에서 해준다.     >> 회원전용페이지(미정)


>js> 5) id와 pwd가 입력되지 않으면 메세지 창을 띄워준다.


>move> 6) 회원가입 버튼을 누르면 joinServlet으로 이동한다. 


>servlet> 7)??     >move> 8)회원가입페이지(join)으로 이동한다.


>view> 9)회원가입페이지(join)에서는 모든value값을 넣을 수 있는 폼이나온다


>window 창 move> 10) id 중복체크를 한다 이때는 id체크를 위한 다른 창을 열어서 확인을한다.

id체크를 위한 text,와 hidden을 만든다.

>servlet> 입력된 id를 가져와서 DAO를 통해서 DB에서 검사한다.




>> 7) joinServlet(서블릿) 회원정보를 서블릿에서 insert해줘야 한다.

insert메서드는 DAO에 있으므로 DAO에서 꺼내쓴다.