스프링 <c:url> 예제 (<c:set>)
먼저 사진을 보자.
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 }/"/>