JSP에서 현재 URL 정보 얻기 및 request context의 parameter 얻어오기
EL 문법을 이용하여 request 객체의 getRequestURL 메소드 수행 결과를 얻기위한 코드는 다음과 같습니다.
${ pageContext.request.requestURL } ${ pageContext.request.requestURI }
pageContext는 javax.servlet.jsp.PageContext 클래스가 인스턴스화 된 것을 의미하는데, 이는 현재 JSP 서블릿 자체가 가지고 있는 Page Context 영역을 의미합니다.
위 코드는 현재 page 영역에 들어있는 데이터 중 request 객체에 담겨있던 정보를 꺼내오기 위한 코드라고 할 수 있습니다.
위 명령은 다음의 스크립트릿과 동일합니다.
<%= request.getRequestURL() %>
스크립트릿에서 사용하는 request는 현재 JSP 서블릿이 인스턴스화 될 때 인자로 전달되었던 HttpServletRequest 객체를 의미합니다. 해당 객체가 인스턴스화 되었을 때 가지게 되는 정보들에 접근하기 위해 위처럼 짧게 접근할 수 있게 됩니다.
JSP란 무엇이며 서블릿은 무엇인지에 대한 고찰이 필요한 것 같은데, 이는 다음에 시간될 때 포스팅 하도록 하겠습니다.
각설하고, 위 내용만 보면 스크립트릿이 더 깔끔하고 짧은 명령어이고 더 직관적이라고 생각할 수도 있지만, 일반적으로 JSP 내에서의 EL 문법을 사용한 코딩은 코딩량을 월등히 많이 줄여줄 뿐더러 가독성까지 높여주는 장점이 있기 때문에 저는 페이지에서의 로직이 필요한 경우 100% EL만 사용하고, 자바 코드는 서비스쪽에서 최대한 처리하도록 코딩하고 있습니다.
현재 URL정보를 얻어 활용할 곳은 무궁무진합니다. 내비게이션 메뉴 중 어디에 hover한 것과 같은 효과를 내야 하는지, 현재 페이지 위치가 어디인지 등을 알기 위해서 주로 사용하는데요.
위 명령을 메인서버, 백업서버, 테스트서버 세곳을 구분하여 접근한 곳이 현재 어떤 페이지인지 가끔 빠른 작업을 진행하다보면 헷갈릴 수 있는데 이때 꽤나 효과적으로(?) 사용하고 있습니다.
추가
request영역에 저장되어있는 파라미터의 value를 꺼내오려면 JSTL에서는 다음과 같이 코드를 작성합니다.
파라미터의 이름은 parameterName으로 가정합니다.
URL이 localhost/pageName?parameterName=1234 형태로 넘어오고 있거나 바디에 POST로 같은 파라미터가 넘어왔다고 가정하면, 아래와 같이 바로 꺼낼 수 있습니다.
${ param.parameterName }
JSTL의 param이라는 키워드는 request 객체에 설정되어있는 파라미터에 접근할 수 있도록 도와줍니다.
JSP에서의 자바 코드라면 다음과 같을 것입니다.
<%= request.getParameter("parameterName") %>
최근 댓글