<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 |
크롬으로 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 |
실행
반응형
'공부(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