Validator 설정하기편
ERD 및 DDL 확인하기
유효성 검사를 통해 회원가입을 하는 방법이다. 회원가입을 할때 이용약관의 동의를 해야 넘어가지고, 이메일이 맞는지, 아이디가 존재하는 지 등 유효성 검사를 거친 후 회원가입이 완료 된다. 복잡하지만 복잡하지 않는 듯한 느낌. 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를 이용한 아이디 중복체크 기능에 대해 알아보자
'웹개발 > 스프링' 카테고리의 다른 글
6. interceptor 로그인 처리 (0) | 2022.09.17 |
---|---|
5. 게시판 만들기 - 게시글 목록 출력하기 (0) | 2022.09.17 |
4. 로그인/로그아웃 기능 (0) | 2022.09.17 |
3. Ajax를 이용한 아이디 중복체크 (0) | 2022.09.16 |
1. Spring MVC Project 생성하기 (0) | 2022.09.13 |