dallae_log
Home
  • 분류 전체보기 (118) N
    • Blog (82)
      • JAVA (0)
      • 생활코딩 - 자바스크립트 기본 (19)
      • 노마드코더 - 초보자를 위한 바닐라 자바스크립트 (20)
      • JAVA기반 스마트웹 개발2021 (43)
    • 🦄 (4)
    • Diary (31) N
      • 일상 (0)
      • 회고 (15) N
    • 🎁 (0)
Home
  • 분류 전체보기 (118) N
    • Blog (82)
      • JAVA (0)
      • 생활코딩 - 자바스크립트 기본 (19)
      • 노마드코더 - 초보자를 위한 바닐라 자바스크립트 (20)
      • JAVA기반 스마트웹 개발2021 (43)
    • 🦄 (4)
    • Diary (31) N
      • 일상 (0)
      • 회고 (15) N
    • 🎁 (0)
블로그 내 검색
Instagram

dallae_log

안녕 난 달래야🐣

  • Diary/회고

    [커널아카데미] 백엔드 개발 부트캠프 12기 9주차 - 스프링 수업 시작

    2025. 6. 7.

    by. 고구마달랭이

     

    이번 주 부터 스프링이 시작됐다.
    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 설정을 제대로 안해줘서 이미지가 안나왔었다.

    ${}는 값 가져오는 문법

     

    ✅ 흔히 하는 오류

    1. 이미지 경로 문제
      • 이미지 파일은 반드시 webapp/resources/dice/ 폴더 안에 넣어야 한다.
      • src/main/resources에 넣으면 이미지가 나오지 않는다 ❌
      • 파일명도 규칙에 맞게 (dice1.jpg ~ dice6.jpg) 저장해야 한다.
    2. contextPath를 안 써줌
      • JSP에서 이미지 경로 쓸 때 ${pageContext.request.contextPath}를 꼭 붙여야 한다.
      • 안 붙이면 경로가 꼬여서 이미지가 안 나온다.
    3. JSP 파일 위치 잘못 넣음
      • JSP 파일은 반드시 WEB-INF/views 폴더 안에 넣어야 한다.
      • 다른 위치에 넣으면 return "dice"; 했을 때 JSP를 못 찾는다.
    4. 컨트롤러 메서드 반환값을 안 씀
      • 메서드 반환 타입을 void로 하면 뷰를 못 찾아서 404 오류가 난다.
      • 반드시 return "dice";처럼 JSP 경로를 문자열로 반환해야 한다.
    5. 리턴값에 확장자 .jsp 붙임
      • return "dice.jsp"; 이렇게 쓰면 안 된다 ❌
      • 스프링 설정에 따라 접두사(prefix)와 접미사(suffix)가 붙기 때문에 확장자는 생략해야 한다.
    6. Model 객체에 값 안 넣음
      • 컨트롤러에서 model.addAttribute()를 안 하면 JSP에서 idx1, idx2를 사용할 수 없다.
      • 변수만 만들고 넘겨주는 걸 깜빡하기 쉽다.
    7. @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

    댓글

    관련글

    • [커널아카데미] 백엔드 개발 부트캠프 12기 11주차 - 다사다난 2025.06.08
    • [커널아카데미] 백엔드 개발 부트캠프 12기 10주차 - 싸이월드 만들기 2025.06.07
    • [커널아카데미] 백엔드 개발 부트캠프 12기 8주차 - 회고 2025.06.07
    • [커널아카데미] 백엔드 개발 부트캠프 12기 7주차 - 연휴 끝 1일 1코테 시작 2025.05.16
    맨 위로
전체 글 보기
  • Github
  • Portfolio
  • Mail
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
고구마달랭이
내 꿈은 억만장자

티스토리툴바