티스토리 뷰
- Spring Locale처리 - SessionLocaleResolver, LocaleChangeInterceptor 사용법
- Spring Locale처리 - AcceptHeaderLocaleResolver 사용법 (Browser Locale 변경방법)
이전에 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 정보를 가지고 올 수도 있다.
아주 간단하게 사용할수 있다.
끝!
'Framework > Spring' 카테고리의 다른 글
Spring BindingAwareModelMap argument type mismatch 오류 조치 (0) | 2021.07.15 |
---|---|
Spring Controller에서 외부 URL 호출하기 (0) | 2021.07.15 |
Springboot 에서 Servlet 설정하기 (0) | 2021.07.02 |
Springboot 기동시 javax.management.InstanceNotFoundException 오류 조치 (0) | 2021.06.30 |
Springboot application에 favicon.ico 달기 (0) | 2021.06.29 |
댓글