JSP(JavaServer Pages)는 서버 사이드에서 HTML을 생성하는 대표적인 기술로, 유지보수가 쉬우면서도 유연하게 백엔드와 프론트엔드가 연동될 수 있다는 장점이 있습니다. 그러나 프로젝트 규모가 커지면 JSP 렌더링 성능이 병목이 되거나, 디버깅/로딩 속도 저하로 인해 생산성이 떨어질 수 있습니다.
이 포스팅에서는 IntelliJ 환경에서 JSP의 성능과 개발 생산성을 향상시키는 방법을 소개합니다.
1. JSP 캐싱 활성화 및 Pre-compilation
1) 톰캣에서 JSP 캐싱 기본 활성화
톰캣은 기본적으로 JSP를 최초 요청 시 Servlet으로 컴파일하고, 이후에는 캐시된 서블릿을 재사용합니다. 다만 설정에 따라 매번 재컴파일이 발생할 수 있습니다.
2) 개발 시에는 변경된 파일만 컴파일되도록 설정
<!-- web.xml 설정 예시 -->
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>development</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
💡 development=false로 설정 시, 매번 JSP를 다시 컴파일하지 않음
3) JSP Pre-compilation 적용
- Apache Ant 또는 Maven 플러그인으로 JSP를 미리 서블릿으로 컴파일 가능
- WAR 배포 전 성능 검증 가능
2. IntelliJ 최적 설정
1) Build → Compiler → Build project automatically
- 설정: Settings > Advanced Settings > Compiler
- 빌드 없이 저장만으로 JSP 갱신 가능
2) Live Reload 기능 활용
- Ctrl + Shift + A → Registry → compiler.automake.allow.when.app.running 설정 활성화
- 변경 즉시 톰캣에 반영되어 빠른 피드백 가능
3) 불필요한 recompile 방지
- target/, out/ 디렉토리 감시 대상에서 제외
- Settings > File Watchers 확인
3. JSP 코드 자체 최적화
1) scriptlet 제거
- <% %> 대신 JSTL, EL(Expression Language) 사용
- 비즈니스 로직은 최대한 Java 클래스에서 처리
2) include 최적화
- <%@ include file="..." %>: 정적 include, 성능 좋음
- <jsp:include page="..." />: 동적 include, 요청마다 처리됨 → 최소화
3) 반복 렌더링 최소화
- c:forEach 내 불필요한 DB 호출, 연산 지양
- JSTL 함수는 뷰 전용 가공에만 사용
4. HTML/CSS/JS 리소스 최적화
JSP 성능뿐 아니라 최종 결과물인 HTML의 렌더링 성능도 중요합니다.
1) 정적 리소스 캐싱
<%@ page session="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
💡 캐시 버전 파라미터를 붙여 브라우저 캐시 관리
2) CDN 사용
- jQuery, Bootstrap 등은 CDN 사용하여 초기 로딩 속도 개선
3) 최소화 & 번들링
- Webpack, Gulp 등을 사용해 JS/CSS를 번들링 및 압축
5. JSP 개발 중 메모리/GC 튜닝
1) Tomcat JVM 옵션 튜닝
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
2) IntelliJ Heap 설정 확장
- Help > Change Memory Settings → IDE Heap 최대값 증가 (2048MB 권장)
6. 개발용 서버 vs 운영 서버 설정 구분
- 개발환경에서는 빠른 반영, 디버깅 중심 (development=true, auto deploy)
- 운영환경에서는 성능 중심 (precompiled, 캐싱 최적화, JSTL 최소화)
설정 분기를 다음과 같이 관리:
<context-param>
<param-name>env</param-name>
<param-value>dev</param-value>
</context-param>
결론
JSP는 잘만 설정하면 가볍고 빠른 웹 개발이 가능한 기술입니다. 특히 IntelliJ를 사용할 경우, 빌드 자동화, 코드 캐싱, Pre-compile 등 여러 기능을 적극 활용하면 개발 속도와 성능을 모두 잡을 수 있습니다.
이 글이 실제 JSP 프로젝트에서 성능 개선과 오류 감소에 도움이 되셨길 바랍니다. 다음 포스트에서는 JSP의 국제화(i18n)와 다국어 처리 기법도 다뤄보겠습니다!
'FrontEND > Jsp' 카테고리의 다른 글
IntelliJ Java 11 환경에서 JSP 국제화(i18n) 적용 가이드 (2) | 2025.04.16 |
---|---|
JSP에서 JSTL 활용하기 (1) | 2025.04.13 |
IntelliJ JSP 개발환경 설정 가이드 (0) | 2025.04.12 |
IntelliJ에서 개발 생산성을 높이는 10가지 설정 꿀팁 (JSP + Spring Boot 환경 기준) (1) | 2025.04.10 |
jsp에서 resource 경로 세팅 방법 (1) | 2019.05.16 |