날짜 유형에 대한 SpringMVC 변환 예

웹 개발을 할 때 페이지에 들어오는 것은 모두 String 형식입니다. SpringMVC는 기본적인 형식을 변환할 수 있지만 날짜 유형의 변환은 우리가 설정해야 할 수도 있습니다.
1. 검색 클래스가 우리로 하여금 직접 쓰게 한다면 속성 앞에 @DateTimeFormat(pattern ='yyyy-MM-dd')을 추가하면 String을 Date 형식으로 변환할 수 있습니다.

@DateTimeFormat(pattern = "yyyy-MM-dd") 
private Date createTime; 
2. 만약에 우리가 웹 층의 개발만 책임진다면 컨트롤러에 데이터 연결을 추가해야 한다.

@InitBinder 
public void initBinder(WebDataBinder binder) { 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
dateFormat.setLenient(false); 
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); //true: ,false: 
3. 시스템에 전역 형식 변환기를 추가할 수 있다
변환기 구현

public class DateConverter implements Converter<String, Date> { 
@Override 
public Date convert(String source) { 
 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
 dateFormat.setLenient(false); 
 try { 
  return dateFormat.parse(source); 
 } catch (ParseException e) { 
  e.printStackTrace(); 
 }   
 return null; 
}
구성:

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> 
  <property name="converters"> 
   <list> 
    <bean class="com.doje.XXX.web.DateConverter" /> 
   </list> 
  </property> 
</bean> 

<mvc:annotation-driven conversion-service="conversionService" /> 
4. 날짜 형식을 String으로 바꾸어 페이지에 표시하려면 앞부분의 기술에 맞추어 처리해야 한다.
5. SpringMVC가 @ResponseBody를 사용하여 json으로 되돌아올 때 날짜 형식은 기본적으로 타임 스탬프로 표시됩니다.

@Component("customObjectMapper") 
public class CustomObjectMapper extends ObjectMapper { 
 
 public CustomObjectMapper() { 
  CustomSerializerFactory factory = new CustomSerializerFactory(); 
  factory.addGenericMapping(Date.class, new JsonSerializer<Date>() { 
   @Override 
   public void serialize(Date value, JsonGenerator jsonGenerator, 
     SerializerProvider provider) throws IOException, JsonProcessingException { 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    jsonGenerator.writeString(sdf.format(value)); 
   } 
  }); 
  this.setSerializerFactory(factory); 
 } 
}
구성은 다음과 같습니다.

<mvc:annotation-driven> 
 <mvc:message-converters> 
  <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 
   <property name="objectMapper" ref="customObjectMapper"></property> 
  </bean> 
 </mvc:message-converters> 
</mvc:annotation-driven> 
6. date 형식이 json 문자열로 변환될 때 long time 값을 되돌려줍니다. 지정한 날짜를 되돌려주는 형식의 get 방법에 @Json Format(pattern="yyy-MM-dd HHH:mm:ss", timezone="GMT+8")을 적으면 json이 되돌려주는 대상을 지정한 클래스로 되돌려줍니다.

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 
public Date getCreateTime() { 
return this.createTime; 
} 
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기