작성
·
409
1
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
"mvc 를 패턴 - 적용" 강의에서 회원 목록을 조회할 때 계속해서 에러가 발생해서 질문드립니다.
MvcMemberListServlet.class
@WebServlet(name = "mvcMemberListServlet", urlPatterns = "/servlet-mvc/members")
public class MvcMemberListServlet extends HttpServlet {
private MemberRepository memberRepository = MemberRepository.getInstance();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Member> members = memberRepository.findAll();
System.out.println("메모리에 저장된 데이터: ");
for (Member member : members) {
System.out.println("member.username = " + member.getUsername());
System.out.println("member.age = " + member.getAge());
}
request.setAttribute("members", members);
String viewPath = "/WEB-INF/views/members.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
dispatcher.forward(request, response);
}
}
- 회원을 등록하고 "http://localhost:8080/servlet-mvc/members" 경로로 들어간후에, 위 코드의 실행 결과를 확인하면 MemberRepository 에 정상적으로 데이터가 들어 간 것을 확인할 수 있었습니다. 그런데 아래의 에러와 함께 whitelabel page가 보이네요..
org.apache.jasper.JasperException: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application
org.apache.jasper.JasperException: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application
위의 에러들에 관해서 구글링을 해보니까 jsp 파일에서 코드를 잘못 작성했을 확률이 높다고 합니다. 그런데 jsp 파일에는 큰 문제가 없어 보입니다 ㅠ
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
성공
<ul>
<li>id=${member.id}</li>
<li>username=${member.username}</li>
<li>age=${member.age}</li>
</ul>
<a href="/index.html">메인</a>
</body>
</html>
그리고 아래는 설정 파일입니다.
plugins {
id 'java'
id 'war'
id 'org.springframework.boot' version '3.2.2'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//JSP 추가 시작
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
//JSP 추가 끝
}
tasks.named('test') {
useJUnitPlatform()
}
다른 질문을 보니 implementation 'javax.servlet:jstl' 이 부분을 주석 처리하고 다시 해보라는 답변이 있길래 해봤더니 여전히 에러가 발생합니다.
참고로 메인 클래스에 어노테이션은 저렇게 구성되어 있습니다. 도움 주시면 감사하겠습니다...
@ServletComponentScan
@SpringBootApplication
public class ServletApplication {
public static void main(String[] args) {
SpringApplication.run(ServletApplication.class, args);
}
}
아.. 제가 강의 교안을 꼼꼼하게 확인을 못했네요 ㅠㅠ... 감사합니다!!!!!