Error
<c:url> 태그
wldnjd2
2022. 6. 9. 16:16
<c:url 태그는 절대 경로를 잡는당
절대경로란 최상의 루트로부터 경유한 경로를 전부 기입하는 방식이다
상대경로란 비교관계의 경로이당
아래의 예시를 보자
전자정부프레임워크의 example 프로젝트 구조이다.
이때 내가 WEB-INF 디렉토리 하위에다가 js 폴더를 만들어서 아래의 웹프로젝트를 실행하려고 했다.
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>왜안돼</title>
<script type="text/javascript" src="<c:url value='/js/excel/test.js'/>"></script>
</head>
<body>
<button onclick="excelTest();">엑셀파일 수정</button>
</body>
</html>
한참동안 해결이 안되었는데 알고보니까
javascript같은 정적 파일들은 webapp 디렉토리 하위에 만들어주어야한다.
이때 <c:url> 태그는 절대 경로를 읽어 최상위 루트인 api_server 부터 경로를 불러온다
그리고 이태그는
src/main/java
src/main/resources
src/main/webapp까지는 자동으로 경로를 잡아줘서
위에서 js 파일의 경로를 불러올때
</c:url value='/src/main/webapp/js/excel/test.js'/> 처럼 전부 기입 할 필요 없이
<c:url value='/js/excel/test.js'/> <--------------------------이렇게 설정해주면 된다.