[Spring] 유효성 검사, redirect, URLEncoder
2024. 7. 21. 09:20ㆍWebBack/Spring
유효성 검사
회원가입 폼에서 값을 전달받으면 2가지 일을 해야한다.
1. 유효성 검사
2. 신규 회원 정보를 저장
유효성 검사를 위해서 받아온 값을 저장하는 user 객체를 만들었다. user 객체 내용은 이전에 MyDate와 마찬가지로 겟터, 셋터, toString 오버라이딩를 넣으면 된다. registInfo.jsp에서는 이제 param.~이 아니라 user.~로 변환해야한다.
그런데 만약 회원 입력값에 문제가 있으면 어떻게 해야할까? 다시 회원가입 폼으로 돌아가야한다. 코드를 다음과 같이 쓰면 된다. 아래는 false값을 반환하여 다시 회원가입폼으로 이동하도록 하였다.
@PostMapping("/register/save")
public String save(User user, Model model) {
//유효성 검사
if(!isValid(user)) {
String msg = "id를 잘못입력하셨습니다.";
return "redirect:/register/add?msg="+msg;
}
//DB에 신규회원 정보를 저장
return "registerInfo";
}
private boolean isValid(User user) {
return false;
}
}
파라미터에 msg를 넣어서 어떤 문제가 발생했는지도 보여주었다. 하지만 "id를 ~" 이 부분이 폰트가 깨져서 출력된다. 이를 해결하기 위해 인코딩을 추가한다.
String msg = URLEncoder.encode("id를 잘못입력하셨습니다.", "utf-8");
그리고 register.jsp에는 다음과 같이 바꾸어 디코드시켜준다.
<%@ page import="java.net.URLDecoder" %>
////
<div id="msg" class="msg"> ${URLDecoder.decode(param.msg,"utf-8")}</div>
그런데 넘겨줄 msg값이 여러개가 되면 코드가 복잡해진다. 이를 해결하기 위해 addAttribute를 이용해서 모델을 통해 넘겨주는 것도 가능하다.
@PostMapping("/register/save")
public String save(User user, Model model) throws Exception {
//유효성 검사
if(!isValid(user)) {
String msg = URLEncoder.encode("id를 잘못입력하셨습니다.", "utf-8");
model.addAttribute("msg", msg);
return "redirect:/register/add";
}
//DB에 신규회원 정보를 저장
return "registerInfo";
}
이를 실행하면 위 코드와 똑같다.
'WebBack > Spring' 카테고리의 다른 글
[웹 기술] 1. 웹 프로그래밍과 JSP (0) | 2024.07.24 |
---|---|
[Spring] 로그인폼 html css (0) | 2024.07.22 |
[Spring] view controller (0) | 2024.07.21 |
[Spring] PostMapping,GetMapping (0) | 2024.07.21 |
[Spring] BindingResult (0) | 2024.07.20 |