백준 1181 단어정렬문제알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.길이가 짧은 것부터길이가 같으면 사전 순으로단, 중복된 단어는 하나만 남기고 제거해야 한다.입력첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.시간 제한 및 메모리 제한2초, 256MB문제 해결 키Arrays.sort(arr, new Comparator(){ @Override public int compare(String o1, String o2){ return 0; })코드package main..
분류 전체보기
글로벌 Validator 설정과 @Valid 애노테이션글로벌 Validator 적용방법설정 클래스에서 WebMvcCOnfigurer의 getValidator() 메서드가 Validator 구현 객체를 리턴하도록 구현글로벌 범위 Validator가 검증할 커맨드 객체에 @Valid 애노테이션 적용package config;import org.springframework.context.MessageSource;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.support.ResourceBundleM..
Errors에 에러 코드를 추가하면 JSP 는 스프링이 제공하는 form:errors> 태그를 사용해서 에에 해당하는 메시지를 출력 : : : : "> form:errors> 태그의 path 속성에러 메시지를 출력할 프로퍼티 이름을 지정에러 코드에 해당하는 메시지 코드를 찾을 때의 규칙1) 에러코드 + . + 커맨드객체이름 + "." + 필드명2) 에러코드 + . + 필드명3) 에러코드 + . + 필드타입..
Error 인터페이스가 제공하는 에러 코드 추가 메서드reject(String errorCode);reject(String errorCode, String defaultMessage);reject(String errorCode, Object[] errorArgs, String defaultMessage);rejectValue(String field, String errorCode);rejectValue(String field, String errorCode, String defaultMessage);rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage);에러 코드에 해당하는 메시지가 {0} 이나 {1} 과..
커맨드 객체의 값 검증의 중요성폼에 입력한 값을 검증하지 안흥면 잘못된 값이 시스템에 입력되어 어플리케이션이 비정상 동작할 수 있음에러 메시지를 제대로 보여주지 않으면 사용자는 서비스를 제대로 이용할 수 없음스프링이 제공하는 해결 방법커맨드 객체를 검증하고 결과를 에러 코드로 저장JSP에서 에러 코드로부터 메시지를 출력커맨드 객체 검증과 에러 코드 지정하기스프링 MVC에서 커맨드 객체의 값이 올바른지 검사하기 위해 사용하는 인터페이스org.springframework.validationValidatorErrors객체를 검증할 때 사용하는 Validator 인터페이스package org.springframework.validation;public interface Validator { boolean ..
스프링 메시지 태그에서 인자를 처리하는 방법에 대해 알아보겠습니다.spring:message> 태그의 메시지 인자 처리properties 파일register.done={0}님, 회원 가입을 완료했습니다.{0} : 프로퍼티 값 부분인덱스 기반 변수 중 0번 인덱스(첫 번째 인덱스)의 값으로 대치되는 부분 표시MessageSource의 getMessage()는 인덱스 기반 변수를 Object 배열 타입의 파라미터를 사용String getMessage(String code, Object[] args, String defaultMessage, Locale loacle);String getMessage(String code, Object[] args, Locale locale);get..
스프링은 로케일(지역)에 상관없이 일관된 방법으로 문자열(메시지)을 관리할 수 있는 MessageSource 인터페이스를 정의하고 있습니다.MessageSource 인터페이스의 정의특정 로케일에 해당하는 메시지가 필요한 코드는 MessageSrouce의 getMessage() 메서드를 이용해서 필요한 메시지를 가져와서 사용합니다.package.org.springframework.context;import java.util.Locale;public interface MessageSource{ String getMessage(String code, Obejct[] args, String defaultMessage, Locale locale); String getMessage(Strin..
사용자 화면에 보일 문자열은 JSP나 html등에 직접 코딩하는 경우예를 들어 로그인 폼을 보여줄 때 '아이디', '비밀번호' 등의 문자열을 직접 삽입하는 경우이메일이메일 이라는 문자열을 사용하는 모든 JSP 파일을 모두 찾아서 변경해야하는 문제점다국어 지원 문제 : 전 세계대상 서비스의 경우 사용자의 언어 설정에 따라 이메일, E-mail과 같이 각 언어에 맞게 문자열을 표시해야하는 문제점해결법 : 뷰 코드에서 사용할 문자열을 언어별로 파일에 보관하고 뷰 코드는 언어에 따라 알맞은 파일에서 문자열을 읽어와 출력문자열을 담은 메시지 파일을 작성한다.메시지 파일에서 값을 읽어오는 MessageSource 빈을 설정한다.JSP 코드에서 태그를 사용해서 메시지를 출력한다.src/main/resources/m..
Spring MVC에 GET, POST 방식에 동일 이름 커맨드 객체 사용하는 방법을 알아보겠습니다. form 태그를 사용하려면 커맨드 객체가 반드시 존재해야 합니다. 폼 표시 요청이 왔을 때에도 커맨드 객체를 생성해서 모델에 저장해야 합니다. RegisterController 클래스의 handleStep2() 메서드는 다음과 같이 Model에 직접 객체를 추가합니다. @PostMapping("/register/step2")public String handleStep2(@RequestParam(value = "agree", defaultValue = "false") Boolean agree, Model model) { if(!agree) { return "register/step1"; ..
ModelAndView를 통한 뷰 선택과 모델을 전달해 보는 것에 대해 알아보겠습니다. ModelAndView를 통한 뷰 선택과 모델 전달ModelAndView를 사용하면 이 두 가지를 한 번에 처리할 수 있습니다. 요청 매핑 애노테이션을 적용한 메서드는 String 타입 대신 ModelAndView를 리턴할 수 있습니다. @Controller@RequestMapping("/survey")public class SUrveyController{ @GetMapping public ModelAndView form() { List questions = createQuestions(); ModelAndView mav = new ModelAndView(); mav.addObject("questions", q..