2nd day of mini project

2023. 9. 14. 19:39
728x90

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";
    }

요렇게 구현 완. 

구현 하고 나니 너ㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓㅓ무 뿌듯했다!!!! 짝꿍이 너무 잘 가르쳐줘서... 그덕에 나도 이해가 쏙쏙 되었다 엉엉 ㅠㅡㅠ 

일단은 그렇게 이틀차 마무리. 

요가가야한다~~~~ 바쁘다바빠 현대사회~~~~~

 

오늘의 느낀점은 : 공부할수록 이해가 빠르다! 쉬지 않고 공부하기... 민폐  되지 않기.. 배운 것들 적용해보며 체화해나가기. 

그리고 기록의 중요성! 기록해두면 안좋은 것은 없다. 기록 열심히 하기!!!! 빠이팅. 

 

728x90

BELATED ARTICLES

more