티스토리 뷰

이전에 Spring에서 주로 쓰이는 Locale 처리 방법에 대해서 알아보았다. 이번에는 Cookie를 이용한 Locale을 정의하는 CookieLocaleResolver에 대해 이야기하려한다. SessionLocaleResolver에 대한 이해가 있다면 이 CookieLocaleResolver는 아주 쉽게 이해할 수 있다. 

CookieLocaleResolver는 말 그대로 Cookie를 이용해서 Locale 정보를 담는 것이다. setLocale()을 통해 Locale 정보를 담은 Cookie를 생성하고 resolveLocale()에서는 Cookie로부터 Locale정보를 가지고 온다. 


@Configuration

@Bean 
public LocaleResolver localeResolver() {
    CookieLocaleResolver localeResolver = new CookieLocaleResolver();
    localeResolver.setCookieName("lang");
    localeResolver.setDefaultLocale(new Locale("ko"));
    localeResolver.setCookieHttpOnly(true);
    return localeResolver;
}

설정에서는 이전에 설정했던 SessionLocaleResolver 대신에 이녀석을 끼워 넣으면 된다. localeResolver의 속성은 다음과 같은 것들이 있으니 참조해서 사용하면 된다. 

 

다음과 같은 속성을 사용할 수 있다.

property default desc
cookieName classname + locale 쿠키명
cookieMaxAge integer.MAX_INT 쿠키 유효 시간, -1 로 해두면 브라우저를 닫을 때 없어짐
cookiepath / Path 를 지정하면 해당하는 Path와 그 하위 Path 에서만 참조
cookieDomain   쿠키 도메인 
cookieSecure false 쿠키 보안 여부

 

Locale Set (Controller)

@Autowired
LocaleResolver localeResolver;

@RequestMapping(value = "/changeLocale")
public void changeLocale(String language, HttpServletRequest request, HttpServletResponse response) {
    Locale locale = new Locale(language);
    localeResolver.setLocale(request, response, locale);
}

위에서 언급한대로 setLocale로 Cookie에 담을 수 있다. 

 

Locale get (Util)

public static Locale getLocale(HttpServletRequest request) {
    Locale locale = localeResolver.resolveLocale(request);
    return (locale != null) ? (Locale)locale : getDefaultLocale();
}

또한 resolveLocale을 사용해서 Cookie에 담긴 Locale 정보를 가지고 올 수도 있다. 

아주 간단하게 사용할수 있다. 

 

끝!

 

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
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