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

이용규님의 프로필 이미지

작성한 질문수

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

스프링 MVC - 시작하기

SpringMemberFormControllerV1 404에러

작성

·

236

·

수정됨

0

SpringMemberFormControllerV1에서 @Controller를 붙이고

실행하면 폼이 정상적으로 뜨는데

 

KakaoTalk_20240825_200435593.png

이렇게

@Controller를 주석처리하고

@Component

@RequestMapping 를 붙이고

실행하면 404가 에러가 뜹니다.

 

게다가

KakaoTalk_20240825_200922285.png

이렇게 testcontroller를 해서 실행해도

 

image.png

마찬가지로 404가 에러가 뜹니다

 

어떻게 해야 되나요?

 

 

 

 

답변 10

1

프로젝트 코드 확인해보았습니다.

일단 제 개발 환경에서는 어떤지 확인해보았는데, 말씀하신대로 404에러가 발생하더라구요.

전체적으로 보았을 때 자바 코드나 패키지 경로 등에 문제가 없어 보여 build.gradle(의존성) 문제로 예상했습니다.

 

스프링부트 3.0부터 변경 요소가 있는데,

image.png

직접 주석처리하였던거나, 강의에서 제공해드리는 의존성 순서와 달라 뭐가 변경되었는지 파악이 어려워서

image.png

 

// JSP 추가 시작 - 끝 부분을 위에 올려 드린 수정 부분으로 변경하니 정상 동작하였습니다.

 

아래 build.gradle을 복사하여 붙여넣기 하시면 정상 동작하니 확인해주세요.

 

plugins {
    id 'java'
    id 'war'
    id 'org.springframework.boot' version '3.3.2'
    id 'io.spring.dependency-management' version '1.1.6'
}

group = 'hello'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
       languageVersion = JavaLanguageVersion.of(21)
    }
}

configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'

    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
    implementation 'jakarta.servlet:jakarta.servlet-api'
    implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api'
    implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl'

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}

붙여넣기 후 우측 상단의 코끼리 버튼을 클릭해주세요.

image.png

 

이용규님의 프로필 이미지
이용규
질문자

감사합니다

1

이용규님의 프로필 이미지
이용규
질문자

여러번 실패해서 죄송합니다....

https://drive.google.com/file/d/14fCBydunZf3moSHhPUH8MXH0jCG0r2lN/view?usp=sharing

 

스크린샷 2024-08-26 115756.png

방금 말씀하신대로 했는데

 

다시 확인 해주세요....

1

이제 되네요. 확인해보겠습니다.

1

이용규님의 프로필 이미지
이용규
질문자

https://drive.google.com/file/d/14fCBydunZf3moSHhPUH8MXH0jCG0r2lN/view?pli=1

 죄송합니다...

다시 한번 확인해주세요

image.png

 

네 동일하게 안됩니다. 링크 접속 화면을 보시면 올리신 링크 주소와 동일한데, 접속 안되는 걸 보실 수 있습니다.

링크 공유할 때 아래 부분을 확인해주세요.

image.png

 

0

저도 같은 문제가 발생해서 2일 동안 열심히 서칭해보았는데요, 일단 위의 답변처럼 build.gradle 의존성 변경을 하시고

//jsp
implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api'
implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'

 

실행을 gradle 업데이트 하는 창에서
Tasks -> application -> bootRun 우클릭해서 실행하시면 될겁니다...

혹시 왜 이렇게 해야 작동하는지 아시는분은 설명 부탁드립니다

Screenshot 2024-09-11 at 3.32.36 AM.png

 

0

동일합니다.

구글 로그아웃 하여 링크 접속해보시거나

이전 답변에서 말씀드린 것처럼 시크릿모드에서 구글 로그인 하지 않고 링크 들어가보시면 알 수 있습니다.

image.png

다음 내용을 참고해주세요.

0

이용규님의 프로필 이미지
이용규
질문자

삭제된 글입니다

구글 로그인이 되어있으면, 본인 계정의 파일이니까 정상적으로 보일 수 있습니다.

링크 공유할 때 아래 부분을 확인해주세요.

image.png

 

0

이용규님의 프로필 이미지
이용규
질문자

삭제된 글입니다

아직도 동일합니다.

브라우저 시크릿 창을 열어서 링크 접속해서 정상적으로 열리는지 확인해주세요.

image.png

 

0

이용규님의 프로필 이미지
이용규
질문자

삭제된 글입니다

image.png

권한 요청 화면 출력하지 않도록 링크있는 사용자에게 접근 권한 부여 적용해주세요

0

안녕하세요. 이용규님, 공식 서포터즈 OMG입니다.

강의에서 제공해드리는 완성본 프로젝트 코드로 테스트 해봤는데 정상 동작합니다.

404 에러가 발생하는 이유를 예상하면

application.properties에 아래 view.prefix와 suffix 설정 적용 여부 확인이 필요하고

image.png

new-forn.jsp 파일이 없거나, 경로가 일치하지 않아서 발생하는 문제인지 확인해주세요.

image.png

해결이 안될 경우 댓글 남겨주세요.

감사합니다.

이용규님의 프로필 이미지
이용규
질문자

스크린샷 2024-08-26 111146.png스크린샷 2024-08-26 111232.png

말씀하신대로 잘 설정이 되있는데도 404에러가 뜹니다...

프로젝트 코드를 확인해봐야 알 것 같습니다.

 

실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

감사합니다.