일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 인증번호 전송
- 스프링 포트폴리오
- 쇼핑몰 포트폴리오
- 파일 업로드
- 스프링 프로젝트 기본 설정
- 스프링 게시판
- 정규표현식
- 쇼핑몰 프로젝트
- 스프링 쇼핑몰
- 스프링 업로드
- Bcrypt
- 스프링 프로젝트 설정
- 이미지 출력
- spring 프로젝트
- 로그인 기능
- oracle 설치방법
- BCrypt 적용
- arraylist
- 스프링 HikariCP
- ResponseEntity
- 스프링 게시판 구현
- spring 쇼핑몰
- 스프링 쇼핑몰 프로젝트
- 회원가입 기능
- 삭제 구현
- 스프링 프로젝트
- 스프링 이미지
- 스프링 메일 전송
- 스프링 파일 삭제
- 로그아웃 기능 구현
Archives
- Today
- Total
Kim VamPa
java.lang.NullPointerException 본문
728x90
반응형
1. 상황
- 관리자 계정이 아닐시 MemberController.java 에 접근하지 못하도록 Interceptor를 작성하고, 3가지 상황을 테스트 하였습니다. 일반 계정과 관리자 계정을 로그인한 상태에서는 정상적으로 기능이 작동하였지만, 로그인을 하지 않은 상태에서 url을 호출하였을때는 그림 1 과 같이 에러 창이 떴습니다.
□ 문제가 된 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public class AdminInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session = request.getSession();
MemberVO lvo = (MemberVO) session.getAttribute("member");
int adminCk = lvo.getAdminCk();
if(lvo == null || adminCk != 1) { // or
response.sendRedirect("/main");
return false;
} else {
return true;
}
}
}
|
2. 해결
위의 코드들 중에서 문제가 된 코드는 아래의 코드입니다.
1
2
3
|
int adminCk = lvo.getAdminCk();
|
adminCk 변수에 lvo인스턴스에 있는 adminCk라는 변수로 초기화 하는 코드입니다. 로그인을 하지않고 위의 코드들을 실행하였을때 lvo 변수는 null 입니다. 따라서 lvo 인스턴스가 없는 상태에서 lvo인스턴스 멤버를 호출하였기 때문에 발생한 에러입니다.
이를 해결하기위해서 adminCk 변수를 초기화 할때 lvo변수의 값이 null인지 아닌지 체크하여 null이 아닐경우에만 초기화 할 수있도록 수정하였습니다. 수정한 코드는 아래와 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public class AdminInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
int adminCk = 0;
HttpSession session = request.getSession();
MemberVO lvo = (MemberVO) session.getAttribute("member");
if(lvo != null) {
adminCk = lvo.getAdminCk();
}
if(lvo == null || adminCk != 1) { // or
response.sendRedirect("/main");
return false;
} else {
return true;
}
}
}
|
cs |
작성일
2020-01-31
728x90
반응형
'개발노트 > 에러' 카테고리의 다른 글
[Exception] the file cannot be validated as the xml definition (0) | 2021.02.16 |
---|---|
에러 : org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.filterChains' (0) | 2020.12.20 |
에러 : java.sql.SQLException: 부적합한 열 유형: 1111 (0) | 2020.11.24 |
스프링 에러 : SQLSyntaxErrorExceptio (1) | 2020.08.13 |
스프링 에러 : NoSuchBeanDefinitionException (1) | 2020.08.11 |
Comments