📕🐘 도로락 - 코끼리를 냉장고에 넣는 방법
Servlet&Jsp | 2018. 7. 27. 23:17

[서블릿/JSP] web.xml에서 org.apache.jasper.servlet.JspServlet의 mappedfile 설정

org.apache.jasper.servlet.JspServlet

JspServlet은 톰캣의 서블릿으로 JSP를 컴파일하는 역할을 담당합니다. web.xml을 통해 JSP JspServlet의 초기화 옵션을 주어 컴파일에 관련된 설정을 할 수 있습니다.

<servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
  <init-param>
    <param-name>mappedfile</param-name>
    <param-value>false</param-value>
  </init-param>
</servlet>

mappedfile 옵션

그 중 mappedfile 옵션이 있습니다. 클라이언트로부터 요청된 JSP 페이지를 서블릿으로 변환하는 과정에서 JSP 페이지에 작성된 HTML 요소들은 out.write('<html>') 과 같은 형태의 출력문으로 변환됩니다. 이 때 mappedfile 값을 true로 주게 되면 JSP가 서블릿으로 변환되었을 때 HTML 출력문이 작성된 JSP 페이지와 같이 줄넘김 단위로 작성되어 디버깅시 유용할 수 있습니다. false인 경우에는 출력문들을 하나의 문자열로 바꾼 뒤 한꺼번에 출력하는 방식으로 변환됩니다. 톰캣7을 기준으로 mappedfile 기본값은 true입니다.

JSP 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
</body>
</html>

옵션 true 일 때 서블릿으로 변환된 JSP 페이지의 내용

out.write("\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>");

옵션 false 일 때 서블릿으로 변환된 JSP 페이지의 내용

out.write("\r\n<html>\r\n<head>\r\n<title>Insert title here</title>\r\n</head>\r\n<body>\r\n\r\n</body>\r\n</html>");

개인적인 생각으로는 true인 경우에는 JSP 페이지 디버깅시 어떤식으로 결과 출력이 이루어지는지 파악하기 쉬운 이점이 있는게 아닌가 싶고, false인 경우에는 성능상 이점이 더 있지 않을까 생각합니다. 물론 출력 스트림에 관한 성능은 버퍼를 통하겠지만 출력 내용이 많은 JSP 페이지의 경우 여러 개의 문자열을 여러 번의 출력문을 통해 write() 하는 것 보다 한 번에 처리함으로써의 약간의 성능 향상이 있지 않을까 예상합니다. (개인적인 추측으로 옵션에 대해 더욱 깊은 이해가 있으신 분은 댓글 남겨주시면 감사하겠습니다)

참고글

도로락

도로락

Writer

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그