shiro spring mvc 국제 화 선택 로그 인 언어
우선, spring 국제 화 과정:
STEP 1.
beans. xml 에 message Source bean 설정:
classpath:i18n/messages
i18n / 아래 messagesen_US. properties 와 messageszh_CN. properties 같은 국제 화 파일.이렇게 하면 XmlWebApplication Context 는 기본 적 인 국제 화 능력 을 가지 게 되 었 습 니 다. getMessage () 방법 을 사용 하면 기본 언어의 텍스트 를 얻 을 수 있 습 니 다. 다른 언어 를 얻 으 려 면 Locale 인 자 를 제공 해 야 합 니 다.
STEP 2.
spring - mvc. xml 에서 locale Resolver bean 설정:
이렇게 해서 Dispatcher Servlet 는 locale Resolver 를 설치 했다.Session Locale Resolver 의 기능 은 session 에서 특수 한 속성 값 을 찾 는 것 입 니 다. 이 값 은 사용자 가 선택 한 Locale 입 니 다. 발견 하면 이 Locale 을 이번 요청 의 Locale 로 합 니 다.이 를 실현 할 때 로그 인 할 때 session 에 사용자 가 선택 한 Locale 을 설정 할 수 있 습 니 다. Session Locale Resolver 를 추가 하면 Dispatcher Servlet 은 이 사용자 가 요청 할 때마다 이 Locale 을 사용 할 수 있 습 니 다. 그러면 getMessage () 의 Locale 인 자 는 있 습 니 다.
STEP 3.
앞의 두 단 계 는 어렵 지 않 습 니 다. 어 려 운 것 은 어떻게 shiro 와 통합 하 는 것 입 니까?
제 가 썼어 요.
/login = localeFilter, authc
/** = user
Shiro Filter Factory Bean 은 Filter 를 자동 으로 발견 하고 Filter 체인 에 넣 는 기능 이 있 습 니 다.여기에 소감 이 있 습 니 다. shiro 에서 인증 은 javax. servlet. Filter 인터페이스 로 이 루어 졌 기 때문에 웹 에서 일반적인 Filter 는 shiro 의 인증 체인 과 잘 통합 되 어 적어도 인터페이스 가 익숙 합 니 다.위 에서 locale Filter bean 을 사용자 정의 하고 / login = locale Filter, authc 로 설정 합 니 다. 이것 은 우리 의 locale Filter 를 먼저 실행 한 다음 shiro 기본 authc 를 실행 하면 session 에 사용자 가 선택 한 언어 를 저장 하 는 곳 인 locale Filter 를 찾 을 수 있 습 니 다.
코드 는 간단 합 니 다:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (request.getParameter("locale") != null){
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
Locale locale = null;
switch (request.getParameter("locale")){
case "zh_CN":
locale = Locale.CHINA;
break;
case "en_US":
locale = Locale.US;
break;
}
session.setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
}
chain.doFilter(request, response);
}
코드 의 기능 은 session 에 사용자 가 선택 한 언어 를 설정 하 는 것 입 니 다.locale Filter 는 authc 뒤에 놓 을 수 없습니다. 기본 authc 가 로그 인 에 성공 하면 뒤의 Filter 체인 이 실행 되 지 않 고 앞 에 만 놓 을 수 있 기 때 문 입 니 다.이렇게 하면 사용자 가 로그 인 할 때 언어 를 선택 할 수 있다.
왜 이렇게 귀 찮 으 세 요? request 에서 locale 인 자 를 직접 가 져 오 면 되 지 않 겠 습 니까?이것 은 안 됩 니 다. shiro 로그 인 에 성공 하면 로그 인 성공 페이지 url 로 방향 을 바 꿉 니 다. 방향 을 바 꾼 후에 request 는 로그 인 할 때 보 내 는 locale 인 자 를 얻 을 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바에서 국제화에 사용되는 locale 클래스 상세 설명1. Locale 소개 Locale은 지역을 나타냅니다.모든 Locale 대상은 특정한 지리, 정치, 문화 지역을 대표한다. Locale 객체의 일반적인 작성 방법 세 가지를 설명합니다. (1) 기본 Locale 가...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.