본문 바로가기

✨ Back-end173

깃(Git)에서 import project시 pom.xml 에러 해결법 porm.xml 우클릭 -> Maven -> Update Project 클릭 Force Update of Snapshots/Releases가 체크되어 있지 않는데, 체크해줘야한다. 얘는 Maven clean을 진행하고 다시 Update를 한다고 한다. 오랜 시간을 기다리고 나면, 빨간줄 에러가 해결된 것을 확인할 수 있다. 2023. 10. 16.
[Spring] 검증(validation) - 6 Bean Validation @어노테이션 build.gradle implementation 'org.springframework.boot:spring-boot-starter-validation' 위 implementation을 한줄 추가해주면 validation을 사용할 수 있다. 추가 후 refresh gradle project. MemberVO VO에가서 어노테이션 NotBlank와 Range, NotNull과 Max에 validation.constraints를 사용할 수 있는걸 볼 수 있다. @NotBlank - 빈값 + 공백만 있는 경우 허용하지 않는다. @NotNull - null을 허용하지 않는다. @Range(min = ~ , max = ~ ) - 범위 안의 값이어야 한다. @Max(99) - 최대 99까지만 된다. MemberCo.. 2023. 10. 10.
[Spring] 검증(Validation) -5 Validator 인터페이스 https://bright-landscape.tistory.com/407 [Spring] 검증(Validation) -4, rejectValue란? [Spring] 검증(Validation) -3 , FieldError와 properties값 가져오기 [Spring] 검증(Validation) -2 BindingResult MemberController BindingResult 데이터 바인딩 과정에서 발생하는 검증 오류를 보유하고 있는 객체이다. 주로 bright-landscape.tistory.com MemberValidator supports 메서드는 특정 클래스의 유효성 검사를 지원하는지 여부를 확인한다. 이 구현에서는 주어진 클래스가 MemberVO로부터 할당 가능한지 확인하고, 가능하다면 tru.. 2023. 10. 6.
[Spring] 검증(Validation) -4, rejectValue()와 typeMismatch [Spring] 검증(Validation) -3 , FieldError와 properties값 가져오기 [Spring] 검증(Validation) -2 BindingResult MemberController BindingResult 데이터 바인딩 과정에서 발생하는 검증 오류를 보유하고 있는 객체이다. 주로 폼 데이터를 도메인 객체에 바인딩할 때 사용된다. 예를 bright-landscape.tistory.com rejectValue() , reject() 를 사용하면 FieldError , ObjectError를 직접 생성하지 않고, 깔끔하게 검증 오류를 다룰 수 있다. rejectValue() 는 FieldError 이고 reject() 는 ObjectError이다. rejectValue(@Nullab.. 2023. 10. 5.
[Spring] 검증(Validation) -3 , FieldError와 properties값 가져오기 [Spring] 검증(Validation) -2 BindingResult MemberController BindingResult 데이터 바인딩 과정에서 발생하는 검증 오류를 보유하고 있는 객체이다. 주로 폼 데이터를 도메인 객체에 바인딩할 때 사용된다. 예를 들어, 사용자가 웹 폼을 통해 입력 bright-landscape.tistory.com FieldError의 생성자 (2가지) 1. public FieldError(String objectName, String field, String defaultMessage); 2023. 9. 27.
[Spring] 검증(Validation) -2 BindingResult MemberController BindingResult 데이터 바인딩 과정에서 발생하는 검증 오류를 보유하고 있는 객체이다. 주로 폼 데이터를 도메인 객체에 바인딩할 때 사용된다. 예를 들어, 사용자가 웹 폼을 통해 입력한 데이터를 서버로 전송하고 해당 데이터를 처리하기 위해 폼 데이터를 도메인 객체에 바인딩하려 할 때 사용된다. BindingResult 객체는 바인딩 시 발생할 수 있는 검증 오류를 저장하고 관리한다. 이를 통해 개발자는 검증 오류를 쉽게 확인하고 처리할 수 있다. 데이터 바인딩 중 오류가 발생하면, 해당 오류 정보를 BindingResult 객체를 통해 확인할 수 있다. 예를 들어, 아래와 같이 컨트롤러 메서드에서 @Valid 어노테이션을 사용하여 데이터 바인딩 및 검증을 수행하고, .. 2023. 9. 27.
Axios 개념 보호되어 있는 글 입니다. 2023. 9. 26.
[Spring] 자바스크립트 JSON 문자열, 컨트롤러에서 객체로 변환 javascript var encodedData = encodeURIComponent(JSON.stringify(data)); JSON.stringify()를 사용하여 JavaScript 객체를 JSON 문자열로 변환한 후, encodeURIComponent()를 사용하여 JSON 문자열을 URL에서 사용할 수 있는 형태로 인코딩한다. location.href = "/update?memberVO=" + encodedData; 생성된 인코딩된 데이터를 URL 파라미터로 사용하여 /update 엔드포인트로 이동한다. memberVO라는 이름으로 인코딩된 데이터를 전달하게 된다. 이렇게하여 /update 엔드포인트에서는 memberVO 파라미터를 받아 해당 데이터를 JSON 형태로 파싱할 수 있다. 컨트롤러 .. 2023. 9. 19.
[Spring] 검증(Validation) -1 타임리프(thymeleaf) join.html 타임리프를 써서 검증을 진행해보았다. th:object를 해서 MemberVO에 있는 데이터들을 th:field에 매핑시켜줄 수 있다. th:field를 사용하면 id, name, value 모두 자동으로 만들어준다. 맨 아래에 있는 완료 버튼을 누르면 submit하여 form의 action에 있는 joinCommit 컨트롤러를 찾아간다. MemberController 컨트롤러에 도착하게 되면, 매개변수로 MemberVO와 Model을 추가한다. MemberVO는 html에서 submit으로 name 값을 가져오기 위해 넣었고, Model은 html에 데이터를 뿌리기 위해 넣어준다. errors라는 변수를 Map객체로 만들어 주고, 위 코드와 같이 html의 input 태그에서 값이 입.. 2023. 9. 19.
[Spring] 스프링 부트에서 메시지 국제화, Gradle HTML 삽입 미리보기할 수 없는 소스 원래라면 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource 인터페이스를 빈으로 등록해야한다. 하지만, 스프링 부트를 사용하면 스프링 부트가 MessageSource를 자동으로 스프링 빈으로 등록한다. 따라서 위 코드는 없어도 된다. application.properties application.properties에서 spring.messages.basename=messages 를 작성한다. 이는 기본 값이라 작성하지 않아도 위 코드가 자동으로 등록된다. messages.properties messages.properties는 locale이 지정되지 않았을때 기본으로 출력할 properties이고, messages_en.properties는 l.. 2023. 9. 18.
[Spring] 부트에서 AOP 의존성 추가하고 사용하기 @Aspect [Spring] AOP 개념과 용어 8가지 AOP란? 관점지향 프로그래밍으로, 문제를 바라보는 관점을 기준으로 프로그래밍 하는 방법론 what when where 횡단관심사(cross-cutting-concerns) 흩어진 관심사를 Aspect로 모듈화하고 핵심적인 비즈니스 bright-landscape.tistory.com AOP에 대해 알아보고 싶다면 위 포스팅으로. build.gradle HTML 삽입 미리보기할 수 없는 소스 위 코드를 build.gradle에 추가시켜준다. application.properties에 가서 나는 로깅 레벨을 info로 찍을 것이기 때문에 위와 같이 코드를 짰다. LoggingAspect HTML 삽입 미리보기할 수 없는 소스 현재 위 코드에서는 @Before과 @A.. 2023. 9. 18.
[Spring] SqlSessionTemplate 대신 Mapper 인터페이스 사용 SqlSessionTemplate 사용한 ServiceImpl 클래스 여태까지 나는 ServiceImpl 클래스에서 항상 SqlSessionTemplate을 주입받아 사용해왔다. 하지만, 또 다른 방법이 있어 기록하고자한다. Mapper 인터페이스를 사용한 ServiceImpl 클래스 하지만 위 ServiceImpl을 보면 MemberMapper 라는 녀석을 주입받아 사용한다. 그리고 mapper 패키지에 MemberMapper라는 녀석이 보인다. 얘는 뭐하는 놈일까? MemberServiceImpl 클래스에서 private MemberMapper memberMapper 필드를 @Autowired로 주입하고 사용하는 이유는 Spring에서 데이터 액세스를 수행하는 객체에 대한 의존성을 주입하기 위해서이다.. 2023. 9. 18.