본문 바로가기
Web Programming/JAVA MVC

session값을 가져오면서 NullPointerException 발생

by hyeon-H 2021. 6. 24.
728x90
반응형

홈페이지에서 로그인을 하게 되면 메인페이지로 이동하면서 세션(session)으로 로그인된 회원의 정보를 가지고 이동하는 작업에서 NullPointException 이 발생했다. 컨트롤러에서는 값을 sysout으로 찍어보면 잘 들어가고 넘어가는 가는 것을 확인했는데, 브라우저를 다시 실행하니 500에러와 NullPointerException이 발생하였다.


컨트롤러에서 로그인부분에서 세션(session) 값을 넘기는 부분

if (midx > 0) { 
	HttpSession session = request.getSession();
	session.setAttribute("S_memberId", memberId);
	session.setAttribute("midx", midx);
    
    out.println("<script>document.location.href='메인페이지로 이동경로'</script>");	
 }else{
 	out.println("<script>document.location.href='로그인페이지로 이동경로'</script>");
 }

Controller에서 값을 넘길때에는 문제가 없었다.



문제는 Session값을 받는 페이지에서 발생

위 사진처럼 값을 받게 되면 로그인이 되어있지 않을때, 즉 Sesstion에 담긴 값이 null일때 NullPointException이 발생한다.

 

if문으로 null일때의 예외처리가 필요하다.

<%
String member_id = (String)session.getAttribute("S_memberId");

int midx = 0;

if (session.getAttribute("midx") != null) {
	midx = (int)session.getAttribute("midx");
}

out.println("세션에 담긴 아이디는?");
out.println(member_id);
out.println(midx);
%>    

Sesstion에 담긴 id는 페이지 중간부분에 if문이 있어서 처리를 해주지 않았다.

하지만 midx는 이러한 if문으로 null일 경우의 처리를 해주지 않았기 때문에 NullPointException이 발생한것이다.

방법은 간단하다 midx를 0 으로 초기화 해준 뒤. nulll이 아닐경우에 midx에 값을 넣어주면 되는것이다.

728x90
반응형