🍏 개발일기

JSTL 오류 해결과 게시판 구현

보배 진 2026. 1. 20. 12:40

현재 아이디, 비밀번호를 입력하고 로그인 버튼을 누르면

다시 로그인 페이지로 넘어오는 "로그인 화면 무한 반복" 상태이다

 

 

현재 member / board 테이블

로그인 버튼을 눌렀을 때

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>

에러가 해결되었다