Spring Project home.jsp 404 해결 방법과 이유
이 전의 포스팅에서 만들어줬던 스프링 프로젝트를 실행시키려고 home.jsp를 실행시켜보았다
아래와 같은 주소로 뜨면서 404 에러가 발생했다
그래서 문제 해결 방법을 찾아보려고 한다!
Spring Project의 request 흐름
404 에러 문제를 해결하기 위해선 우리가 서버로부터 request(요청)를 했을 때 이 요청이 어떻게 흘러가는지를 알아보자.
클라이언트로부터 요청이 들어오면 (앞에서처럼 서버를 가동시켰을 때), 가장 먼저 web.xml이 실행된다
web.xml에있는 DispatcherServlet이 <url-pattern>의 형태로 들어오는 요청을 받아 servlet-context.xml로 넘겨준다
servlet-context.xml에서는 두 가지를 알아둬야 한다.
<context:component-scan />은 해당 패키지들의 어노테이션을 읽어 bean으로 등록을 한다
<annotation-driven />은 HandlerMapping & HandlerAdapter의 역할로 component-scan에서 등록된 bean 중에서 요청과 알맞은 controller를 찾아 연결시켜준다
다음은 Controller로 이동을 해준다.
servlet-context.xml의 component-scan에 의해서 HomeController의 @Controller이 읽혀 bean으로 등록되었고,
annotation-driven은 @RequestMapping을 읽어, 해당 요청(/)을 처리할 수 있는 Controller를 찾아냈다.
이 과정을 통해 HomeController가 요청을 받고,
string home함수를 통해 데이터를 처리해주고 "home"이라는 문자를 return 하게 된다.
Model과 Controller 거쳤으니, 이제 View의 차례다. controller에서 반환된 "home"을 가지고 다시
servlet-context.xml로 돌아온다.
servlet-context.xml의 InternalResourceViewResolver를 통해 /WEB-INT/views/home.jsp 라는 최종 경로가 만들어진다.
위의 request요청 과정을 이해했다면, 다시 한번 서버를 작동시켜주자!
이번엔 home.jsp에서가 아닌 프로젝트에서 run as를 시킨다.
( RequestMapping을 통해 자동으로 home이 return 되어 home.jsp 파일이 실행되므로)
짜잔! 404 에러가 사라지고 home.jsp파일이 잘 실행된 걸 확인할 수 있다!
하지만 저 물음표들은 뭐다..? 한글이 깨지지 않도록 인코딩 설정을 해줘야 한다는 거..!
Spring Project UTF-8 인코딩하기
web.xml을 실행시켜 아래 코드를 넣어준다.
<!-- Character Encoding Filter -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Character Encoding Filter -->
그리고 서버를 껐다가 다시 키면
한글 인코딩도 완! 료!
'💖 Java > SpringMVC' 카테고리의 다른 글
[ Spring ] 게시판 만들기(3) - MySQL, MyBatis 연동 (0) | 2021.01.18 |
---|---|
[ Spring ] 게시판 만들기(2) - Spring 기본 설정, 한글 인코딩 (0) | 2021.01.08 |
[ Spring ] 게시판 만들기(1) - spring 프로젝트와 Git 연동하기 (GitKraken) (0) | 2021.01.08 |