2021. 11. 26. 11:40ใSpring
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋๋ฐ ์์ด ํผ ๋ฐ์ดํฐ ๊ฒ์ฆ์ ๋ฐ๋์ ํด์ผํ๋ ๊ณผ์ ์ค ํ๋์ด๋ค.
๋จผ์ ํด๋ผ์ด์ธํธ์์ submit ํ๊ธฐ์ ์ ๊ฒ์ฆ์ ํด์ค์ผํ๊ณ , (JavaScript)
๊ทธ ๋ค์ ์๋ฒ์์๋ ๊ฒ์ฆ์ ํด์ค์ผํ๋ค. (Servlet, jsp..)
์์ ์์๋ ๊ฐ๋จํ๊ฒ
์ด๋ ๊ฒ uid, ์์ฑ์, ์ ๋ชฉ์ ์ ๋ ฅ๋ฐ๋ ์์ ์ด๋ค.
write.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Write Page</title>
</head>
<body>
<form action="writeOk.do">
uid(<span>์ซ์</span>) : <input type="text" name="uid" value="${w.uid }"><br>
์์ฑ์(<span>*</span>) : <input type="text" name= "name" value="${w.name }"><br>
์ ๋ชฉ : <input type="text" name="subject" value="${w.subject }"> <br>
<input type="submit" value="๋ฑ๋ก">
</form>
</body>
</html>
writeOk.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>WriteOk Page</title>
</head>
<body>
uid : ${w.uid } <br>
์์ฑ์ : ${w.name }<br>
์ ๋ชฉ : ${w.subject }<br>
<button onclick="history.back()">๋์๊ฐ๊ธฐ</button>
</body>
</html>
์ฌ๊ธฐ์ uid๋ ๋น์ด์์ผ๋ฉด ์๋๋ฉฐ ์ซ์๋ง ์ ๋ ฅํด์ผํ๋ฉฐ,
์์ฑ์ ์ญ์ ๋น์ด์์ผ๋ฉด ์๋๋๋ก ์ค์ ํ ๊ฒ์ด๋ค.
1๏ธโฃ BindingResult
BindingResult ๋งค๊ฐ๋ณ์ ์ญ์ Dispatcher์์ ์๋ ์ฃผ์ ํด์ฃผ๋ ๊ฐ์ฒด๋ก
validator๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ ๊ฒฐ๊ณผ๊ฐ ๋ด๊ธด ๊ฐ์ฒด์ด๋ค.
result์๋ ๋ฐ๋ผ์ validator๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ ๊ฒฐ๊ณผ๊ฐ ๋ด๊ธด ๊ฐ์ฒด์ด๋ค.
์ซ์์ ์๋ฌด๊ฐ๋ ์ ์ง ์๊ณ ๋ฑ๋ก ๋ฒํผ์ ๋๋ฌ๋
์๋ฌ ์์ด 0์ผ๋ก ๋ฐ๋๊ฑธ ํ์ธํ ์ ์๋ค
(์๋๋ 500 ์๋ฌ๊ฐ ๋ ์ผํ๋ค.)
ํผ ๋ฐ์ดํฐ์ ์ค๋ฅ ๊ฐ์๋ฅผ ํ์ธํ๊ธฐ ์ํด result.getErrorCount()๋ฅผ ํด๋ณด์๋ค.
์ ์์ ์ผ๋ก ๋ฑ๋ก๋์๋ค๋ฉด 0์ด๊ฒ ์ง๋ง ์ง๊ธ์ uid์ ์๋ฌด๊ฐ๋ ์ ๋ ฅํ์ง ์์์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ์๊ฐ 1์ด ์ถ๋ ฅ๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
2๏ธโฃ Validator ํด๋์ค ์์ฑ ( implements Validator)
validate()๋ ์ฃผ์ด์ง ๊ฐ์ฒด์ ๋ํด ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ๊ณ ,
์ ํจ์ฑ ๊ฒ์ฌ์์ ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์ฃผ์ด์ง ๊ฐ์ฒด์ ์ด ์ค๋ฅ๋ค์ errors์ ๋ฑ๋กํ๋ค.
์ ํจ์ฑ ๊ฒ์ฌ๋ ๋ฑ๋ก๋ฒํผ์ ๋๋ ์ ๋ ๋์ํ๋ writeOk.do ์ ๋ฑ๋กํด์ผํ๋ค.
๋ฐ๋ผ์ writeOk ํธ๋ค๋ฌ ๋ฉ์๋์ Validator ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ dto ๊ฐ์ฒด์ validator๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํ ๊ฒฐ๊ณผ๊ฐ ๋ด๊ธด ๊ฐ์ฒด์ธresult๊ฐ์ ๋๊ธด๋ค.
3๏ธโฃ error ์ถ๋ ฅ์ ์ํ ๋ฉ์๋ showErrors
์ ํจ์ฑ ๊ฒ์ฆ ํ์ ์๋ฌ๊ฐ ์๋ค๋ฉด ์๋ ํผ์ผ๋ก ๋์๊ฐ๋ค.
๋ฐ๋ผ์
์ด๋ ๊ฒ ์ง์ ์ ํด์ค ์๋ ์์ฑํ๋ ๊ฐ๋ค์ด ์๋ฌ๊ฐ ์์ด ๋์๊ฐ์๋๋ ๋ณด์ผ ์ ์๊ฒ ํด์ค๋ค.
์ด๋ฒ์๋ uid์ ์๋ฌด๊ฐ๋ ์ ๋ ฅํ์ง ์์๋ค๋ฉด validate ์ ์ ์ด๋ฏธ ๋ฐ์ธ๋ฉ์์ ํ๋ ์๋ฌ๊ฐ ๋ฐ๊ฒฌ๋๊ณ ,
์๋ฌด๊ฐ๋ ์ ๋ ฅํ์ง ์๊ณ ๋ฑ๋ก์ ํ๋ฉด 0์ด ๋๋๋ฐ ์ด๋ uid๊ฐ 0์ด๋ฉด invaliduid๋ฅผ ์ง์ ํ๊ธฐ ๋๋ฌธ์
validate ํ์ ์๋ฌ๊ฐ์๊ฐ 2๋ก ๋์ด๋ฌ๋ค.
์ด๋ฒ์ uid, ์์ฑ์ ๋ชจ๋ ์ง์ ํด์ฃผ์ง ์์๋ค.
์ฌ์ฉ์๊ฐ ๋ง๋ validtor์ ์ํด 2๊ฐ์ ์๋ฌ๊ฐ ์ถ๊ฐ ๋ฑ๋ก๋์๋ค.
4๏ธโฃ ValidationUtils
ValidationUtils ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด validate() ๋ฉ์๋๋ฅผ ์ข ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
์ ๋ชฉ์ ์ถ๊ฐํ์ฌ ์ ๋ชฉ์ ๋น์ฐ๋ฉด ์๋๋๋ก ์ค์ ํ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ValidationUtils.rejectIfEmptyOrWhitespace(errors, "subject", "emptySubject");
๋ก ์ง์ ํด์ค๋ค.
๊ทธ๋ผ ํจ์ฌ ๊ฐ๋จํ๊ฒ ํ์ค๋ก ์์ฑํ ์ ์๋ค..!!
5๏ธโฃ @Valid, @InitBinder
์์์๋ ์ง์ Validator ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ์ง์ ํธ์ถํด์ ์ ํจ์ฑ์ ๊ฒ์ฆํ๋ค.
์ด๋ฌํ ๋ฐฉ์ ๋ง๊ณ ์คํ๋ง ํ๋ ์์ํฌ์์ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค์ด ๋ณธ๋ค.
https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator
ํผ ๋ฐ์ดํฐ ๊ฒ์ฆํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๋ค.
@InitBinder ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํด ์ปจํธ๋กค๋ฌ ํด๋์ค์ handler ๋ฉ์๋์์ ํผ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ธ๋ฉํ ๋ ๊ฒ์ฆํ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ํด์ค๋ค.
@InitBinder๋ก ๋ฑ๋ก๋ validator๋ก ๋ฐ์ธ๋ฉํ๋ ์์ ์ ๊ฒ์ฆํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ง์ Validator ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋๋ค์ ์ง์์ค๋ค.
์๋ฌด๊ฒ๋ ์ ๋ ฅํ์ง ์๊ณ ๋ฑ๋ก๋ฒํผ์ ๋๋ฅด๋ฉด
์๋ฌ๊ฐ 4๊ฐ ๋ฐ์ํ๊ฒ์ ํ์ธํ ์ ์๋ค.
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring REST, RESTful API, XML, JSON , Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น (0) | 2021.11.29 |
---|---|
Spring MVC ๊ฐ๋จํ ๊ฒ์ํ ๋ง๋ค๊ธฐ (0) | 2021.11.29 |
Spring Request Parameter (@RequestParam, @ModelAttribute, @PathVariable, redirect) (0) | 2021.11.26 |
Spring @Controller, @RequestMapping (0) | 2021.11.26 |
Spring Error ์์ธ ์ฒ๋ฆฌ ํ๋ ๋ฒ (0) | 2021.11.24 |