FrontEND/Jsp

IntelliJ에서 JSP 성능 최적화 방법

mingmingIT 2025. 4. 14. 10:14

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)와 다국어 처리 기법도 다뤄보겠습니다!