Spring

스프링 <c:url> 예제 (<c:set>)

shika 2022. 2. 20. 19:00

먼저 사진을 보자.

okky에서 고수형님이 올리신 글 같다.

 

 

 

 

<c:url >을 사용하는 이유는

context path를 자동 포함시키기 위함 이라고 한다.

그리고 그것을 동적으로 해주기 때문에 사용법을 알면 쉽다.

 

내가 듣는 강의에서는

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:url var='root' value="/"/> <%--value를 이용해서 절대경로를 구하게된다. --%>

<!-- 상단 메뉴 부분 -->
<nav class="navbar navbar-expand-md bg-dark navbar-dark fixed-top shadow-lg">
	<a class="navbar-brand" href="${root}main">SoftCampus</a>

이런식으로 사용한것을 볼 수 있다.

 

원래 main ${} 없이 그대로 사용한다면 어디서는

href="main"이 

http://localhost:8081/MiniProjectJava/main 일수도 있고

http://localhost:8081/main,

http://localhost:8081/MiniProjectJava/Board/main 일 수도 있는데

${}에서 <c:url>을 사용한다면 동적으로 context path를 바꿔줘서

내가 원하는 위치로 사용해서 사용할 수 있게 되는것이다.

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:url var='root' value="/"/> <%--value를 이용해서 절대경로를 구하게된다. --%>

<a class="navbar-brand" href="${root}main">SoftCampus</a>

 

이것에 대해서 잘 알아두자

많이 사용할 것이라고 한다.

 

----------------------------

그런데 저 방법을 사용할시 jsessionid가 붙는 에러?가 간혹 발생한다.

그래서 

<c:url var='root' value="/"/>

<c:url var='root' value="/"/>

대신에

 

<c:set var='root' value="${pageContext.request.contextPath }/"/>

<c:set var='root' value="${pageContext.request.contextPath }/"/>

를 많이 사용하는것 같다

 

${pageContext.request.contextPath } 에는 마지막에 / 가 안붙기 때문에

꼭 마지막 부분에 /를 추가해주도록 하자.

<c:set var='root' value="${pageContext.request.contextPath }/"/>