728x90
문제
프로젝트를 진행하던 도중, 팀원분께서 로그인을 구현하고 Session에 정보를 담아두었다고 알려주셨다.
Session에 있는 로그인 정보를 가지고 다른 로직들을 처리해야 하므로 Controller에서 세션을 불러오려 했다.
@PostMapping("/{recommendNo}/likes")
@ResponseBody
public Long changeLikesStatus(@PathVariable final Long recommendNo,
HttpServletRequest servletRequest) {
HttpSession session = servletRequest.getSession(false);
MemberLoginResponse loginResponse = (MemberLoginResponse) session.getAttribute("loginUser");
String memberEmail = validateService.validateMemberByMemberNo(loginResponse.getMemberNo()).getEmail();
likesService.changeLikesStatus(memberEmail, recommendNo);
System.out.println(likesService.countNumberLikes(recommendNo));
return likesService.countNumberLikes(recommendNo);
}
해당 코드처럼 작성했을 때
java.lang.IllegalStateException: No primary or single unique constructor found for interface javax.servlet.http.HttpServletRequest
에러가 발생하기 시작했다.
해결
Import와 관련된 문제이다.
Spring Boot 3버전 이상의 경우 HttpServletRequest, HttpSession을 사용할 때 jakarta와 javax가 존재한다면 jakarta를 선택하자 javax를 선택하면 에러가 발생한다.
반응형