반응형
다국어를 처리하는 여러가지 방법 중 쿠키를 이용하는 방법을 알아보자.
Spring LocaleResolver
HTTP request를 통해 host로 접속 시에
browser의 cookie의 ip를 가지고 locale 정보를 확인한다.
package org.springframework.web.servlet;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Interface for web-based locale resolution strategies that allows for
* both locale resolution via the request and locale modification via
* request and response.
*
* <p>This interface allows for implementations based on request, session,
* cookies, etc. The default implementation is
* {@link org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver},
* simply using the request's locale provided by the respective HTTP header.
*
* <p>Use {@link org.springframework.web.servlet.support.RequestContext#getLocale()}
* to retrieve the current locale in controllers or views, independent
* of the actual resolution strategy.
*
* <p>Note: As of Spring 4.0, there is an extended strategy interface
* called {@link LocaleContextResolver}, allowing for resolution of
* a {@link org.springframework.context.i18n.LocaleContext} object,
* potentially including associated time zone information. Spring's
* provided resolver implementations implement the extended
* {@link LocaleContextResolver} interface wherever appropriate.
*
* @author Juergen Hoeller
* @since 27.02.2003
* @see LocaleContextResolver
* @see org.springframework.context.i18n.LocaleContextHolder
* @see org.springframework.web.servlet.support.RequestContext#getLocale
* @see org.springframework.web.servlet.support.RequestContextUtils#getLocale
*/
public interface LocaleResolver {
/**
* Resolve the current locale via the given request. Can return a default locale as
* fallback in any case.
* @param request the request to resolve the locale for
* @return the current locale (never {@code null})
*/
Locale resolveLocale(HttpServletRequest request);
/**
* Set the current locale to the given one.
* @param request the request to be used for locale modification
* @param response the response to be used for locale modification
* @param locale the new locale, or {@code null} to clear the locale
* @throws UnsupportedOperationException if the LocaleResolver implementation does not
* support dynamic changing of the locale
*/
void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale);
}
Spring에서 제공하는 LocaleResolver 인터페이스의 4가지 구현체
✔️AcceptHeaderLocaleResolver
웹 브라우저 단에서 전송받은 헤더의 Accept-Language를 locale으로 선택한다. setLocale() 메소드 사용 불가
✔️CookieLocaleResolver
setLocale()를 상속받아 구현한 메소드에서 cookie에 locale을 저장하고, cookie에서 저장된 locale 정보를 가져온다.
✔️SessionLocaleResolver
setLocale()를 상속받아 구현한 메소드에서 HTTP Session에 locale을 저장하고, Session에서 저장된 locale 정보를 가져온다.
✔️FixedLocaleResolver
지정된 locale로 설정한다. setLocale() 메소드 호출 시에는 UnsupportedOperationException 발생.
위의 방식 중 어떤 방식으로 locale을 저장할 지 서비스 특성에 맞게 정하여, 이를 상속받아 커스터마이징하면 된다.
반응형
'Spring > Spring Framework' 카테고리의 다른 글
SpringFramework에서의 싱글톤 전략 (0) | 2021.01.02 |
---|---|
Restful API (0) | 2020.11.06 |
Rest API (0) | 2019.12.16 |
Spring Task (0) | 2019.10.04 |
Spring Scheduling (0) | 2019.09.27 |