[MVC 5-4] JSTL_Core - URL 관리 태그

임승현·2023년 1월 26일
0

MVC

목록 보기
23/27

🐧import 태그

📢import 태그 : 다른 웹프로그램을 요청하여 결과를 응답받아 포함하는 태그

→ JSP의 include 액션 태그와 유사한 기능
📌url 속성 : 요청 웹프로그램의 URL 주소를 속성값으로 설정

<c:import url="core_import_target.jsp"/>

📢param 태그 : 요청 웹프로그램에게 값을 전달하기 위한 태그

→ URL 관리 태그의 종속 태그
→ URL 관리 태그에 param 태그를 제외한 코드가 존재할 경우 에러 발생 - JSP 주석 예외

📃core_import_source.jsp

※ webapp/jstl 폴더에 core_import_source.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
	<h1>Core - URL 관리 태그</h1>
	<hr>
	<p>core_import_source.jsp 문서의 응답 결과입니다.</p>
	<%-- ----------------------------------------------------------------------------------------------------- --%>
	<%-- import 태그 : 다른 웹프로그램을 요청하여 결과를 응답받아 포함하는 태그 --%>
	<%-- → JSP의 include 액션 태그와 유사한 기능 --%>
	<%-- url 속성 : 요청 웹프로그램의 URL 주소를 속성값으로 설정 --%>
	<%-- <c:import url="core_import_target.jsp"/> --%>
	<%-- ----------------------------------------------------------------------------------------------------- --%>
	<%-- JSP의 include 태그는 현재 서버의 웹프로그램만 요청하여 실행 결과를 응답받아 포함 하지만 
	import 태그는 다른 서버의 웹프로그램을 요청하여 실행결과를 응답받아 포함 가능 --%>
	<%-- → HTML의 iframe 태그와 유사한 기능을 제공 --%>
	<%-- <c:import url="https://www.naver.com"/> --%>
	<%-- ----------------------------------------------------------------------------------------------------- --%>
	<%-- URL 관리 태그에서는 param 태그를 하위태그로 사용하여 값 전달 가능 --%>
	<c:import url="core_import_target.jsp">
		<%-- param 태그 : 요청 웹프로그램에게 값을 전달하기 위한 태그 --%>
		<%-- → URL 관리 태그의 종속 태그 --%>
		<%-- → URL 관리 태그에 param 태그를 제외한 코드가 존재할 경우 에러 발생 - JSP 주석 예외 --%>
		<c:param name="name" value="홍길동"/>
	</c:import>
</body>
</html>

📃core_import_target.jsp

※ webapp/jstl 폴더에 core_import_target.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
	<h1>Core - URL 관리 태그</h1>
	<hr>
	<p>core_import_target.jsp 문서의 응답 결과입니다.</p>
	<p>${param.name }님, 안녕하세요.</p>
</body>
</html>

🐧redirect 태그

📢redirect 태그 : 클라이언트에게 URL 주소를 전달하여 재요청하도록 응답 처리하는 태그

📌url 속성 : 클라이언트에게 전달하여 재요청하기 위한 URL 주소를 속성값으로 설정

📃core_redirect_form.jsp

※ webapp/jstl 폴더에 core_redirect_form.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
	<h1>Core - URL 관리 태그</h1>
	<hr>
	<form action="core_redirect_action.jsp" method="post">
		이름 : <input type="text" name="name">
		<button type="submit">전송</button>
	</form>
</body>
</html>

📃core_redirect_action.jsp

※ webapp/jstl 폴더에 core_redirect_action.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
	<h1>Core - URL 관리 태그</h1>
	<hr>
	<c:choose>
		<c:when test="${!empty(param.name) }">
			<p>${param.name }님, 안녕하세요.</p>
		</c:when>
		<c:otherwise>
			<%-- redirect 태그 : 클라이언트에게 URL 주소를 전달하여 재요청하도록 응답 처리하는 태그 --%>
			<%-- url 속성 : 클라이언트에게 전달하여 재요청하기 위한 URL 주소를 속성값으로 설정 --%>
			<c:redirect url="core_redirect_form.jsp"></c:redirect>
		</c:otherwise>
	</c:choose>
</body>
</html>

🐧url 태그

📢url 태그 : 컨텍스트 경로가 포함된 웹자원의 절대경로를 제공하는 태그

📌value 속성 : 컨텍스트 경로를 제외한 웹자원의 절대경로를 속성값으로 설정

📃core_url.jsp

※ webapp/jstl 폴더에 core_url.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
	<h1>Core - URL 관리 태그</h1>
	<hr>
	<%-- 웹자원을 상대경로로 표현하여 제공 --%>
	<%-- 상대경로 : 현재 요청 웹프로그램의 경로를 기준으로 웹자원의 경로를 표현하는 방법 --%>
	<%-- 문제점) MVC 패턴을 이용하여 JSP Model-2 방식으로 웹프로그램 작성시 요청 웹프로그램(컨드롤러)의 경로와 응답 웹프로그램(뷰)의 경로가 다른 경우 404 에러 발생 --%>
	<%-- 해결법) 웹자원의 경로를 절대경로로 표현하여 제공 --%>
	<img src="images/Koala.jpg" width="200">
	<%-- ----------------------------------------------------------------------------------------------------- --%>
	<%-- 절대경로 : 최상위 디렉토리를 기준으로 웹자원의 경로를 표현하는 방법 --%>
	<%-- → CSL(HTML, CSS, JavaScript 등)에서는 서버의 디렉토리를 최상위 디렉토리로 처리 --%>
	<%-- 문제점) 컨텍스트(mvc) 이름이 변경될 경우 컨텍스트 경로가 변경되어 404 에러 발생 --%>
	<%-- 해결법) request 객체의 메소드를 호출하여 컨텍스트 경로를 반환받아 사용 --%>
	<img src="/mvc/jstl/images/Koala.jpg" width="200">
	<%-- ----------------------------------------------------------------------------------------------------- --%>
	<%-- request.getContextPath() 메소드를 호출하여 컨텍스트 경로를 반환받아 절대경로로 표현 --%>
	<img src="<%=request.getContextPath() %>/jstl/images/Koala.jpg" width="200">
	<%-- ----------------------------------------------------------------------------------------------------- --%>
	<%-- EL 표현식에서 pageContext 내장객체를 사용하여 컨텍스트 경로를 제공받아 절대경로로 표현 --%>
	<img src="${pageContext.request.contextPath }/jstl/images/Koala.jpg" width="200">
	<%-- ----------------------------------------------------------------------------------------------------- --%>
	<%-- url 태그 : 컨텍스트 경로가 포함된 웹자원의 절대경로를 제공하는 태그 --%>
	<%-- value 속성 : 컨텍스트 경로를 제외한 웹자원의 절대경로를 속성값으로 설정 --%>
	<img src='<c:url value="/jstl/images/Koala.jpg"/>' width="200">
</body>
</html>

0개의 댓글