[자바] 널 체크


NullPointerException(java.lang.NullPointerException) : 객체나 함수를 사용할 때 인자값이 null이면 해당 함수나 객체를 사용할 수 없어 오류가 발생하게 된다.


쉽게 얘기하면 함수를 사용할 때 인자값의 타입이 지정되어 있는데 이 인자값에 null 이 들어가면 발생하는 오류다.



기본적인 null 체크 예제


if(value != null){
    //do something(value);
}


널이면 do sonthing코드를 실행하지 않게 하여 오류를 피한다.


String 의 null 체크 예제


if(StringUtils.isNotBlank(value)){
    //do somthing
}

org.apache.commons.lang3.StringUtils 을 사용하여 빈값일때는 do something을 실행 하지 않게 한다.


String value = "";
// value에 값을 넣고...
if(value.equals("")){
     // do something
}

null은 아니고 빈 스트링 문자열 일때는 equals 를 사용한다.


if("".equals(value.getStringName()){
    //do something
}


비교값을 왼쪽으로 두어 비켜가는 꼼수도 있다.



List형 null 체크 예제


객체 자체가 널인지 체크하고 사이즈도 체크하자.

if(listValue != null && listValue.size() > 0){
    //do somethong
}


커스텀 클래스를 만들어 사용하는 예제


public class CustomUtils {
    public static boolean isEmpty(Object obj) {
         if (obj == null) { return true; }
         if ((obj instanceof String) && (((String)obj).trim().length() == 0)) { return true; } 
         if (obj instanceof Map) { return ((Map<?, ?>)s).isEmpty(); }
         if (obj instanceof List) { return ((List<?>)obj).isEmpty(); }
         if (obj instanceof Object[]) { return (((Object[])obj).length == 0); } 
 
         return false;
     }
 }


오브젝트 객체에 대한 널체크를 한 후 빈값인지 아닌지 true, false로 반환한다.


사용법은 다음과 같다.


if(!CustomUtils.isEmpty(mapValue)){
    //do sonething
}


null 이면 true를 반환하기 때문에 조건문 앞에 ! 붙이는 걸 잊지 말아야 한다.

'JAVA' 카테고리의 다른 글

[jsp] include 사용방법  (0) 2018.01.01
[JAVA] 패스워드 정규식 (Regex)  (1) 2017.12.05
[JSP] jstl 과 el의 차이점  (0) 2017.12.04
[JSTL]choose와 when, otherwise 사용법  (0) 2017.11.23
[JSTL]fmt:formatNumber  (0) 2017.11.22

스프링 프레임워크를 사용하다가 가끔은 AJAX 없이 첫페이지에서 데이터를 JSON으로 JSP에 넘겨주고 싶을때


서버에서 넘겨주는 ModelMap을 JSP페이지에서 어떻게 받을지에 대한 글 입니다.



ModelMap.addAttribute("result", result);


보통 이렇게 JAVA파일에 작성하여 JSP의 JSTL을 사용합니다.


그런데 가끔 자바스크립트의 데이터로 사용할 일이 생깁니다. 그럴땐 다음과 같은 방법으로 JSON을 생성합니다.


자바파일에서 


JACKSON을 이용하는 방법



String json = new ObjectMapper().writeValueAsString(JsonVO); ModelMap.addAttribute("result", json );



또는


Gson을 사용하는 방법



Map<String, String> jsonMap = new HashMap<String, String>();
jsonMap.put("one", "hello");
jsonMap.put("two", "world");

Gson gson = new GsonBuilder().create();
String json = gson.toJson(jsonMap);
ModelMap.addAttribute("result", json );



이런 방식으로 JSP단으로 JSON을 넘겨주고 JSON을 스크립트에서 받을때는 



<script>
var jsonData = ${result};
</script>


이렇게 저장 합니다.

여기서 중요한건 데이터에 따움표가 없다는 것입니다.

그래야 javascript의 eval메소드 없이 값을 할당 할 수 있습니다.



{
    "one" : "hello",
    "two" : "world"
}


jsonData 변수에 위의 JSON이 할당 됩니다.




가끔 쓰는 방법이니 기억해 두고 있으면 편리 합니다.

'JAVA' 카테고리의 다른 글

[JAVA] 패스워드 정규식 (Regex)  (1) 2017.12.05
[JSP] jstl 과 el의 차이점  (0) 2017.12.04
[JSTL]choose와 when, otherwise 사용법  (0) 2017.11.23
[JSTL]fmt:formatNumber  (0) 2017.11.22
VO, Map 객체 JSON 으로 변환  (0) 2017.11.19

+ Recent posts