본문 바로가기
java

톰캣 jsp 빈줄 제거

by 후린트 2020. 11. 25.
반응형
<li class="${isTrim ? 'trim' : 'notTrim'} ${true ? 'true' : 'false'}">
 예상 class="trim true"
</li>

출력 값 
<li class="trimtrue">
  예상 class="trim true"
</li>

JSP에서 스크립틀릿을 사용하게 되면 빈줄이 생성된다.

톰캣 설정을 통해서 빈줄을 제거 할 수 있다.

참고 : tomcat.apache.org/tomcat-8.5-doc/jasper-howto.html#Production_Configuration

   - trimSpaces - Should template text that consists entirely of whitespace be removed? true or false, default false.

첫번째 web.xml으로 적용

conf/web.xml 에서 org.apache.jasper.servlet.JspServlet 에 대한 부분을 수정한다.

conf/web.xml

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    ..
    <init-param>
        <param-name>trimSpaces</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

위의 소스처럼 적용하고 톰캣을 재시작한뒤에 소스보기를 하게 되면
빈줄이 삭제 된다.

--------------------------------

두번째 WebApplicationInitializer사용하는경우
아래처럼 initParameter값을 추가해준다.

public class TestAppInitializer extends WebApplicationInitializer{

	@Override
	public void onStartup(ServletContext servletContext) throws ServletException {
    	..
        ..
        addJspServletInitParam(servletContext);
        ..
    }
    
	private void addJspServletInitParam(ServletContext servletContext) {
		ServletRegistration jspServlet = servletContext.getServletRegistration("jsp");
		jspServlet.setInitParameter("trimSpaces", "true");
	}
}

 

# 주의
스크립틀릿 또는 EL을 연속으로 사용할 경우 trimSpace 설정에 의해서 아래처럼 공백이 무시된다. 

<li class="${true ? 'trim' : 'notTrim'} ${true ? 'true' : 'false'}">
	expect class="trim true"
</li>

결과 : 
<li class="trimtrue">
	expect class="trim true"
</li>
반응형