Spring (38) 썸네일형 리스트형 [Spring] BindingFailure BindingFailureType - Boolean역할 - 이 에러가 바인딩 실패인지, 검증 실패인지 구분해준다. /** * Create a new FieldError instance. * @param objectName the name of the affected object * @param field the affected field of the object * @param rejectedValue the rejected field value * @param bindingFailure whether this error represents a binding failure * (like a type mismatch); else, it is a validation failure * @para.. [Spring] @ServletComponentScan @ServletComponentScan@SpringBootApplicationpublic class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); }}스프링에서 서블릿을 사용하도록 환경을 만들 때 사용하는 @ServletComponentScan을 살펴보자. 스프링 하면 빼놓을 수 없는 것이 스프링 빈이다. 스프링 빈에 대해 공부를 해보았다면 @ComponentScan에 대해 알 것이다. 그렇다면 앞에 서블렛이 붙은 @ServletComponentScan은 무엇일까? package org.springframework.boot.web.servle.. [Spring] 필터를 이용한 로그인 처리 필터란?필터는 서블릿이 제공하는 기능으로 말 그대로 무언가를 걸러주는 역할을 한다.웹사이트에서는 기본적으로 로그인 후에 다양한 기능들을 사용할 수 있지만 만약 로그인을 하지 않고 바로 내가 들어가고 싶은 기능의 URI를 입력해서 들어간다면 로그인을 하는 의미가 없어진다. 이는 공통 관심사 (cross-cutting concern)와도 연관이 있는데 웹사이트, 애플리케이션을 이용할 때 그 기능들을 이용하기 위해서는 로그인처럼 자신을 인증해야 한다. 이는 여러 기능들이 인증이라는 부분에 대해 관심을 가지고 있다고 말한다. 공통 관심사를 해결하기 위해서는 스프링의 AOP를 사용할 수도 있지만 웹과 관련된 부분은 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 서블릿 필터 흐름HTTP 요청 → WAS .. [Spring] 쿠키와 세션을 이용한 로그인, 로그아웃 @PostMapping("/login") public String loginV3(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletRequest request) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if (loginMember == null) { bindingResult.reject("loginFail", .. [Spring] 쿠키와 세션을 이용한 로그인 처리 로그인 처리 방식1. 웹 브라우저에서 LoginId, password로 로그인한 POST 요청을 서버로 전송2. 서버는 회원 저장소에서 해당 로그인 정보와 일치하는 멤버가 있는지 찾는다.3. 일치하는 멤버가 있으면 세션 저장소에 SessionId와 value(Member)를 생성한다. (이때 sessionId는 UUID로 추정 불가능하게 해야 한다.)4. sessinId를 HTTP 응답에 쿠키로 같이 보내서 쿠키 저장소에 저장한다.5. 로그인 이후 클라이언트는 항상 MySessionId를 쿠키 저장소에서 빼서 서버로 전달하고 서버는 쿠키 정보로 세션 저장소를 조회해서 세션 정보를 사용한다.세션 관리의 3가지 기능1. 세션 생성sessinId 생성 (UUID)세션 저장소에 sessionId와 보관할 값 저.. [Spring] BindingResult / FieldError / ObjectError BindingResult는 어떠한 로직을 검증하는 데 쓰이는 인터페이스로 주로 에러가 있는지 확인할 때 쓰인다.공식 문서를 통해 알아보자. /** * General interface that represents binding results. Extends the * {@link Errors interface} for error registration capabilities, * allowing for a {@link Validator} to be applied, and adds * binding-specific analysis and model building. * * Serves as result holder for a {@link DataBinder}, obtained via * the {@link .. [Spring] 메시지, 국제화 스프링에서 메시지 기능은 중요한 단어들을 한 파일에 모아놓고 관리하는 기능이다.이러한 기능이 쓰이는 경우는 예를 들어서 우리가 코드에 A,B,C 라는 단어들을 넣어서 코드를 짰는데 누군가가 이를 D,E,F라는 단어로 싹 다 바꿔달라고 하면 우리는 수십개의 HTML 파일들을 일일이 찾아가며 수정해야 한다. 이러한 경우를 방지하게 위해서 중요한 단어들을 한 파일에 모아서 메시지 관리용 파일을 만드는 것이다. label.item=상품label.item.id=상품 IDlabel.item.itemName=상품명label.item.price=가격label.item.quantity=수량page.items=상품 목록page.item=상품 상세page.addItem=상품 등록page.updateItem=상품 수정butt.. [Spring] 타임리프 - 리터럴 타임리프에서 리터럴을 사용할 때를 보겠습니다.타임리프에서 리터럴은 아래와 같습니다.문자 : 'hello', 'world'숫자 : 10 20 30boolean : true, falsenull : null문자는 작은 따옴표로 감싸야 하는데 이는 상당히 귀찮습니다. 그래서 띄어쓰기가 없다면 그냥 하나의 토큰으로 보고 작은 따옴표가 아닌 " "로 감싸도 됩니다. -- O -- X이 경우는 공백이 있기 때문에 작음따옴표로 감싸주어야 합니다. -- O리터럴 'hello' + ' world!' = 'hello world!' = 'hello ' + ${data} = 리터럴 대체 |hello ${data}| = 리터럴 대체는 | |로 리터럴을 감싸는 리터럴 대체 문법인데 1,2,3번째 코드보다 훨씬 편리.. 이전 1 2 3 4 5 다음