본문 바로가기

웹개발/스프링

2. Validator를 이용한 회원가입 페이지 만들

Validator 설정하기편

 

Validator 설정

1) pom.xml Validator를 사용하기 위한 라이브러리를 추가 해준다 2) servlet-active.xml messageSource 라는 이름을 가진 빈을 생성 해주고 properties 파일로서 메세지를 읽어 드리게 설정한다 3) message_ko...

minwoo-developer.tistory.com

 

ERD 및 DDL 확인하기

 

1차 ERD

1차. 회원테이블과 게시판 테이블 설계 DDL DROP TABLE novice_user; CREATE TABLE novice_user( user_no NUMBER PRIMARY KEY, user_id VARCHAR2(15) NOT NULL UNIQUE, user_pw VARCHAR2(200) NOT NULL, user_nic..

minwoo-developer.tistory.com

 

 

유효성 검사를 통해 회원가입을 하는 방법이다. 회원가입을 할때 이용약관의 동의를 해야 넘어가지고, 이메일이 맞는지, 아이디가 존재하는 지 등 유효성 검사를 거친 후 회원가입이 완료 된다. 복잡하지만 복잡하지 않는 듯한 느낌. Validator를 이용해서 유효성 검사를 할 것이다. hibernate로 유효성 검사를 할 수도 있다. 아마 hibernate가 더 간단할 것이다. 다음에 hibernate로 유효성 검사를 하여 회원가입하는 것도 만들어 봐야지!

 

하나의 기능이 구현되는 순서는 기본적으로 Controller -> Service -> DAO -> SQL(XML) -> JSP 이다. 

 

1) 파일 및 패키지 생성

1-1) UserController.java 생성

6행 :  Controller의 역할을 수행 한다고 명시(해당 클래스를 Controller로 사용한다고 Spring FrameWork에 알린다.)
   필요한 비즈니스 로직을 호출하여 전달할 모델(Model)과 이동할 뷰(View) 정보를 DispatherServlet에 반환 한다.
 - Bean으로 등록
 - @Component의 구체화 된 어노테이션

7행 : 요청에 대해 어떤 Controller, 어떤 메소드가 처리할지 맵핑하기 위한 어노테이션
 - 클래스나 메서드 선언부에 @RequestMapping과 함께 URL을 명시하여 사용한다.
 -  viewName 생략시 @RequestMapping의 path로 설정한 URL이 default viewName

 

1-2) UserService.java 생성

5행 : @service 어노테이션은 해당 클래스를 루트 컨테이너에 빈(Bean) 객체로 생성해주는 어노테이션

 

1-3) UserSQLMapper.java 생성

1-4) UserSQLMapper.xml 생성

5행 : SQL Mapper 경로 설정이다.

 

1-5) UserVo.java생성

15 ~ 46행 : DB 필드들을 선언하고 각 제약조건을 설정해준다

48 ~ 153 : Getter/Setter를 만든다. Alt+Shift+S를 눌러서 Generate Getters and Setters로 쉽게 만들 수 있다.

VO는 Value Object의 약자로써 read only 속성을 가진다.  DB의 필드들을 Getter/Setter 메소드 조합으로 형성된 클래스이다. DB의 정보를 담고 보내주는 역할을 한다. DTO라는 이름으로 사용하는 사람들도 있다. VO와 DTO는 거의 비슷한, 똑같은 개념이긴 하다. 두 개를 구분하라면 구분할 순 있지만, 비슷한 개념이다. 불변성이냐 아니냐의 차이이다. VO나 DTO를 쓰지않고 Map만 사용하는 사람들도 있다. 편한 걸로 쓰면 된다. 

최종적으로 패키지를 다만들면 이렇게된다

 

2) index.jsp

11행 : <jsp:include page>"jsp 파일경로"</jsp:include> 해당 JSP 파일을 읽어서 화면에 띄워준다

상단 메뉴바 CSS 이다 Bootstrap 을 이용해서 만든거다

 

3) UserController.java ("userAgree")

11행 : @RequestMapping : viewName을 userAgree로 한다

 

4) userAgree.jsp (views/user)

52행 : form태그이다. action으로 Controller에 요청 URL "./joinUserPage"를 보낸다

72행 : input 태그로 타입을 checkbox로 만든다. 체크를 하면 다음 단계로 넘어가게 한 것이다

82행 : button을 누르면 다음 단계로 넘어가는데 체크를 하지 않으면 넘어가지 않게 할 것 이다.

 

5) 확인

 

서버를 실행시켜보자. 아래는 index.jsp 실행화면이다

회원가입을 눌럿을떄 userAgree가 나오면 성공이다

성공이다 !!!!

 

6) UserController.java("joinUserPage")

18행 : @RequestMapping("joinUserPage") : viewName을 joinUserPage로 설정한다는 뜻이다

19행 : @ModelAttribute("userVo") UserVo param : UserVo 객체를 자동으로 Model 객체에 추가 시켜준다

19행 : @RequestParam(value = "agree", defaultValuie = "false") boolean agree : 파라미터로서 agree 값을 받아오고 그 값의 기본값을 false 로 설정해준다는 의미이다

 

7) joinUserPage.jsp

57행 : form 태그이다. method="post" 로 설정하면 파라미터 값들이 주소창에 안보인다

59행 : papth는 UserVo.java에 있는 프로퍼티와 연결된다. 두 개의  이름이 같아야 한다.

64행 : errors의 내용을 가져온다. path로 프로퍼티를 지정한다.

 

8) 확인

8-1. 동의하지 않고 제출 버튼를 누른다.

주소 : https://localhost:8080/user/joinUserPage?

8-2. 동의합니다 체크후 제출 버튼를 누른다.

주소 : http://localhost:8181/user/joinUserPage?agree=true

지금 주소에 agree의 값이 적혀있는데, 보이기 싫으면 form태그에 mehtod="post"를 하면된다.

 

9) UserController("insertUserProcess")

 20행 : @Autowired 어노테이션을 선언한다 필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 주입한다.

 21행 : UserService userService : UserService.java를 빈에 주입해준다

 44행 : @Valid UserVo param : 전달받는 파라미터의 값을 Validator 전달 받는다.

 

10) UserService.java

9행 : @Service : 루트 컨테이너에 빈 객체로서 등록한다

12행 : @Autowired 어노테이션을 선언한다 : 필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 주입한다

13행 : UserSQLMapepr userSQLMapper; : UserSQLMapper.java를 빈에 등록해준다

 

11) UserSQLMapper.java

12) UserSQLMapper.xml

 

13) 확인

각 필드에 맞는 유효성 조건을 체크 한 후 유효하다고 판단되면 회원가입이 진행되고 쿼리에 값이 인서트 되게 된다.

출력되는 에러메세지 커스텀은 따로 설정 편에서 다룰 예정이다.

 

다음 시간에는 Ajax를 이용한 아이디 중복체크 기능에 대해 알아보자