티스토리 뷰

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'/> <--------------------------이렇게 설정해주면 된다.

댓글