SpringMVC_OracleMybatis - 회원관리
1. 오라클 데이터베이스에 접속해서 회원 테이블을 생성하고 샘플 데이터를 작성
2. Spring MVC Project를 생성
3. 프로젝트를 위한 의존성을 설정
4. 필요한 의존성을 설정
5. Web.xml 파일에 파라미터 인코딩 필터 설정을 추가
6. servlet-context.xml 파일에 설정을 추가
7. 데이터베이스 접속 설정
8. xml을 이용해서 MyBatis를 사용할 때 설정
9. 하나의 서비스를 위한 기본 구조
10. 회원가입
1. 오라클 데이터베이스에 접속해서 회원 테이블을 생성하고 샘플 데이터를 작성
2. Spring MVC Project를 생성
- portfolio : gmail.elwl5515.portfolio
3. 프로젝트를 위한 의존성을 설정
- java version, spring version, junit version, sevlet version, jsp version은 수정
1) properties 변경
2) dependencies 변경
3) build 태그 안의 plug in 중에서 자바 버전을 나타내는 부분을 수정
- 실행(설정 확인을 위해)
4. 필요한 의존성을 설정
- oracle, spring-jdbc, spring-test, mybatis, mybatis-spring, jbcrypt, commons-fileupload, json
- 본인 데이터베이스와 연동 프레임워크 등에 따라 필요시 mysql, spring-orm, hibernate
1) oracle을 위해 repositories를 추가
2) dependencies에 추가
5. Web.xml 파일에 파라미터 인코딩 필터 설정을 추가
- web.xml을 처리한 경우에는 확인을 위해 서버 재실행
6. servlet-context.xml 파일에 설정을 추가
1) 기본 설정 추가
2) 파일 업로드를 위한 설정 추가
- spring 설정 파일을 변경한 경우에도 재실행을 해서 확인
7. 데이터베이스 접속 설정
1) applicationContext.xml(root-context.xml) 파일에 DataSource 클래스의 bean을 이용해서 데이터베이스 접속 정보를 설정
2) src/test/java에 테스트 클래스를 생성해서 연결을 테스트
8. xml을 이용해서 MyBatis를 사용할 때 설정
1) mapper 파일을 저장할 디렉토리를 생성 - src/main/resources에 mappers라고 생성
- 매퍼 파일이 저장되는 디렉토리에는 매퍼파일만 존재해야 한다.
2) root-context.xml 파일에 MyBatis 설정을 추가
- 트랜잭션을 사용하는 경우 root-context.xml 파일에 만ㄷ르면 에러가 발생하는 경우가 있다.
이 경우 이 설정을 servlet-context.xml 파일에 작성
9. 하나의 서비스를 위한 기본 구조
- mapper 파일 1개
- DTO 클래스, DAO 클래스, Service 인터페이스, ServiceImpl 클래스, Controller 클래스(웹 페이지만 만들 때는 일반 컨트롤러 1개, 모바일을 위한 서버를 만들 때는 RestController 1개, 웹 페이지와 모바일을 위한 서버를 만들 때는 일반 컨트롤러 1개 그리고 RestController 1개)
- 웹 페이지를 만들 때는 css를 위한 디렉토리, js를 위한 디렉토리, 리소스를 위한 디렉토리, 뷰를 위한 디렉토리를 각각 생성 - 뷰를 제외한 자원들은 webapp 디렉토리 안에 서비스 이름으로 디렉토리를 만들고 그 안에 다시 디렉토리들을 만들어서 분류
1) SpringUser 관련 데이터베이스 작업을 처리할 mapper 파일을 생성
- mappers/SpringUser.xml
2) DTO 클래스 생성
- 기본패키지.domain.SpringUser.java
3) DAO 클래스 생성
- bean을 자동 생성하도록 하고 사용할 데이터베이스 연동 프레임워크의 bean을 자동으로 주입한다.
- 기본패키지.dao.SpringUserDAO
4) Service 인터페이스 생성
- 기본패키지.service.SpringUserService
5) ServiceImpl 클래스를 생성
- Service를 implements
- 기본패키지.service.SpringUserServiceImpl
- bean을 자동 생성하도록 해주고 DAO를 주입
6) 웹 사이트에서 페이지 이동에 사용할 Controller를 생성
- 기본패키지.SpringUserPageController
7) 데이터를 제공하기 위한 Controller를 생성
- Service를 주입받아야 한다.
- 기본패키지.SpringUserRestController
8) 필요한 디렉토리를 생성
- views 디렉토리에 회원관련 작업을 표시할 view들을 저장할 user 디렉토리를 생성
- webapp 디렉토리에 user 디렉토리를 생성하고 그 안에 js, css, profile(이미지 저장할 디렉토리) 디렉토리를 생성
- 실제 업무에서는 이미지와 같은 파일들은 다른 컴퓨터에 저장
10. 회원가입
- 회원가입 요청을 하면 회원 정보를 입력할 화면으로 이동을 하고 정보를 입력한 후 다시 회원 가입을 요청하면 가입 요청을 처리
- 가입 요청을 처리할 때 primary key나 unique의 경우는 중복 검사를 수행해야 하고 not null이 있으면 데이터가 있는지 확인해야 한다.
- 파일도 같이 전송하기 때문에 파일 업로드도 처리해 주어야 한다.
- email의 경우 복호화가 가능한 암호화 방식으로 저장할 것이고 pw의 경우는 복호화가 불가능하고 비교만 가능하도록 저장
1) default.jpg 파일을 profile 디렉토리에 복사
2) 데이터 암호화와 복호화를 위한 CryptoUtil.java(선생님께서 미리 작성하신)를 프로젝트에 복사
3) home.jsp 파일에 회원가입 링크를 추가
4) user/join 요청이 GET 방식으로 전송된 경우 처리할 메소드를 SpringUserPageController에 작성
5) join.jsp 파일을 생성하고 작성
6) join.css 파일을 생성하고 작성
7) springuser.xml 파일에 회원가입에 필요한 SQL을 작성
8) Test클래스에서 SQL 테스트
9) SpringUserDao 클래스에 회원가입 관련된 메소드를 생성
10) SpringUserService 인터페이스에 회원가입 처리를 위한 메소드를 선언
- 결과를 Map으로 리턴해서 그 결과를 json 형식으로 출력할 수 있도록 만들어야 한다.
- Map을 확인하면 작업이 어떻게 됐는지 알 수 있어야 한다.
result같은 속성을 생성해서 작업의 성공과 실패 여부를 저장해 주는 것이 좋다.
실패했을 때는 왜 실패했는지 설정해 주는 것이 좋다.
11) SpringUserServiceImpl 클래스에 회원가입 처리를 위한 메소드를 구현
12) SpringUserRestController에서 회원가입 요청을 처리하는 메소드를 구현
13) join.jsp 파일의 요청을 처리하는 스크립트 코드를 join.js 파일에 작성
- 서버로 전송하기 전에 데이터 유효성 검사를 수행하고 서버로 전송해서 결과를 받으면 그 결과를 가지고 다음 행동을 작성
14) 데이터베이스의 샘플 데이터를 전부 삭제
- 이전에 저장한 데이터는 로직을 테스트하기 위한 데이터라서 암호화가 되어 있지 않음.
15) EMAIL 중복 검사 SQL 수정
16) Spring UserDAO 클래스의 email 중복 검사 메소드 수정
17) SptingUserServiceImpl 이메일 중복 검사 부분 수정