You will be fine

<Spring> 10. internationalization, Spring JSON

by BFine
반응형

1. internationalization(i18n)

  • 웹서비스를 할 때  다국어 처리가 필요한 경우가 발생한다. --> Spring 다국어 처리는 i18n 이용한다.

  • 언어별로 properties 만들어서 그안에 "이름=값" 형태로 저장한다 ( 브라우저가 접근 할 수 없게 WEB-INF 밑에 생성한다 )

org.springframework.context.support.ReloadableResourceBundleMessageSource < properites 값을 불러오는 역할 >

org.springframework.web.servlet.i18n.SessionLocaleResolver < locale은 ( httpsession에 있는 브라우저의 언어정보) 를 불러오는 역할 > 

  • properties 파일의 이름 형식은 "이름_**( 언어코드 [ex) en, ko] ).properties" 규칙이 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 경로에 이름까지 설정-->
<beans:bean id="messageSource" 
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="basenames">
<beans:list>
 <beans:value>/WEB-INF/msgs/msg</beans:value>
</beans:list>
</beans:property>
</beans:bean>

<!--bean 객체 생성-->
<beans:bean id="localeResolver" 
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
</beans:bean>
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
======================java===============================
@Autowired
SessionLocaleResolver localeResolver;
@Autowired
MessageSource messageSource;
 
@RequestMapping(value="/internationalization",method=RequestMethod.GET)
    public String internationalization(Locale locale){
        //매개변수 locale은 요청브라우저의 언어 설정를 가져온다(locale 출력으로 확인가능)
//messageSource.getMessage("title",null[new String[]{"1"}],"default",locale));
        //locale에 해당하는 언어를 인식하고  title 값을 불러오는 것 ,  없으면 default
        // 2번째는 전달 파라미터
            return "internationalization";
      }
 
cs


1
2
3
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>// 추가
title : <spring:message code="title"/> </br> // 출력시
cs

  • interceptors를 통해서 언어 설정 변경이 가능 하다.

1
2
3
4
5
6
7
8
<!-- Servlet의 filer와 비슷한 역할, Lang 값의 요청이 들어오면 
Spring 컨테이너가 알아서 처리한다 -->
<interceptors>
<beans:bean id="localeChangeIntercetor" 
class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
 <beans:property name="paramName" value="Lang"></beans:property>
</beans:bean>
</interceptors>    
cs

  • Lang 값을 원하는 언어로 변경 요청하면 다국어 처리가 가능하다.(GET, POST)

실행




2. Spring JSON

  • Spring JSON 변환은 Spring 컨테이너가 자동으로 처리해준다, pom.xml에서 jackson-databind dependency 추가 필요

  • 추가 후 @ResponseBody를 JSON으로 변경할 return 값을 가진 Method 위에 설정한다.

1
2
3
4
5
6
7
8
// JSON으로 바꿔달라는 요청 -> convert가 변경
// 요청클라이언트 -- json 변경작업이 필요함
    @RequestMapping("/jsontest")
    @ResponseBody // Spring 컨테이너에 JSON형태로 변경요청
    public Test test(){// Converter가  변경 처리
        return new Test("Hello""World");
    } 
    
cs

    save image 크롬으로 json 형태 변환 확인 가능하다

  • ajax로 Spring 컨테이너가 json 을 처리하므로 parse 없이 연동 가능하다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
function test(){
    $.ajax({
        type : "post",
        url : "<%=request.getContextPath()%>/jsontest",
        success: function(server_result) {
            //JSON.parse(server_result); 스프링이 자동으로 처리
            $("div").append(server_result.id+"</br>")
            $("div").append(server_result.pw)
        }
    });
}
<div></div>
<a href="javascript:test()">ajax</a> // function 실행 
cs

실행


save image

반응형

'공부(2018~2019) - 스킨변경전 > Spring' 카테고리의 다른 글

<Spring> 12. Mybatis  (0) 2018.05.17
<Spring> 11. File Upload&Download  (0) 2018.05.15
<Spring> 9. MVC pattern  (0) 2018.05.09
<Spring> 8. AOP  (0) 2018.05.04
<Spring> 7. Annotation  (0) 2018.05.03

블로그의 정보

57개월 BackEnd

BFine

활동하기