JSP 페이지에서 지시자와 태그라이브러리를 사용하면 최종 출력 HTML에 지시자 또는 태그가 사용된곳에 빈줄이 삽입되어서 페이지 소스를 보기 어렵게 하고, 페이지 용량도 늘어납니다.
JSP 2.1에서 부터는 이 공백을 제거할 수 있는 방법을 제공해 줍니다.
1. page 지시자의 속성으로 trimDirectiveWhitespaces="true" 를 삽입합니다.
<%@ page trimDirectiveWhitespaces="true" %>
page 지시자의 다른 속성들과 같이 사용할 수도 있습니다.
<%@ page contentType="text/html; charset=utf-8" trimDirectiveWhitespaces="true" %>
이 방식은 trimDirectiveWhitespaces 속성을 사용한 페이지에만 적용이 됩니다. 만약 include 되는 페이지가 있을 경우 각각의 페이지에 별도로 적용을 해야만 합니다. include되는 페이지에 적용을 하지 않는다면 그 include되는 부분만 공백이 나올 것입니다.
2. 웹 애플리케이션의 web.xml 파일에 <trim-directive-whitespaces> 설정을 추가합니다.
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
3. Tomcat을 사용한다면 Tomcat 설치 폴더 아래 conf/web.xml 파일에 trimSpaces 설정을 추가할 수 있습니다.
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>trimSpaces</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
위의 1번 지시자를 사용하는 방식을 적용하고 바로 반영이 잘 될것 입니다. 하지만 2번과 3번의 경우 이클립스에서 Tomcat을 실행할 때 설정을 적용한후에 제대로 반영이 되지 않는 경우가 많습니다. 이럴 경우에는 Servers 탭의 서버에 마우스 오른쪽 키를 눌러 Clean Tomcat Work Directory... 를 실행하면 반영이 될 것 입니다.
테스트는 Tomcat 8 과 Tomcat 9에서 해보았습니다. 일반적인 Servlet/Jsp 를 사용하는 경우와 *.do 로 URL이 맵핑되는 스프링프레임웍을 사용하는 프로젝트에서도 잘 동작하였습니다.