JSP의 isScriptingEnabled 속성이란?
isScriptingEnabled는 JSP page 디렉티브의 속성 중 하나로, 해당 JSP 페이지에서 스크립틀릿(scriptlet), 표현식(expression), 선언문(declaration)과 같은 스크립팅 요소(scripting elements)의 사용을 허용할지 여부를 결정합니다.
기본값과 동작 방식
이 속성의 기본값은 true입니다. 기본값인 true 상태에서는 스크립틀릿(<% %>), 표현식(<%= %>, EL 제외), 선언문(<%! %>)을 모두 자유롭게 사용할 수 있습니다.
반면 속성 값을 false로 설정하면, JSP 페이지가 서블릿으로 변환되는 번역 시점(translation-time)에 스크립틀릿, 표현식(EL이 아닌 형태), 선언문이 발견될 때마다 오류가 발생합니다. 즉, 실행 시점이 아니라 컴파일 단계에서부터 스크립팅 요소의 사용이 차단되는 것입니다.
false로 설정하는 방법
스크립틀릿, 표현식(EL 제외), 선언문의 사용을 제한하고 싶다면 page 디렉티브에서 다음과 같이 속성 값을 false로 지정하면 됩니다.
<%@ page isScriptingEnabled = "false" %>
이 속성을 사용하면 좋은 이유
isScriptingEnabled를 false로 설정하면 다음과 같은 이점을 얻을 수 있습니다.
- 코드 품질 향상: 뷰 영역에서 자바 코드를 직접 작성하는 것을 막아, EL(Expression Language)과 JSTL 중심의 깔끔한 구조로 개발할 수 있습니다.
- 유지보수성 강화: 비즈니스 로직과 화면 출력을 분리해 추후 수정과 테스트가 쉬워집니다.
- 팀 개발 규칙 적용: 여러 개발자가 참여하는 프로젝트에서 스크립틀릿 사용을 원천적으로 차단해 일관된 코딩 스타일을 강제할 수 있습니다.
참고로 페이지 단위 제어가 아니라 웹 애플리케이션 전체에 스크립팅을 금지하고 싶다면, web.xml의 jsp-property-group에서 <scripting-invalid>true</scripting-invalid> 설정을 사용하는 방법도 있습니다. 개별 페이지만 제어할 때는 isScriptingEnabled 속성을, 애플리케이션 전체 정책에는 web.xml 설정을 활용하는 것이 효과적입니다.