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>
cs

 

 



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>
cs


옵션 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>");
 
cs


옵션 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>");
cs


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

 

 

참고글

[서블릿/JSP] JSP 스크립트 요소 스크립트릿, 표현식, 선언문

[서블릿/JSP] JSP가 Servlet으로 변환되는 과정 및 규칙



블로그 이미지

도로락

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

댓글을 달아 주세요! 질문 환영합니다!