2nd day of mini project
1. 깃 연동
어제 프로젝트 기본 셋팅해놓은 이클립스를 깃에 연동하고싶어서 시도하다가 실수로 프로젝트 삭제했다............아ㅏㅏㅏ바보바보.
그냥 삭제한 김에 다시 혼자서 만들어봄!!! 복습 복습 또 복습하며 내걸로 만들어야 한다!!
코드 하나하나 뜯어보기! 꼭꼭~~~~~
결국 깃과 연동도 성공... 실패는 성공의 어머니.......오키... 엄청 실패하면서 배우는 거다! 다 하니까 무슨 오류가 나도...아는 오류.. 하하^.^
2. DB TABLE 생성.
일단은 DB table을 하나만 생성해보았다. USERS 테이블 생성함.
CREATE TABLE USERS (
-- id는 PK로 놓고, SEQUENCE를 생성해 자동으로 겹치지 않게 넘버링하도록 하였다.
id NUMBER PRIMARY KEY,
-- 유저 아이디는 겹치지 않도록 UNIQUE로 설정.
-- 필수 정보는 유저아이디, 비밀번호, 이름, 닉네임으로 설정.
user_id VARCHAR2(50) UNIQUE NOT NULL,
password VARCHAR2(200) NOT NULL,
full_name VARCHAR2(100) NOT NULL,
nickname VARCHAR2(50) NOT NULL,
birthdate DATE,
phone VARCHAR2(15),
email VARCHAR2(100),
address VARCHAR2(300),
-- USER_ROLE은 두가지 중 하나로 체크CHECK (각 행이 충족해야 하는 조건을 정의)
user_role CHAR(5) CHECK (user_role IN ('USER', 'ADMIN')),
-- DEFAULT옵션 지정.
regdate DATE DEFAULT SYSDATE
);
CREATE SEQUENCE USERS_SEQ
START WITH 1
INCREMENT BY 1
NOCACHE;
-- 시퀀스는 1부터 시작하며 1씩 증가하도록 설정.
표를 생성하며 의문이 생겼었다. 왜 VARCHAR2인가 이게 뭐지!!!!? 차이는 뭐지...? 했는데 이전에 정리했던 글을 보니 고대로~ 나와있었다. 역시나 공부를 해야지.... 열심히.... 기록도 열심히.....하. 시퀀스도 배웠었다!!!! 휘리릭 지나가서 기억이 안났지만 내가 직접 정리했던 걸 보니 훨씬 좋았다!
3. 더미 사용자 넣어보기.
-- 더미 사용자 1
INSERT INTO USERS (id, user_id, password, full_name, nickname, birthdate,
phone, email, address, user_role, regdate)
VALUES (USERS_SEQ.NEXTVAL, 'john_doe', 'password123', 'John Doe', 'Johny', TO_DATE('1990-05-10',
'YYYY-MM-DD'), '123-456-7890', 'john.doe@email.com', '1234 Elm Street, Anytown', 'USER', SYSDATE);
더미 사용자 넣어보면서 DB 잘 생성되었는지 확인해보았다. 일단 id는 시퀀스 활용해서 넣어야하는데 > 요것도 어떻게 넣는지 고민!!!! >> VALUES 값에 시퀀스 이름.NEXTVAL 넣으면 된다~~~~~~ 오예. 그리고 birthdate는 형식을 맞춰주어야 하기 때문에 TO_DATE 활용해서 넣어주기. 정신 똑띠 차리기! 그리고 USER_ROLE에는 'USER'선택.
4. UserController 생성해보기.
- 회원 등록 register 기능 만들기.
package com.nctclub.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.nctclub.model.UserDAO;
import com.nctclub.model.UserDTO;
import com.nctclub.model.UserRole;
// 컨트롤러 애너테이션
@Controller
// user안에서 여러가지 기능을 구현할 생각이니 RequestMapping을 다중으로 한다.
@RequestMapping("/user")
public class UserController {
// 여기서는 원래 @GetMapping을 사용하려 했는데 버전이 맞지 않는지 빨간줄 그어짐..
// 다른 표현으로는 이렇게 표현. value랑 method를 쓰면 됩니다.
// regiterform으로 URL을 치면 >> registerform.jsp로 들어가게 된다.
@RequestMapping(value = "/registerform", method = RequestMethod.GET)
public String registerform() {
return "registerform";
}
}
// 회원 등록 버전 1. register 정보를 registerform에서 모두 입력을 하고 넘어온다.
// 그 때 그 정보를 모두 insert하도록 해야 함.
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register() {
// DTO 생성하여 그 안에 set메소드를 활용하여 직접 정보를 집어넣어보았다.
UserDTO dto = new UserDTO();
dto.setUserId();
dto.setPassword("password12634");
dto.setFullName("John Doe458");
dto.setNickname("Johnny4");
dto.setBirthdate(new java.sql.Date(System.currentTimeMillis())); // Setting today's date
dto.setPhone("123-456-7890");
dto.setEmail("john.doe@example.com");
dto.setAddress("123, Dummy Street, Test City, 12345");
dto.setUserRole(UserRole.USER); // Assuming the UserRole enum has been correctly defined
// DAO 생성하여 > insert메소드를 사용하여 dto를 넣는다.
UserDAO dao = new UserDAO();
dao.userInsert(dto);
return "register";
} // 하지만 이것은 set을 모두 사용해야 하므로 너무 귀찮다...!! 비효율적이야!! 그러므로 다른 방법을 사용했다.
// 회원 등록 버전 2. 이때 사용하는 것은 @ModelAttribute 어노테이션이다. 그 후 userdto불러들이면
// 각 항목마다 하나씩 배치?를 해준다!!
@RequestMapping(value="/register", method = RequestMethod.POST)
public String userRegister(@ModelAttribute UserDTO userDto) {
// 그러면 코드가 확 짧아짐.. userDAO 데꼬와서 넣어주면 된당~
UserDAO dao = new UserDAO();
// 대신 여기서 UserRole은 설정해줘야함......
// 사용자/admin을 구분짓는 로직이 필요함.
userDto.setUserRole(UserRole.USER);
// 비밀번호 암호화 과정이 필요함.(db에서도)
// 어찌됐든 insert! 남은 기능들 구현 해야함.
dao.userInsert(userDto);
//System.out.println(userDto.getEmail());
return "main";
}
요렇게 구현 완.
구현 하고 나니 너ㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓ무 뿌듯했다!!!! 짝꿍이 너무 잘 가르쳐줘서... 그덕에 나도 이해가 쏙쏙 되었다 엉엉 ㅠㅡㅠ
일단은 그렇게 이틀차 마무리.
요가가야한다~~~~ 바쁘다바빠 현대사회~~~~~
오늘의 느낀점은 : 공부할수록 이해가 빠르다! 쉬지 않고 공부하기... 민폐 되지 않기.. 배운 것들 적용해보며 체화해나가기.
그리고 기록의 중요성! 기록해두면 안좋은 것은 없다. 기록 열심히 하기!!!! 빠이팅.
'Project > nct club project' 카테고리의 다른 글
오류와의 싸움기 흙 흙 ㅠㅡㅠ (1) | 2023.09.20 |
---|---|
[이미지 업로드 기능] 만들기 (0) | 2023.09.19 |
3rd day of mini project (0) | 2023.09.15 |
1st day of mini project (0) | 2023.09.14 |
[미니프로젝트] nctclub spring boot 세팅/생성 (0) | 2023.09.12 |