스프링 (12) 썸네일형 리스트형 aws ec2(ami)의 nginx에 SSL인증서 받아서 https 통신하기 현상 certbot을 사용하기 위해 epel-release를 하였지만 해당 패키지를 yum에서 찾지 못했다고 나왔다. yum의 동작방식은 다음과 같다. 정확한 패키지가 로컬yum 저장소에 이미 존재한다면 인터넷 연결 없이 바로 해당 패키지를 설지할 수 있다. 만약 패키지의 의존성이 다른 패키지에 의해 충족되어야 한다면 필요한 모든 의존 패키지를 인터넷를 통해서 다운로드 한다. 요약하면 현재 나의 서버에 존재하는 yum 저장소에는 epel-release 패키지가 존재하지 않는다. 그렇기 때문에 에러가 난 것이다. 고치는 법 이를 해결하기 위해서는 epel-release가 있는 yum저장소를 나의 로컬 서버에 추가해주고 이를 설치하면 된다. 결론을 말하면 아마존(AMI3)의 보안정책이 바뀌면서 amazone.. 스프링 - 카프카 MessageConversionException 오류 해결법 현상 카프카에 있는 데이터를 서버로 가져와 객체로 다시 매핑하는 과정에서 다음과 오류가 발생한다. Caused by: org.springframework.messaging.converter.MessageConversionException: failed to resolve class name. Class not found [um.uamserver.domain.dto.AdsbData] 원인 데이터를 보내는 송신측에서 카프카로 jsonSerializer를 통해 객체를 직렬화해서 보낼때 패키지 정보까지 헤더에 같이 보내고 데이터를 받는 수신 측에서는 카프카에서 jsonDeserializer를 통해 패키지 정보까지 같이 역직렬화를 한다. 이때 만약 서로 송수신측의 데이터 패키지가 다르다면 오류가 발생한다. 고치는.. 로그인 처리1 - 쿠키, 세션 : 로그인 처리하기 - 쿠키 사용 인프런 영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 쿠키를 사용해 로그인, 로그 아웃을 구현하기 로그인 쿼리 파라미터를 계속 유지하면서 보내는 것은 상당히 귀찮고 까다로움. 만약 로그인에 성공한다면 HTTP응답에 쿠키를 담아서 브라우저에 전달한다. 그러면 브라우저는 앞으로 해당 쿠키를 서버에게지속해서 보내준다. 서버에서 쿠키 생성하는 구조도 클라이언트가 쿠키 전달해주는 구조도 쿠키에는 영속 쿠키와 세션 쿠키가 있다. 영속 쿠키는 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키는 만료 날짜를 생략하면 브라우저가 종료시까지 유지 쿠키 생성로직 로그인에 성공하면(입력폼에서 들어온 id와 pw가 존재하는 회원이라면) 쿠키를 생성하고 HttpServeletResponse 에 담는다. .. 로그인 처리1 - 쿠키, 세션 인프런 영한님의 스프린mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 도메인이 가장 중요하다 향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 있어야 한다. 검증2 - Validation : HTTP 메시지 컨버터 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 참고 @ModelAttribute는 HTTP 요청 파라미터(URL 쿼리 스트링, POST Form)를 다룰 때 사용한다. @RequestBody는 HTTP Body의 데이터를 객체로 변환할 때 사용한다. 주로 API JSON 요청을 다룰 때 사용한다. @RequestBody의 경우 주로 api를 통해 데이터를 주고 받는데 이때 다음과 같은 경우로 나뉜다. 성공 요청 : 성공 실패 요청 : JSON을 객체로 생성하는 것 자체가 실패함 검증 오류 요청 : JSON을 객체로 생성하는 것은 성공했고, 검증에서 실패함 만약 HttpMessageConverter에서 요청 JSON을 도메인 객체로 생성하는데 실패하면 컨트롤러 자체가 호출되.. 검증2 - Validation : Form 전송 객체 분리 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? BeanValidation의 기능인 groups를 실무에서는 잘 사용하지 않는다. 폼에서 전달하는 데이터와 도메인 객체와 딱 맞는 상황이 적기 떄문. 전체적인 흐름 폼 데이터 전달에 도메인 객체 사용 HTML Form → 도메인 객체 → 컨트롤러 → 도메인객체 → Repository 장점 : 중간에 Item을 만드는 과정이 없어서 간단하다 단점 : 간단한 경우에만 적용할 수 있고 수정시 검증이 중복될 수 있고, groups를 사용해 복잡도가 올라간다. 폼 데이터 전달을 위한 별도의 객체 사용 HTML Form -> 등록용 폼 객체-> Controller -> 도메인 객체생성 -> Repository 장점 : 전송하는 폼의 데이.. 검증2 - Validation : Bean Validation 인프런 김영한 님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? BeanValidation - 소개 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것이 바로 BeanValidation 검증 애노테이션 정의 및 사용법 @NotBlank : 빈값 + 공백만 있는 경우를 허용하지 않는다. @NotNull : null 을 허용하지 않는다. @Range(min = 1000, max = 1000000) : 범위 안의 값이어야 한다. @Max(9999) : 최대 9999까지만 허용한다. @Data public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max .. 검증1 - Validation : Validator 분리1,2 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? Validator 분리1 스프링은 검증을 체계적으로 제공하기 위해 다음 인터페이스를 제공한다. public interface Validator { boolean supports(Class clazz); void validate(Object target, Errors errors); } supprort(){} : 해당 검증기를 지원하는 여부 확인 validate(Object target, Errors errors) : 검증 대상 객체와 BindingResult Validator 분리2 WebDataBinder는 스프링의 파라미터 바인딩의 역할을 해주고 검증 기능도 내부에 포함한다. @InitBinder public void ini.. 검증1 - Validation : 오류 코드와 메시지 처리1~6 BindingResult 가 제공하는 rejectValue() , reject() 를 사용하면 FieldError , ObjectError 를 직접 생성하지 않고, 깔끔하게 검증 오류를 다룰 수 있다. 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 오류 코드와 메시지 처리1 FieldError는 두가지 생성자를 제공한다. public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[].. 검증1 - Validation : BindingResult1, 2, FieldError GlobalError 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 스프링에서는 검증 오류처리방법으로 BindingResult를 제공한다. 💡주의! BindingResult 파라미터의 위치는 @ModelAttribute 다음에 와야 한다 필드 오류 - FieldError if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", "상품 이름은 필수입니다.")); } FieldError 생성자 요약 필드에 오류가 있으면 FieldError 객체를 생성해서 bindingResult 에 담아두면 된다. objectName : @ModelAttribute이름 field : .. 이전 1 2 다음