인프런 커뮤니티 질문&답변

dnjswo410님의 프로필 이미지
dnjswo410

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

MVC 패턴 - 적용

mvc 패턴에서 등록된 회원을 조회할때 에러가 발생합니다.

작성

·

410

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);
    }

}

 

답변 1

2

안녕하세요. dnjswo410님, 공식 서포터즈 y2gcoder입니다.

스프링 부트 3버전 이후부터는 jsp 를 다르게 적용해야 합니다!

강의자료 3. 서블릿, JSP, MVC 패턴.pdfJSP로 회원 관리 웹 애플리케이션 만들기 챕터를 참고해보시면

image스프링 부트 3.0 이상에 대한 JSP 적용 방법이 있습니다. 참고하셔서 다시 설정해보시겠습니까? :)

 

감사합니다.

dnjswo410님의 프로필 이미지
dnjswo410
질문자

아.. 제가 강의 교안을 꼼꼼하게 확인을 못했네요 ㅠㅠ... 감사합니다!!!!!

dnjswo410님의 프로필 이미지
dnjswo410

작성한 질문수

질문하기