Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- #Vue #OpenLayer #Spring boot #vue-resizable #version #호환
- #스프링 #jdbc #jdbcTemplate #spring
- #Vue #js #뷰 #자바스크립트 #javascript #
- #스프링 #spring #spring boot #스프링 부트 #PostConstruct #PreDestroy #maven #pom.xml
- #유효성검사 #밸리데이션 #validator
- #Vue #node #node.js #Visual code #vs code
- #mvc #게시판 #mvc게시판
- 스프링 #오류 #스프링 부트 #@Configuration
- 아임포트 #API #KG이니시스 #자바스크립트 #js #스프링부트 #스프링 부트 #스프링 #JPA #I'm port #코딩
- #스프링 #spring #
- IntelliJ #인텔리제이 #Gradle #그레이들 #빌드 #빌드변경
- #스프링 #Spring #스프링 레거시 #톰캣 #tomcat #기본경로 #실행경로 #변경
- #자바 #Java #스프링 #spring #이클립스 #eclipse #에러 #스프링 에러
- #스프링 #spring
Archives
- Today
- Total
아르꼬의 코딩일기
[스프링] Validator를 이용한 서버 유효성 검사 본문
일반적으로 유효성 검사는 프론트단에서 작업을 하는데 사실 서버랑 프론트에서 둘다 작업을 하는게 가장 좋다
그래서 서버단에서 작업을 하기위해서는 밸리데이터 클래스를 추가한다.
Student
package com.all.test01;
public class Student {
private String name;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
StudentValidator
package com.all.test01;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
public class StudentValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return Student.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
System.out.println("validate()");
Student student = (Student)target;
String studentName = student.getName();
if(studentName == null || studentName.trim().isEmpty()) {
System.out.println("studentName is null or empty");
errors.rejectValue("name", "trouble");
}
int studentId = student.getId();
if(studentId == 0) {
System.out.println("studentId is 0");
errors.rejectValue("id", "trouble");
}
}
}
createPage
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
createPage.jsp
<br>
<form action="student/create">
이름 : <input type="text" name="name" value="${student.name}"><br>
아이디 : <input type="text" name="id" value="${student.id}"><br>
<input type="submit" value="전송"><br>
</form>
</body>
</html>
createDonePage
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
createDonePage.jsp<br>
이름 : ${student.name}<br>
아이디: ${student.id}
</body>
</html>
StudentController
package com.all.test01;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class StudentController {
@RequestMapping("/studentForm")
public String studentForm() {
return "createPage";
}
@RequestMapping("/student/create")
public String studentCreate(@ModelAttribute("student") Student student,
BindingResult result) {
String page = "createDonePage";
StudentValidator studentValidator = new StudentValidator();
studentValidator.validate(student, result);
if(result.hasErrors()) {
//page = "createPage";
page = "redirect:/studentForm";
}
return page;
}
}
결과
아이디에 문자 입력시 아래와 같이 페이지 redirect 코드 때문에 다시 돌아온다.
'Spring' 카테고리의 다른 글
[스프링] 스프링 JdbcTemplate 사용하기 (0) | 2023.02.17 |
---|---|
[스프링] 스프링 MVC 게시판 (0) | 2023.02.17 |
[스프링 에러] An internal error occurred during: "Requesting Java AST from selection".com.ibm.icu.text.UTF16.isSurrogate(C)Z (1) | 2023.02.13 |
[스프링 에러] @PostConstruct @PreDestroy 에러 빨간 밑줄 (0) | 2023.02.13 |
[스프링 오류] CGLIB is required to process @Configuration classes. (0) | 2023.02.12 |