팀프로젝트 시작하기

HOHO·2023년 4월 19일
0

팀프로젝트

목록 보기
2/4

주제 - 진료관련 증명서 출력기능구현

음 다운로드도 출력이라고 할..수 있지? 인쇄가 아닌 다운로드를 구현!!

우선 팀장을 맡게 되었고 깃대장과 발표 백엔드까지! 모조리 하게 되었다
3명이 한팀인데 백엔드처리를 할사람이 나밖에 없어서 혼자서... 어떻게든 해봐야지

우선 큰틀만 잡아놓은 jsp들을 controller로 연결시키쟈

@GetMapping("LogIn")
	public String loginPage() {
		logger.info("Welcome Login!");
		return "LogIn";
	}
	
	@GetMapping("SignUp")
	public String SignUpPage() {
		logger.info("Welcome SignUp!");
		return "SignUp";
	}
	
	@GetMapping("Issue")
	public String RequestPage() {
		logger.info("Welcome Issue!");
		return "Issue";
	}

집에서 우선 회원가입 insert처리 부터 시작!

SignUpController.java

@Autowired
	SignUpService signserv;
	
	@PostMapping("memberJoin")
	public ModelAndView memberJoin(@ModelAttribute("member") @Valid MemberVO member, BindingResult result) {
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("member", member);
		
		if (result.hasErrors()) {
			modelAndView.addObject("errorMessage", "회원 가입 폼을 올바르게 입력해주세요.");
	        modelAndView.setViewName("SignUp");
        	logger.info("hasErrors member ={}", member);
        	logger.info("hasErrors result ={}", result);
            return modelAndView;
        }else {
		signserv.memberJoin(member);
		modelAndView.setViewName("home");
        logger.info("insert Success member ={}", member);
        return modelAndView;
        }
		
	}

이번에 새로 찍먹해본 @Valid와 BindingResult, ModelAndView를 써봤다

ModelAndView는 Spring Framework에서 사용하는 모델과 뷰를 결합한 객체
이 객체는 데이터와 뷰 정보를 함께 담아서 컨트롤러가 처리한 결과를 화면에 출력하는 데 사용 (저렇게 쓰는게 맞는지 모르겠다...)
addObject -> member의 값을 "member"라는 이름에 담는다
setViewName -> return문에서 실행할 view의 이름을 저장해주고
return은 modelAndView로 해준다

@Valid는 Spring MVC에서 사용 되는 자체 유효성검사 어노테이션!
유효성의 규칙을 직접 지정하지않으면 이미정해진 규칙으로 검사를 시행함
pom.xml 의존성 추가

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

  • email: 이메일 형식이 맞는지 검증합니다. 이메일 형식은 이름@도메인.도메인의 형식을 따릅니다. 이메일 형식이 아니면 유효성 검증 실패로 처리합니다.
  • password: 비밀번호의 길이가 8자리 이상이고, 영문 대/소문자, 숫자, 특수문자가 모두 포함되어 있는지 검증합니다. 만약 이 조건을 만족하지 않으면 유효성 검증 실패로 처리합니다.
  • name: 이름이 null이 아니고, 길이가 2자리 이상이어야 합니다. 이름이 null이거나 길이가 2자리 미만이면 유효성 검증 실패로 처리합니다.
  • phoneNumber: 전화번호가 null이 아니고, 숫자로 이루어져 있으며 길이가 10자리 이상이어야 합니다. 전화번호가 null이거나 숫자로 이루어져 있지 않거나 길이가 10자리 미만이면 유효성 검증 실패로 처리합니다.

유효성 검증실패로 처리되면 BindingResult 객체로 해당 에러정보를 저장

@ModelAttribute("member")의 값을 @Valid로 유효성검사를 시행하고 @Valid의 결과가 맘에들지않으면 BindingResult객체로 에러에 대한 처리를 해준다


근데 아주 큰 문제가 생겼다...

내가 뭘 잘못한걸까... pk null값 가능!!
@Valid이게 정상적으로 기능을 못하는거 같은데 더 알아봐야겠다....

profile
기계 그잡채가 되고싶다

0개의 댓글