에러해결 Log) JSP 절대경로 지정하기
사용환경
- MacBook Air (M1, 2020) 16GB
- JDK 8
- Eclipse 2021-12
- tomcat 8.5
에러의 발생
- 역시 여느 때와 같은
JSP
수업 시간…Model2 MVC
패턴으로 웹 페이지를 만드는 것을 실습하고 있었는데 서블릿을 통해 가상주소로 페이지를 열다 보니까jsp
페이지 자체는 잘 열리는데jsp
페이지와 연결된 외부css
파일의 경로를 제대로 찾질 못해서 기본으로 적용되어 있던css
가 제대로 적용되질 않았다. - 이걸 해결하고 수업이 끝났다면 좋았겠지만 여기까지 했을 때 마침 수업 시간이 끝나버려서… 다음 수업까지 기다릴 수도 있었겠지만 간단해 보이는 걸 해결 못하니까 너무 신경쓰였다. 그래서 고쳐 보겠다고 경로를 온갖 방법으로 지정을 해 줬는데 계속 상대 경로를 지정하는 것이었어서 그런지 페이지로 이동하는 경로에 따라 어떤 경우엔 잘 되고 어떤 경우엔 잘 나오지 않는 등 여러가지로
css
파일이 완벽하게 로드되지 않았다. - 물론 절대경로도 나름 시도를 해 보았으나 잘못 알고 있었는지 절대경로도 먹히질 않았다… 주륵 🥲
문제 해결
- 구글에
jsp 절대경로
를 검색하니까 자료가 많았다. - 절대경로를 설정하는 간단한 방법은 루트를 뜻하는
/
를 입력하고 하위 폴더명을 타고타고 입력하는 것이지만 저게 먹히지 않았기 때문에 다른 방법을 찾았다. - 바로
${pageContext.request.contextPath}
를 이용해 어느 경우라도 절대경로가 적용될 수 있게 해주는 것이다.
- 한 시간동안 헤메면서도 생각했지만 jsp 페이지에 직접 접근했을 때와 서블릿을 통해 접근했을 때 상대경로의 기준이 달라져서 그러는 것 같았는데 찾아보니까 진짜였다.
<link href="${pageContext.request.contextPath}/css/default.css" rel="stylesheet" type="text/css">
- 이런 식으로 찾아가고자 하는 폴더와 파일의 경로를
el 표현식
을 사용한contextPath
뒤에 입력해주면 절대경로로 세팅되면서 정상적으로css
파일을 찾아가게 된다. - 그런데 방금 적용시켜 보니까 jsp 액션태그의 경로에는 절대경로를 넣으니까
500 에러
가 나서 액션태그는 피하고HTML
태그에만 적용시켜 주면 될 거 같다.
- 짠👏 적용 끝!