-
이번 주 부터 스프링이 시작됐다.
STS를 설치하고 수업 시간에 DiceController를 만들어봤다.랜덤으로 주사위 두 개 굴려서 화면에 이미지 띄워주는 거였는데 정말 다행히 따라갈 수 있었다.
✅ 컨트롤러
@Controller // 1. 원격 프로그램 등록 public class DiceController { @RequestMapping("/dice") // 2. 요청 URL 연결 public String home(Model model) throws IOException { int idx1 = (int)(Math.random() * 6) + 1; int idx2 = (int)(Math.random() * 6) + 1; model.addAttribute("idx1", idx1); model.addAttribute("idx2", idx2); return "dice"; // → /WEB-INF/views/dice.jsp로 연결됨 } }
아직 입문이니 만큼 로직은 진짜 간단하다.
랜덤 숫자 1~6 두 개 뽑아서 model에 담고 dice.jsp한테 넘겨준다.
요청은 @RequestMapping으로 받고, 화면에 보여줄 jsp는 return으로 지정해주는 구조.
✅ jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session="false" %> <html lang="ko"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <img src='${pageContext.request.contextPath}/resources/dice/dice${idx1}.jpg'> <img src='${pageContext.request.contextPath}/resources/dice/dice${idx2}.jpg'> </body> </html>
근데 이미지 출력하는 부분에서 막혔었다.
경로 문제였는데 contextPath 설정을 제대로 안해줘서 이미지가 안나왔었다.
${}는 값 가져오는 문법
✅ 흔히 하는 오류
- 이미지 경로 문제
- 이미지 파일은 반드시
webapp/resources/dice/
폴더 안에 넣어야 한다. src/main/resources
에 넣으면 이미지가 나오지 않는다 ❌- 파일명도 규칙에 맞게 (
dice1.jpg
~dice6.jpg
) 저장해야 한다.
- 이미지 파일은 반드시
contextPath
를 안 써줌- JSP에서 이미지 경로 쓸 때
${pageContext.request.contextPath}
를 꼭 붙여야 한다. - 안 붙이면 경로가 꼬여서 이미지가 안 나온다.
- JSP에서 이미지 경로 쓸 때
- JSP 파일 위치 잘못 넣음
- JSP 파일은 반드시
WEB-INF/views
폴더 안에 넣어야 한다. - 다른 위치에 넣으면
return "dice";
했을 때 JSP를 못 찾는다.
- JSP 파일은 반드시
- 컨트롤러 메서드 반환값을 안 씀
- 메서드 반환 타입을
void
로 하면 뷰를 못 찾아서 404 오류가 난다. - 반드시
return "dice";
처럼 JSP 경로를 문자열로 반환해야 한다.
- 메서드 반환 타입을
- 리턴값에 확장자
.jsp
붙임return "dice.jsp";
이렇게 쓰면 안 된다 ❌- 스프링 설정에 따라 접두사(prefix)와 접미사(suffix)가 붙기 때문에 확장자는 생략해야 한다.
- Model 객체에 값 안 넣음
- 컨트롤러에서
model.addAttribute()
를 안 하면 JSP에서idx1
,idx2
를 사용할 수 없다. - 변수만 만들고 넘겨주는 걸 깜빡하기 쉽다.
- 컨트롤러에서
@RequestMapping
빠뜨림- 메서드에
@RequestMapping("/dice")
를 안 붙이면 URL 요청이 메서드와 연결되지 않는다. - 스프링은 이 어노테이션으로 URL과 메서드를 매핑한다.
- 메서드에
'Diary > 회고' 카테고리의 다른 글
[커널아카데미] 백엔드 개발 부트캠프 12기 11주차 - 다사다난 (0) 2025.06.08 [커널아카데미] 백엔드 개발 부트캠프 12기 10주차 - 싸이월드 만들기 (1) 2025.06.07 [커널아카데미] 백엔드 개발 부트캠프 12기 8주차 - 회고 (0) 2025.06.07 [커널아카데미] 백엔드 개발 부트캠프 12기 7주차 - 연휴 끝 1일 1코테 시작 (0) 2025.05.16 [커널아카데미] 백엔드 부트캠프 12기 6주차 - 과제를 해볼까 (0) 2025.05.16 댓글
- 이미지 경로 문제