반응형

웹 개발 273

Spring i18n ( 다국어 ) - Locale Resolver

Locale Resolver의 종류 1. AbstractLocaleContextResolver http의 헤더의 Accept-Language에 의해 선택된다. setLocale이 지원되지 않는다. 오직 브라우저 설정에 의해서만 결정 2. SessionLocaleResolver 처음 들어갈 때는 AccpetHeaderLocaleResolver처럼 브라우저의 언어 설정에 의한 Accept-Language로 값이 결정된다. 단, setDefaultLocale을 설정한다면 이 값이 최우선 세션으로 저장되며 org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE 라는 세션 속성 이름으로 클래스를 시리얼라이징 되어 저장 3. CookieLocaleRes..

웹 개발 2019.11.17

[web] 인코딩 ( 한글 깨짐 )

문자 인코딩 개요 웹 페이지의 소스를 들여다보면 태그를 볼 수 있습니다. 바로 이 태그 내부에 문자 인코딩 설정을 태그로 작성하게 됩니다. 여기서 는 해당 웹 페이지의 여러 메타 정보를 담고 있게 됩니다. 이 정보들은 웹브라우저에 다양한 정보를 전달하는데 현재 웹 사이트 방문자에게 보여지게 될 내용에도 영향을 주게 됩니다. 인코딩을 선언하는 이유는? 웹 페이지의 인코딩 방식을 선언하는 이유는 현재 사용중인 언어셋 정보를 정확히 알려주기 위함입니다. 이 메타정보가 없어도 브라우저는 대략적으로 언어셋을 추측할 수 있지만, 잘못된 예측으로 다른 인코딩 방식이 적용될 수 있습니다. 즉, 인코딩을 선언하지 않으면 문자깨짐 현상 등 심각한 오류가 나타날 수 있게 됩니다. 인코딩 선언 방법 HTML5 HTML4 XH..

웹 개발 2019.11.16

Apache cxf를 이용한 SOAP XML 통신 Client

업무를 하다보면 업체끼리 또는 프로그램끼리 API 통신을 해야 할 경우가 많습니다. API 통신에는 크게 SOAP과 REST가 있는데 SOAP의 대안으로 나온 것이 RESTful 입니다. 위키에는 아래와 같이 정의되어 있습니다. SOAP SOAP(Simple Object Access Protocol)은 일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. REST REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. REST 원리를 따르는 시스템은 종종 RESTful이란 용어로 지칭된다. 조금 더 내용을 보충하자면 S..

웹 개발 2019.11.15

Java EE 개발자는 항상 -server 옵션을 켜 두는 것이 좋다.

JVM에 -server 옵션을 지정하면 일반적인 상태(client 상태) 보다 더 많은 최적화 방법을 동원하는데, 예를 들어 반복문 내부에서 전혀 값이 바꾸지 않는 내용을 반복문 밖으로 빼내는 등의 최적화 작업이 일어난다. 따라서 -server 옵션을 지정하지 않은 상태로 개발이나 테스트 과정을 진행하고 실 서버에 적용할 때에만 -server 옵션을 지정하면, 프로그램이 예상했던 대로 작동하지 않을 가능성이 있다. 여기 나온대로 개발자는 항상 운영 환경과 동일한 VM 설정을 해야 한다. 같은 Java 코드라도 -server 냐 -client 냐에 따라 최적화 방식이 달라지고 코드가 다르게 작동한다. 이와 같은 현상에 대해 Effective Java 2nd ed. Item 66에서도 다루고 있다. -cli..

웹 개발 2019.11.15

[spring boot] controller 등의 클래스명을 동일하게 사용하는 방법

일반적으로 Spring에서 @Controller를 사용하면 클래스명과 같은 이름으로 Bean이 생성됩니다. 예를 들어 UserController의 경우 userController로 생성됩니다. 그런 이유로 아래와 같이 서로 다른 패키지에 같은 이름의 클래스가 존재한다면 에러가 발생하게 됩니다. com.user 패키지의 RequestContoller com.dept 패키지의 RequestController 같은 이름으로 클래스를 생성하고 싶을 경우 별도의 작업을 해줘야 합니다. 1. CustomBeanNameGenerator 생성 import java.util.Set; import org.springframework.beans.factory.annotation.AnnotatedBeanDefinition; ..

웹 개발 2019.09.23

[spring boot] war를 만들때 rootAbsolutePath가 null일 경우

@Component public class CommonMessageContainer { @Inject RootAbsolutePath rootAbsolutePath; @Autowired WebApplicationContext webApplicationContext; public void init() throws Exception { // 그냥 run 할 때에는 rootAbsolutePath가 있으나, // war 파일을 만들때는 webApplicationContext에서 값을 넣어줘야 함. rootAbsolutePath.setRootAbsolutePath(webApplicationContext.getServletContext().getRealPath("/")); System.out.println(rootA..

웹 개발 2019.09.23
728x90
반응형
loading