
현재 아이디, 비밀번호를 입력하고 로그인 버튼을 누르면
다시 로그인 페이지로 넘어오는 "로그인 화면 무한 반복" 상태이다


로그인 버튼을 눌렀을 때
MEMBER 테이블에 있는 회원이면 BOARD 목록이 쭈루룩 나오도록 하고,
MEMBER 테이블에 없는 회원이면 다시 로그인을 하도록 하면 된다.
기존 코드 흐름 해석
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>표지페이지</title>
</head>
<body>
<form action="login" method="POST">
<table border="1">
<tr>
<td>아이디</td>
<td><input type="text" name="mid" required></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="password" name="mpw" required></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="로그인"></td>
</tr>
</table>
</form>
</body>
</html>
1️⃣ 사용자가 로그인 버튼 클릭
/login으로 POST 요청이 발생한다
전송되는 데이터는 mid와 mpw이다
2️⃣ DispatcherServlet이 요청 받음 (FrontController)
Client ➡ DispatcherServlet
/login 요청이 서버로 들어오면 DispatcherServlet이 모든 요청을 먼저 수신
3️⃣ HandlerMapping이 실행될 컨트롤러 메서드를 찾음
@PostMapping("/login") // POST 방식으로 /login 요청이 오면 실행
public String login() {
System.out.println("두번째 로그");
return "index";
}
조건은 URL이 /login이고 Method가 POST인 것
그래서 위의 메서드와 매칭이 된다
4️⃣ Controller 메서드 실행
login() 메서드 실행되면서 콘솔에 "두번째 로그" 출력
5️⃣ 반환값(String)을 DispatcherServlet이 받음
View 이름으로 해석됨
6️⃣ ViewResolver가 JSP 경로를 완성
/WEB-INF/views/ + index + .jsp ➡ /WEB-INF/views/index.jsp
7️⃣ JSP 렌더링 후 응답
index.jsp가 렌더링됨
클라이언트에게 HTML 응답 전송
HandlerMapping
HandlerMapping의 역할 : 요청을 처리할 컨트롤러와 메서드를 찾아주는 매칭 담당자
사용자가 /login으로 POST 요청을 보내면 DispatcherServlet은 누가 이 요청을 처리할까?를 HM에게 물어본다
HM은 URL 패턴 + HTTP 메서드 + 기타 조건을 보고 어떤 컨트롤러의 어떤 메서드가 실행될지 결정함
위의 변경사항을 적용하기 위해 코드를 수정하고
목록을 출력하려고 jsp 페이지를 하나 더 만들었다.


500에러 발생했다
에러 메시지를 보자
java.lang.ClassNotFoundException: jakarta.servlet.jsp.jstl.core.LoopTag
문제의 원인은 Spring Boot 4 + Tomcat 11 환경에서 JSTL 라이브러리가 없어서 발생한 ClassNotFoundException: jakarta.servlet.jsp.jstl.core.LoopTag 오류입니다. 즉, JSTL 라이브러리를 프로젝트에 추가해야 한다
pom.xml에 jstl jar 추가하기
[ 생략 ]
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
에러가 해결되었다
'🍏 개발일기' 카테고리의 다른 글
| 내 PC에서 만든 오너블리 쇼핑몰, AWS EC2에 배포하고 누구나 접속하기 (2) | 2026.01.20 |
|---|---|
| AWS EC2 인스턴스 생성과 EC2 서버 접속 (0) | 2026.01.20 |
| GitHub Pages 다음 단계: WAR 파일과 EC2로 서버 배포 이해하기 (2) | 2026.01.18 |
| GitHub Pages + Actions로 정적 사이트 배포해보기-2 (404 해결까지) (0) | 2026.01.18 |
| GitHub Pages + Actions로 정적 사이트 배포해보기-1 (0) | 2026.01.17 |