1. @RequestMapping 에 java.util.Date 받기.

http://linkedjava.blogspot.com/2011/06/spring-controller-with-date-object.html

2. JacksonMappper 에서 java.util.Date Serialize 하기

http://linkedjava.blogspot.com/2011/06/spring-controller-with-date-object.html
 


<filter>


<filter-name>encodingFilter</filter-name>


<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>


<init-param>


<param-name>encoding</param-name>


<param-value>UTF-8</param-value>


</init-param>


</filter>


<filter-mapping>


<filter-name>encodingFilter</filter-name>


<url-pattern>/*</url-pattern>


</filter-mapping>



spring 에서 제공하는 CharacterEncodingFilter 를 걸어주면된다.
본인의 프로젝트에서는 UTF-8 을 사용하였음으로,
param-value에 UTF-8을 사용하였다.

 

JUnit4 에서 Exception 발생이 나야 하는 Test 인 경우를 캐치 하는 방법

@Test(expected=IndexOutOfBoundsException.class)
 public void verifyZipCodeGroupException() throws Exception{		
  Matcher mtcher = this.pattern.matcher("22101-5051");
  boolean isValid = mtcher.matches();			
  mtcher.group(2);		
 }
 
우와 같이 @Test annotation 에 expected argument를 넘겨 주면 된다.  

1. String to java.sql.date

SimpleDateFormat ts= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Long time = ts.parse("2007-05-16 13:12:18").getTime();

java.sql.Date date = new java.sql.Date(time);

 
SimpleDateFormat으로 부터 형식에 맞는 Date String을 parse한후 long 값 생성.
long값을 통해 java.sql.Date 객체를 생성한다.

2. java.sql.date.to String

SimpleDateFormat ts= new SimpleDateFormat("yyyyMMddHHmmss");

return ts.format(date);

 
 SimpleDateFormat Object의 format() method를 통해 String을 쉽게 Generate할 수 있다. 

SimpleDateFormat Class Reference Link

A.Java

package a;

public class  A extends B {}

 
B.Java

package b;

 abstract class B {}

 
위와 같은 Code는 아래와 같은 Compile Error가 발생합니다.

B cannot be resolved as a type


A 에서 extneds 하려는 B abstract class를 못찾는것인데,
이유인 즉은 class B 가 "no modifier"로 선언 되어 있어서 그런것이지죠.
앞에 "public" keyword를 추가해주면 error는 말끔히 사라집니다.

default 가 protected 같은 녀석이 되어 있어서, 그러려니 했었습니다만,
혹시나 해서 문서를 찾아 봤습니다.

java 에서 access control 은 아래의 4종류가 있습니다..

* public
* private
* protected
* no modifier


여기서 중요한게 no modifier가 따로 있다는 것입니다.
저는 default behavior가 protected라고 추측했었는데, 그게 아니었던것이지요.

C Language를 오래했던 제가, Java에 대해 공부가 부족했던 오해 인가 봅니다.
Scope등의 자세한 내용은 "http://download.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html" 여기서 참조 하시기 바랍니다.

참고로, protected 는 class 에는 붙힐 수 없고, memeber variable에만 적용됩니다. ㅎ



 
 

web.xml 설정


<error-page>

<error-code>404</error-code>

<location>/error/400.html</location>

</error-page>

등등등 상황별로 Error Page를 설정이 가능하다.

자세한 내용은 Oracle 홈페이지 를 참조 한다 :)

http://download.oracle.com/docs/cd/E13222_01/wls/docs81/webapp/web_xml.html#1017571
 

 

404 Error Trigger in Spring MVC

@RequestMapping(value = "/mywebapp/index.nhn", method = RequestMethod.GET)

public Model index(@ModelAttribute("searchItem") SearchItem searchItem, Model result,

HttpServletRequest request, HttpServletResponse response) throws Exception {

   .....

throw new NoSuchRequestHandlingMethodException(request);

}

 
이렇게 NoSuchRequstHandlingMethodException을 날려 주면, 404에러가 발생되고, web.xml 정의된 페이지가 노출된다.

Java Code

Logger logger = Logger.getLogger(this.class);
logger.info("abcdefg");

log4j.xml

<!-- Application Loggers -->
<logger name="com.taehoonkoo" additivity="false">
<level value=DEBUG />   
        <appender-ref ref="console" />
</logger> 



뭐 이런식으로 대강 사용하면 된다. 
 
특정날짜 시간의 Date Object를 구할일이 있어서 찾아 봤습니다.

java.util.Calendar를 이용해서 Date값을 구할 수 있습니다. 우선 예제 소스를 보시면

Calendar cal = Calendar.getInstance();

cal.set(Calendar.HOUR,hour);

cal.set(Calendar.MINUTE,min);

cal.set(Calendar.SECOND,0);

cal.set(Calendar.MILLISECOND, 0);

Date expectedDate = cal.getTime();


이런식입니다.

Calendar Class의 Object는 SingleTone으로만 접근이 가능합니다. 그래서 
"new Calendar()" 이런식으로 사용할 수 없고 "getInstance()" Method를 통해서 SingleTone Object를 가져 옵니다. 

그리고 Key-Value Mechanism을 통해서 년/월/일/시/분/초/마이크로초 이런식으로 세팅이 가능합니다. 

SingleTone으로 관리 되기 때문에, 사실 위와 같은 코딩은 조금 위험합니다. 
년/월/일을 다른데서 세팅 했을수 있기 때문이죠.
그래서 사용하기 전에, reset을 해주는게 좋은데요.

cal.setTime(new Date());


저 같은 경우는  위와 같이 현재 시간으로 reset해서 사용합니다. 


+ Recent posts