코딩 개발/Java

JSP EL - 디렉토리 변경 시 path 관리

호소세 2023. 6. 13. 21:30
728x90
반응형

개발하다가 디렉토리를 변경해야하는 상황이 생기면 프로젝트 내에 있는 코드들을 모두 변경해야하는 상황이 옵니다.

 

가령 회원을 관리하는 페이지들을 만들어 놨는데, 다른 기능을 하는 페이지와 구분 짓기 위해서 폴더를 따로 만들어서 보관하려는 상황을 생각해 봅시다.

jsp 파일들

이렇게 파일이 있는데, error.jsp, index.jsp, test-result.jsp 제외하고 다른 파일들은 member 디렉토리로 넣으려고 합니다.

하지만 아마 이미 만들어 놓은 파일은 프로젝트 명이 default로 같기 때문에 굳이 경로를 설정하지 않았을 것입니다. 

또한 경로가 변경되면 기존에 만들어 놓았던 Controller 들의 경로에도 문제가 생기게 됩니다.

 

이러한 문제를 막기 위해서 JSP EL을 이용해서 어플리케이션을 제작할 때부터 미리 손을 써보려고 합니다. 왜냐하면 디렉토리 변경을 하는 경우도 있기도 하고 미래에 무슨 일이 일어날지 모르잖아요~

 

간단한 예시를 보여드리겠습니다.

 

예시

<%@ 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">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>path-test</title>
</head>
<body>
	<div class="container pt-3">
		<h4>경로연습</h4>
		<form action="../FindMemberById.do" method="get">
			<input type="text" name="id" placeholder="회원아이디" required="required">
			<button type="submit">검색</button>
		</form>
		<br><br>
		<img src="../picture/front-controller-pattern.png" width="800">
	</div>
</body>
</html>

Servlet에 보내는 요청 한개와 이미지 파일을 불러오는 요청하나를 예로 들겠습니다.

1. 이미지 파일을 보내는 경로는 사실 결국 꽁꽁 숨겨놓아도 경로를 확인하고 작성해야할 것 같습니다.

2. 대신 사진을 저장한 위치가 자신(실행된 jsp 파일)의 상위 폴더에 picture 에 있다는 것을 잘 작성하면 됩니다.

 

두 번째로, Servlet에 요청을 보내는 경우입니다.

 

1. 위와 마찬가지로 저장된 폴더의 상위 폴더로 해서 .do 요청을 보내는 것입니다.

 

하지만....

이 폴더의 위치를 하나 더 안으로 넣어버리게 되면 그때 또 jsp 파일을 열어서 하나하나 수정하시겠습니까?

 

아닙니다.

 

바로 JSP EL을 이용하여 쉽게 만들 수 있습니다. Controller의 위치는 변경하지 않는다는 가정하에서 진행됩니다.

 

<%@ 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">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>path-test</title>
</head>
<body>
	<div class="container pt-3">
		<h4>경로연습</h4>
		${pageContext.request.contextPath}<br><br>
		<form action="${pageContext.request.contextPath}/FindMemberById.do" method="get">
			<input type="text" name="id" placeholder="회원아이디" required="required">
			<button type="submit">검색</button>
		</form>
		<br><br>
		<img src="${pageContext.request.contextPath}/picture/front-controller-pattern.png" width="800">
	</div>
</body>
</html>

보이십니까?

 

${pageContext.request.contextPath}

1. 이 문장을 이용하면 자신이 만든 Dynamic Project의 이름이 들어가게 됩니다.

2. 그러면 자신이 요청을 보내고 싶은 곳은 이 프로젝트의 하위 폴더들이기 때문에 하위 폴더들만 잘 작성하면 작동이 될 것입니다.

 

이렇게 작성하면 JSP 파일의 디렉토리를 변경해도 Controller에 무사히 요청이 잘 도달할 것입니다.

 

소감

디렉토리 변경 시에 모든 JSP 파일을 변경해야하는 끔찍한 상상을 해버리기 전에 이 기술을 이용해서 미리 만들어야겠습니다. 물론 실수가 피가 되고 살이 되지만 이미 이 지식을 알아버렸기 때문에 미리 리스크를 줄이고 상승에 방해되는 일을 없애는 것도 좋을 것 같습니다.

체력이 중요하다고 생각됩니다. 저는 그래서 비타민을 먹기 시작했어요. 더 좋은 건강을 얻어 2배 더 빠른 부를 얻을 수 있길 바랍니다.

반응형