반응형
JSP/Servlet/Java 현재 경로 알아내는 방법
웹 개발을 하다 보면 현재 작업 중인 파일이나 디렉토리의 경로를 알아내야 하는 상황이 자주 발생합니다. JSP, Servlet, Java 각 환경에서 현재 경로를 알아내는 방법은 조금씩 다릅니다. 이 글에서는 각 환경별로 현재 경로를 쉽고 정확하게 알아내는 방법을 상세히 알아보겠습니다. 상대 경로와 절대 경로의 차이부터 운영체제별 경로 처리, 실무에서 자주 발생하는 문제 해결까지 웹 개발 시 꼭 필요한 경로 처리 지식을 모두 담았습니다.

목차
1. Java에서 현재 경로 알아내기
2. JSP에서 현재 경로 알아내기
3. Servlet에서 현재 경로 알아내기
4. 상대 경로와 절대 경로 이해하기
5. 자주 묻는 질문 (FAQ)
#1. Java에서 현재 경로 알아내기
일반 Java 애플리케이션에서는 다양한 방법으로 현재 작업 디렉토리와 클래스 경로를 알아낼 수 있습니다. Java 환경에서 경로를 다루는 방법은 실행 위치, 클래스 파일 위치, 리소스 위치에 따라 달라지며, 각 상황에 맞는 적절한 메서드를 선택해야 합니다.
1) 현재 작업 디렉토리(Working Directory) 얻기
Java 애플리케이션이 실행되는 현재 작업 디렉토리를 얻는 방법은 세 가지가 있습니다. 각 방법은 동일한 결과를 반환하지만, Java 버전과 코드 스타일에 따라 선택할 수 있습니다.
// 방법 1: System.getProperty() 사용
String currentPath = System.getProperty("user.dir");
System.out.println("현재 작업 디렉토리: " + currentPath);
// 방법 2: java.nio.file.Paths 사용 (Java 7 이상)
import java.nio.file.Paths;
String currentPath = Paths.get("").toAbsolutePath().toString();
System.out.println("현재 작업 디렉토리: " + currentPath);
// 방법 3: new File("").getAbsolutePath() 사용
import java.io.File;
String currentPath = new File("").getAbsolutePath();
System.out.println("현재 작업 디렉토리: " + currentPath);
String currentPath = System.getProperty("user.dir");
System.out.println("현재 작업 디렉토리: " + currentPath);
// 방법 2: java.nio.file.Paths 사용 (Java 7 이상)
import java.nio.file.Paths;
String currentPath = Paths.get("").toAbsolutePath().toString();
System.out.println("현재 작업 디렉토리: " + currentPath);
// 방법 3: new File("").getAbsolutePath() 사용
import java.io.File;
String currentPath = new File("").getAbsolutePath();
System.out.println("현재 작업 디렉토리: " + currentPath);
. . . . .
2) 클래스 파일 위치 얻기
실행 중인 클래스 파일이나 리소스 파일의 위치를 알아내는 것은 설정 파일 로드, 외부 리소스 접근 등에서 매우 중요합니다. 특히 JAR 파일로 패키징된 애플리케이션에서는 이 방법이 필수적입니다.
// 현재 클래스 파일의 위치 얻기
URL location = MyClass.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println("클래스 위치: " + location.getPath());
// 클래스 로더를 통해 리소스 위치 얻기
URL resourceUrl = MyClass.class.getClassLoader().getResource(".");
System.out.println("리소스 루트 위치: " + resourceUrl.getPath());
// 특정 리소스 파일 위치 얻기
URL configFile = MyClass.class.getClassLoader().getResource("config.properties");
System.out.println("설정 파일 위치: " + configFile.getPath());
URL location = MyClass.class.getProtectionDomain().getCodeSource().getLocation();
System.out.println("클래스 위치: " + location.getPath());
// 클래스 로더를 통해 리소스 위치 얻기
URL resourceUrl = MyClass.class.getClassLoader().getResource(".");
System.out.println("리소스 루트 위치: " + resourceUrl.getPath());
// 특정 리소스 파일 위치 얻기
URL configFile = MyClass.class.getClassLoader().getResource("config.properties");
System.out.println("설정 파일 위치: " + configFile.getPath());
. . . . .
3) 클래스패스 내 모든 경로 출력하기
개발 환경에서 디버깅이나 경로 문제 해결 시 클래스패스에 포함된 모든 경로를 확인하는 것이 유용합니다. 특히 라이브러리 충돌이나 리소스 로딩 문제 발생 시 반드시 확인해야 할 정보입니다.
// 클래스패스 내 모든 경로 출력
String classpath = System.getProperty("java.class.path");
String[] classpathEntries = classpath.split(File.pathSeparator);
System.out.println("클래스패스 항목:");
for (String path : classpathEntries) {
System.out.println(path);
}
String classpath = System.getProperty("java.class.path");
String[] classpathEntries = classpath.split(File.pathSeparator);
System.out.println("클래스패스 항목:");
for (String path : classpathEntries) {
System.out.println(path);
}
#2. JSP에서 현재 경로 알아내기
JSP에서는 웹 애플리케이션의 컨텍스트 관련 경로를 알아내는 방법이 다양합니다. 실제 파일시스템 경로, URL 경로, 컨텍스트 경로를 구분하여 사용하는 것이 중요합니다. JSP는 서버에서 실행되므로 클라이언트 브라우저와 서버 파일시스템의 경로가 다르다는 점을 명심해야 합니다.
1) 웹 애플리케이션 루트 경로 얻기
JSP에서 가장 기본이 되는 경로 정보들입니다. 파일 업로드, 로그 저장, 리소스 접근 등 다양한 상황에서 활용됩니다.
<%
// 웹 애플리케이션의 실제 파일시스템 경로
String realPath = application.getRealPath("/");
out.println("웹 애플리케이션 실제 경로: " + realPath + "<br>");
// 컨텍스트 경로 (URL 상의 경로)
String contextPath = request.getContextPath();
out.println("컨텍스트 경로: " + contextPath + "<br>");
// 현재 JSP 파일의 실제 경로
String jspRealPath = application.getRealPath(request.getServletPath());
out.println("현재 JSP 파일 실제 경로: " + jspRealPath + "<br>");
// 현재 JSP 파일의 URI
String jspUri = request.getRequestURI();
out.println("현재 JSP URI: " + jspUri + "<br>");
// 현재 JSP 파일이 있는 디렉토리의 실제 경로
String jspDirRealPath = new java.io.File(application.getRealPath(request.getServletPath())).getParent();
out.println("현재 JSP 디렉토리 실제 경로: " + jspDirRealPath + "<br>");
%>
// 웹 애플리케이션의 실제 파일시스템 경로
String realPath = application.getRealPath("/");
out.println("웹 애플리케이션 실제 경로: " + realPath + "<br>");
// 컨텍스트 경로 (URL 상의 경로)
String contextPath = request.getContextPath();
out.println("컨텍스트 경로: " + contextPath + "<br>");
// 현재 JSP 파일의 실제 경로
String jspRealPath = application.getRealPath(request.getServletPath());
out.println("현재 JSP 파일 실제 경로: " + jspRealPath + "<br>");
// 현재 JSP 파일의 URI
String jspUri = request.getRequestURI();
out.println("현재 JSP URI: " + jspUri + "<br>");
// 현재 JSP 파일이 있는 디렉토리의 실제 경로
String jspDirRealPath = new java.io.File(application.getRealPath(request.getServletPath())).getParent();
out.println("현재 JSP 디렉토리 실제 경로: " + jspDirRealPath + "<br>");
%>
. . . . .
2) 상대 URL 생성하기
JSP에서 CSS, JavaScript, 이미지 등 리소스를 참조하거나 다른 페이지로 링크를 생성할 때 필요한 URL 조합 방법입니다. 절대 URL과 상대 URL을 적절히 사용하면 배포 환경이 변경되어도 안정적으로 동작합니다.
<%
// 현재 페이지 기준 상대 URL 생성
String currentUrl = request.getRequestURL().toString();
String baseUrl = currentUrl.substring(0, currentUrl.lastIndexOf("/"));
out.println("현재 URL 기준 상대 경로: " + baseUrl + "<br>");
// 웹 애플리케이션 루트 기준 절대 URL 생성
String absoluteUrl = request.getScheme() + "://" + request.getServerName() + ":" +
request.getServerPort() + request.getContextPath();
out.println("웹 애플리케이션 루트 URL: " + absoluteUrl + "<br>");
%>
// 현재 페이지 기준 상대 URL 생성
String currentUrl = request.getRequestURL().toString();
String baseUrl = currentUrl.substring(0, currentUrl.lastIndexOf("/"));
out.println("현재 URL 기준 상대 경로: " + baseUrl + "<br>");
// 웹 애플리케이션 루트 기준 절대 URL 생성
String absoluteUrl = request.getScheme() + "://" + request.getServerName() + ":" +
request.getServerPort() + request.getContextPath();
out.println("웹 애플리케이션 루트 URL: " + absoluteUrl + "<br>");
%>
. . . . .
3) pageContext 객체 활용하기
pageContext는 JSP의 내장 객체 중 하나로, 다양한 스코프와 컨텍스트 정보에 접근할 수 있는 통합 인터페이스를 제공합니다.
<%
// pageContext를 사용한 컨텍스트 경로 얻기
String contextPath2 = pageContext.getServletContext().getContextPath();
out.println("pageContext를 통한 컨텍스트 경로: " + contextPath2 + "<br>");
// 현재 서블릿 경로
String servletPath = pageContext.getRequest().getServletPath();
out.println("현재 서블릿 경로: " + servletPath + "<br>");
%>
// pageContext를 사용한 컨텍스트 경로 얻기
String contextPath2 = pageContext.getServletContext().getContextPath();
out.println("pageContext를 통한 컨텍스트 경로: " + contextPath2 + "<br>");
// 현재 서블릿 경로
String servletPath = pageContext.getRequest().getServletPath();
out.println("현재 서블릿 경로: " + servletPath + "<br>");
%>
#3. Servlet에서 현재 경로 알아내기
Servlet에서는 HttpServletRequest와 ServletContext 객체를 통해 다양한 경로 정보를 얻을 수 있습니다. Servlet은 JSP보다 더 세밀한 제어가 가능하며, RESTful API 개발이나 파일 처리 작업에서 자주 사용됩니다.
1) 기본적인 경로 정보 얻기
Servlet의 doGet 또는 doPost 메서드 내에서 사용할 수 있는 기본 경로 조회 방법입니다.
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
// 컨텍스트 경로
String contextPath = request.getContextPath();
out.println("컨텍스트 경로: " + contextPath + "<br>");
// 서블릿 경로
String servletPath = request.getServletPath();
out.println("서블릿 경로: " + servletPath + "<br>");
// 웹 애플리케이션 실제 경로
ServletContext context = getServletContext();
String realPath = context.getRealPath("/");
out.println("웹 애플리케이션 실제 경로: " + realPath + "<br>");
// 현재 서블릿의 실제 경로
String servletRealPath = context.getRealPath(servletPath);
out.println("현재 서블릿 실제 경로: " + servletRealPath + "<br>");
}
throws ServletException, IOException {
PrintWriter out = response.getWriter();
// 컨텍스트 경로
String contextPath = request.getContextPath();
out.println("컨텍스트 경로: " + contextPath + "<br>");
// 서블릿 경로
String servletPath = request.getServletPath();
out.println("서블릿 경로: " + servletPath + "<br>");
// 웹 애플리케이션 실제 경로
ServletContext context = getServletContext();
String realPath = context.getRealPath("/");
out.println("웹 애플리케이션 실제 경로: " + realPath + "<br>");
// 현재 서블릿의 실제 경로
String servletRealPath = context.getRealPath(servletPath);
out.println("현재 서블릿 실제 경로: " + servletRealPath + "<br>");
}
. . . . .
2) URL 관련 정보 얻기
클라이언트가 요청한 전체 URL 정보를 파싱하고 분석할 때 사용합니다. 보안 로깅, 접근 제어, 리다이렉션 처리에서 필수적인 정보입니다.
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
// 요청 URL
StringBuffer requestURL = request.getRequestURL();
out.println("요청 URL: " + requestURL.toString() + "<br>");
// 요청 URI
String requestURI = request.getRequestURI();
out.println("요청 URI: " + requestURI + "<br>");
// 쿼리 스트링
String queryString = request.getQueryString();
out.println("쿼리 스트링: " + queryString + "<br>");
// 전체 URL (쿼리 스트링 포함)
String fullURL = requestURL.toString();
if (queryString != null) {
fullURL += "?" + queryString;
}
out.println("전체 URL: " + fullURL + "<br>");
}
throws ServletException, IOException {
PrintWriter out = response.getWriter();
// 요청 URL
StringBuffer requestURL = request.getRequestURL();
out.println("요청 URL: " + requestURL.toString() + "<br>");
// 요청 URI
String requestURI = request.getRequestURI();
out.println("요청 URI: " + requestURI + "<br>");
// 쿼리 스트링
String queryString = request.getQueryString();
out.println("쿼리 스트링: " + queryString + "<br>");
// 전체 URL (쿼리 스트링 포함)
String fullURL = requestURL.toString();
if (queryString != null) {
fullURL += "?" + queryString;
}
out.println("전체 URL: " + fullURL + "<br>");
}
. . . . .
3) 서버 정보 얻기
서버의 기본 정보를 조회하여 프로토콜, 호스트, 포트 등을 조합한 베이스 URL을 생성할 수 있습니다. 이는 이메일 발송, 외부 시스템 연동, API 응답 생성 시 활용됩니다.
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
// 서버 이름
String serverName = request.getServerName();
out.println("서버 이름: " + serverName + "<br>");
// 서버 포트
int serverPort = request.getServerPort();
out.println("서버 포트: " + serverPort + "<br>");
// 프로토콜
String scheme = request.getScheme();
out.println("프로토콜: " + scheme + "<br>");
// 서버 기본 URL
String serverBaseURL = scheme + "://" + serverName + ":" + serverPort;
out.println("서버 기본 URL: " + serverBaseURL + "<br>");
}
throws ServletException, IOException {
PrintWriter out = response.getWriter();
// 서버 이름
String serverName = request.getServerName();
out.println("서버 이름: " + serverName + "<br>");
// 서버 포트
int serverPort = request.getServerPort();
out.println("서버 포트: " + serverPort + "<br>");
// 프로토콜
String scheme = request.getScheme();
out.println("프로토콜: " + scheme + "<br>");
// 서버 기본 URL
String serverBaseURL = scheme + "://" + serverName + ":" + serverPort;
out.println("서버 기본 URL: " + serverBaseURL + "<br>");
}
#4. 상대 경로와 절대 경로 이해하기
웹 개발에서 경로를 다룰 때는 상대 경로와 절대 경로의 차이를 이해하는 것이 중요합니다. 잘못된 경로 참조는 404 에러나 리소스 로딩 실패의 주요 원인이므로 명확한 이해가 필요합니다.
1) 절대 경로 vs 상대 경로
절대 경로는 루트부터 시작하는 전체 경로이며, 상대 경로는 현재 위치를 기준으로 한 경로입니다. 웹 애플리케이션에서는 컨텍스트 루트를 포함한 절대 경로 사용을 권장합니다.
<%
// 절대 경로 (컨텍스트 루트부터 시작)
String absolutePath = request.getContextPath() + "/resources/css/style.css";
out.println("절대 경로: " + absolutePath + "<br>");
// 상대 경로 (현재 페이지 기준)
String relativePath = "./resources/css/style.css";
out.println("상대 경로: " + relativePath + "<br>");
// 상위 디렉토리로 이동하는 상대 경로
String parentRelativePath = "../images/logo.png";
out.println("상위 디렉토리 상대 경로: " + parentRelativePath + "<br>");
%>
// 절대 경로 (컨텍스트 루트부터 시작)
String absolutePath = request.getContextPath() + "/resources/css/style.css";
out.println("절대 경로: " + absolutePath + "<br>");
// 상대 경로 (현재 페이지 기준)
String relativePath = "./resources/css/style.css";
out.println("상대 경로: " + relativePath + "<br>");
// 상위 디렉토리로 이동하는 상대 경로
String parentRelativePath = "../images/logo.png";
out.println("상위 디렉토리 상대 경로: " + parentRelativePath + "<br>");
%>
. . . . .
2) 경로 조합하기
Java NIO의 Paths 클래스를 사용하면 운영체제에 독립적인 경로 조작이 가능합니다. 파일 경로를 동적으로 생성할 때 유용합니다.
// Java에서 경로 조합하기 (java.nio.file.Paths 사용)
import java.nio.file.Path;
import java.nio.file.Paths;
public void combinePaths() {
Path basePath = Paths.get("/var/www/html");
Path combinedPath = basePath.resolve("resources/images");
System.out.println("조합된 경로: " + combinedPath.toString());
// 상위 디렉토리 참조하기
Path parentPath = combinedPath.getParent();
System.out.println("부모 경로: " + parentPath.toString());
}
import java.nio.file.Path;
import java.nio.file.Paths;
public void combinePaths() {
Path basePath = Paths.get("/var/www/html");
Path combinedPath = basePath.resolve("resources/images");
System.out.println("조합된 경로: " + combinedPath.toString());
// 상위 디렉토리 참조하기
Path parentPath = combinedPath.getParent();
System.out.println("부모 경로: " + parentPath.toString());
}
. . . . .
3) 경로 문제 해결 사례
| 문제 상황 | 원인 | 해결 방법 |
|---|---|---|
| CSS/JS 파일이 로드되지 않음 | 상대 경로로 인한 참조 오류 | 컨텍스트 경로를 포함한 절대 경로 사용 |
| 이미지가 표시되지 않음 | 배포 환경에서 경로 변경 | getRealPath()로 실제 경로 확인 |
| 파일 업로드 경로 오류 | 임시 디렉토리 권한 문제 | 별도의 업로드 디렉토리 지정 |
| 클래스패스 리소스 접근 실패 | JAR 내부 파일 경로 참조 | getResourceAsStream() 사용 |
#5. 자주 묻는 질문 (FAQ)
1) Q: getRealPath()와 getResourceAsStream()의 차이는 무엇인가요?
getRealPath()는 웹 애플리케이션이 파일시스템에 압축 해제되어 있을 때 실제 파일 경로를 반환합니다. 반면 getResourceAsStream()은 WAR 파일 내부의 리소스에도 접근 가능하며, 클래스패스의 리소스를 InputStream으로 읽어옵니다. 배포 환경에서는 getResourceAsStream()이 더 안정적입니다.
. . . . .
2) Q: 개발 환경과 운영 환경에서 경로가 달라지는데 어떻게 해야 하나요?
절대 경로를 하드코딩하지 말고 ServletContext의 getRealPath()나 request.getContextPath()를 사용하여 동적으로 경로를 구성하세요. 또는 설정 파일(properties)에 환경별 경로를 정의하고 읽어오는 방식을 사용하면 환경 전환이 용이합니다.
. . . . .
3) Q: JSP에서 request.getContextPath()를 매번 쓰는 게 번거로운데 다른 방법이 있나요?
JSTL의 <c:url> 태그를 사용하거나, JSP 페이지 상단에 변수로 저장해두고 재사용할 수 있습니다. 예: <% String ctx = request.getContextPath(); %> 또는 EL 표현식으로 ${pageContext.request.contextPath}를 사용하면 간편합니다.
. . . . .
4) Q: 경로에 한글이 포함되면 깨지는데 어떻게 해결하나요?
한글이 포함된 경로는 UTF-8로 URL 인코딩해야 합니다. URLEncoder.encode(path, "UTF-8")를 사용하거나, Tomcat의 server.xml에서 URIEncoding="UTF-8"을 설정하세요. 또한 JSP 페이지 상단에 <%@ page contentType="text/html; charset=UTF-8" %>를 추가하는 것을 잊지 마세요.
. . . . .
5) Q: Windows와 Linux에서 경로 구분자가 다른데 어떻게 처리하나요?
File.separator 상수를 사용하거나 java.nio.file.Paths 클래스를 사용하면 운영체제에 관계없이 올바른 경로 구분자를 자동으로 사용합니다. 예: Paths.get("resources", "images", "logo.png")는 Windows에서는 resources\images\logo.png로, Linux에서는 resources/images/logo.png로 자동 변환됩니다.
. . . . .
6) Q: 클래스패스와 웹 경로를 혼동하는데 차이가 무엇인가요?
클래스패스는 Java 클래스와 리소스 파일이 위치하는 경로로, WEB-INF/classes와 WEB-INF/lib의 JAR 파일들이 포함됩니다. 웹 경로는 브라우저에서 접근 가능한 URL 경로로, 웹 애플리케이션 루트 아래의 파일들을 가리킵니다. WEB-INF 아래 파일은 클래스패스로는 접근 가능하지만 웹 경로로는 직접 접근할 수 없습니다.
. . . . .
7) Q: application.getRealPath("/")가 null을 반환하는 경우가 있나요?
네, WAR 파일이 압축 해제되지 않고 실행되는 경우나 일부 클라우드 환경에서는 null을 반환할 수 있습니다. 이런 경우에는 getResourceAsStream()이나 getResource()를 사용하여 리소스에 접근해야 합니다. 파일 쓰기가 필요하다면 임시 디렉토리나 별도 지정된 디렉토리를 사용하세요.
. . . . .
8) Q: Servlet에서 정적 리소스 경로를 어떻게 관리하는 게 좋나요?
web.xml이나 @WebServlet 어노테이션으로 별도의 리소스 서블릿을 등록하거나, Spring Framework를 사용한다면 <mvc:resources> 설정을 활용하세요. 또는 웹 서버(Apache, Nginx)에서 정적 리소스를 직접 서비스하도록 구성하면 성능도 향상됩니다.
. . . . .
9) Q: JSP include 시 상대 경로와 절대 경로 중 어떤 것을 사용해야 하나요?
<%@ include %>는 현재 JSP 기준 상대 경로를 사용하고, <jsp:include>는 컨텍스트 루트 기준 절대 경로를 사용합니다. 재사용 가능한 공통 파일(헤더, 푸터 등)은 절대 경로를 사용하는 것이 유지보수에 유리합니다. 예: <jsp:include page="/common/header.jsp">
. . . . .
10) Q: 파일 업로드 시 저장 경로는 어떻게 설정하는 게 안전한가요?
웹 애플리케이션 루트 외부의 별도 디렉토리를 사용하는 것이 보안상 안전합니다. 웹 루트 내부에 저장하면 악의적인 스크립트 파일이 실행될 위험이 있습니다. 설정 파일에 업로드 경로를 정의하고, 서버 시작 시 해당 디렉토리 존재 여부와 쓰기 권한을 검증하세요. 파일명도 UUID 등으로 변환하여 저장하는 것이 좋습니다.
마무리
JSP, Servlet, Java 각 환경에서 현재 경로를 알아내는 방법은 조금씩 다르지만, 기본 원리를 이해하면 웹 개발을 더 효율적으로 할 수 있습니다. 특히 웹 애플리케이션에서는 상대 경로와 절대 경로의 차이를 이해하고, 실제 파일 시스템 경로와 웹 URL 경로를 적절히 구분하여 사용하는 것이 중요합니다.
이 글에서 다룬 핵심 내용을 정리하면 다음과 같습니다.
① Java 환경에서는 System.getProperty("user.dir"), Paths.get(""), File.getAbsolutePath() 등을 활용하여 작업 디렉토리를 확인하고, 클래스 로더를 통해 리소스 경로에 접근할 수 있습니다.
② JSP에서는 application.getRealPath(), request.getContextPath(), pageContext 등을 활용하여 웹 애플리케이션의 실제 경로와 URL 경로를 모두 확인할 수 있습니다.
③ Servlet에서는 HttpServletRequest와 ServletContext를 통해 요청 URL, 서버 정보, 컨텍스트 경로 등 상세한 경로 정보를 얻을 수 있습니다.
④ 운영체제 독립적인 경로 처리를 위해 File.separator나 java.nio.file.Paths를 사용하고, URL 인코딩으로 한글 경로 문제를 해결할 수 있습니다.
⑤ 개발 환경과 운영 환경의 경로 차이를 고려하여 동적 경로 생성 방식을 사용하고, WAR 배포 시에는 getResourceAsStream()을 활용하는 것이 안전합니다.
웹 개발 시 발생하는 경로 관련 문제의 대부분은 환경 차이와 경로 표기법의 혼동에서 오므로, 이를 명확히 이해하고 적용하는 것이 중요합니다. 이 가이드를 활용하면 다양한 환경에서 정확하게 경로를 처리할 수 있으며, 경로 관련 문제를 효과적으로 해결할 수 있을 것입니다.
긴 글 읽어주셔서 감사합니다.
끝.
끝.
반응형
'Development > Web' 카테고리의 다른 글
| [Web] 뷰 컴포넌트 통신 (0) | 2022.09.19 |
|---|---|
| [Web] 뷰 컴포넌트 (0) | 2022.09.18 |
| [Web] 뷰 인스턴스 라이프 사이클 (0) | 2022.09.18 |
| [Web] 뷰 인스턴스 (0) | 2022.09.18 |
| [Web] JSP에서 데이터를 엑셀 파일로 내보내는 방법 가이드 (0) | 2020.04.08 |