Henry-Cha
72
2021-07-25 19:02:52
5
178

스프링 입문자입니다. view 디렉토리와 jsp파일의 위치 질문드려요


이제까지 메이븐 등을 이용하여 연습할때 jsp페이지는 webapp 바로 밑에 넣고 사용했었는데요.

spring을 시작하고 스프링 프로젝트로 새 프로젝트를 만드니 처음 자동으로 만들어지는 구성이

webapp-WEB-INF-views 밑에 home.jsp파일이 있더라구요.. 이걸 바로 실행해보니까 404에러가 떠서 페이지에 들어갈수가 없구요.. 전에 하던것처럼 jsp파일을 밖으로 빼서 webapp바로 밑으로 넣고 실행해보니까 실행이 잘되는데 view 폴더의 위치는 어디에 있어야하는건가요? 기본으로 생성되는 파일이 잘못될리는 없을것같은데 막상 실행해보면 안되고..WEB-INF밖으로 빼서 하는게 맞는건가요? 아니면 제가 뭔가 잘못한걸까요?

0
  • 답변 5

  • 카카오콘
    687
    2021-07-25 19:34:16


    어떻게 실행하신건가요? 그냥 URL에서

    localhost/home.jsp 이렇게 호출하셨나요?


    WEB-INF 아래 있는 jsp파일에는 보안상 "직접 접근" 할 수 없습니다.

    컨트롤러를 통해 requestMapping을 타고 매핑된 URL로 view를 정해서 접근해야합니다.

  • Henry-Cha
    72
    2021-07-25 19:49:26 작성 2021-07-25 19:51:51 수정됨

    @카카오콘

    답변 감사합니다. servlet doget에서 sendredirect("주소") 이렇게 접근하는것도 직접접근에 포함인가요?안되던데.. 배운지 얼마안돼서 잘 모르겠내요 ㅜㅜ

  • 카카오콘
    687
    2021-07-25 19:56:58

    직접호출하신걸로 보이진 않네요..


    코드가 길지 않다면 컨트롤러 코드화면과 구조를 같이올려주시면 도움이 될 듯 합니다.

  • Henry-Cha
    72
    2021-07-25 22:14:14 작성 2021-07-25 22:31:45 수정됨

    카카오콘 

    스프링말고 메이븐 프로젝트로 만든 코드인데


    main.java에 doget에서 센드리다이렉트로 보냈을때 404에러가 납니다 ㅜ

    jsp를 web-inf밖으로 빼고 리다이렉트하면 열어지구요

  • 카카오콘
    687
    2021-07-26 00:19:59

    으음 맞는지는 모르겠지만


    일반적으로 해당 구조에서는


    WEB-INF아래 views 폴더를 두고, 거기에 .jsp파일을 위치시키고..

    URL도 WEB-INF/index.jsp가 아니라

    response.sendRedirect("/index.jsp") 이렇게 사용할겁니다. 


    스프링이 아니면 또 다른가 싶긴한데..

    디스패쳐에 WEB-INF설정이랑 이런게 사전설정 되어있어야 하나 싶기도 하고..

     가능하다면 제가 말씀드린대로 해보시거나


    아마  "/WEB-INF/index.jsp"로 해보시는건 어떨지요. 앞에 경로 "/" 하나가 빠진게 문제일수도 있습니다.

    (혹은 폴더하나 더 생성해서 "/WEB-INF/views/index.jsp"

  • 로그인을 하시면 답변을 등록할 수 있습니다.