본문 바로가기

분류 전체보기148

스프링에서 Exception 핸들러 매핑하기 @ExceptionHandler WelcomeController 클래스에 있는 두 메서드는 모두 @ExceptionHandler 어노테이션을 붙였습니다. 첫 번째 handle 메서드는 CustomException 예외 처리 전용 메서드이며, 두 번째 handleDefault 메서드는 일반 예외 처리 메서드 역할을 합니다. 두 메서드 모두 에러 상황에 따라 맞는 렌더링 할 뷰 이름을 반환하고 있습니다. @ExceptionHandler는 특정 컨트롤러 안에서 예외가 발생한 경우에만 예외를 매핑하는 문제점이 있습니다. @Controller public class WelcomeController { @ExceptionHandler(CustomException.class) public String handle(C.. 2019. 7. 25.
Thymeleaf 템플릿 엔진에서 로케일 텍스트 메시지 처리 로케일 관련 텍스트 메시지 파일 생성 로케일 관련 텍스트 메시지 파일은 외부화 해서 웹 페이지와 독립적으로 개발하는 것이 효율적입니다. 스프링은 MessageSource 인터페이스를 구현한 메시지 소스로 텍스트 메시지를 해석할 수 있다. messageSource를 Bean으로 등록하면, DispatcherServlet이 자동 감지하여 등록합니다. MessageSource 인터페이스의 구현체인 ResourceBundleMessageSource 클래스는 로케일마다 따로 리소스 번들을 생성하고 이를 이용하여 메시지를 해석합니다. @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceB.. 2019. 7. 25.
Klaytn 블록체인 애플리케이션 만들기 예제 Klaytn 블록체인 애플리케이션 예제 Klaytn 테스트넷 Baobab에 간단한 블록체인 애플리케이션을 만들어보는 예제 덧셈 예제 프로젝트로 주어진 시간 안에 덧셈 문제의 정답을 맞추면 클레이를 지급 받는다. 예제 프로젝트는 인프런 강의를 학습하고 정리한 것입니다. 자세한 설명은 인프런 강의를 참고해주세요. 개발 환경 설정 Node.js 설치 npm install Install Truffle sudo npm install -g truffle@4.1.15 Git 설치 Visual Studio Code 설치 소스코드 가져오기 git clone https://github.com/jayden-lee/klaytn-example.git Baobab 테스트넷 계정 생성 Klaytn TestNet에서 계정을 생성한다.. 2019. 7. 25.
Thymeleaf 에서 현재 로케일 값 출력하기 쿠키값에 따라 로케일 해석 CookieLocaleResolver 클래스는 사용자 브라우저의 쿠키값에 따라 로케일을 해석한다. 해당 쿠키가 없으면, accept-language 헤더로 기본 로케일을 설정한다. LocaleChangeInterceptor 클래스는 Http 요청에 특정한 매개변수 값이 존재하는지 확인하고, 해당 값으로 사용자 로케일을 변경한다. @Configuration public class WebMvcConfiguration implements WebMvcConfigurer { private static final Locale DEFAULT_LOCALE = new Locale("en"); @Override public void addInterceptors(InterceptorRegistry.. 2019. 7. 25.
JDBC 드라이버에서 MySQL 데이터베이스 문자 인코딩 설정 JDBC 드라이버를 이용해서 MySQL 데이터베이스에 연결할 때, 프로퍼티에 따로 값을 설정하지 않으면 문자 인코딩(characterEncoding) 값은 자동으로 감지합니다. 연결 프로퍼티에 문자 인코딩 설정 Properties properties = new Properties(); properties.put("user", "USER_NAME"); properties.put("password", "PASSWORD"); properties.put("characterEncoding", "UTF-8"); Connection connection = DriverManager.getConnection("JDBC_URL", properties); MySQL to Java Encoding Name Translatio.. 2019. 6. 23.
데이터 암호화를 위한 JPA Attribute Converter User 클래스에서 juminNumber 속성 값을 테이블에 저장할 때 암호화하는 예제입니다. User Entity 생성 @Entity @Table(name = "USER") @DynamicInsert @DynamicUpdate @Getter public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "NAME", length = 50, nullable = false) private String name; @Column(name = "JUMIN_NUMBER", length = 100, nullable = false) @Convert(converter = StringCryp.. 2019. 6. 10.