JSP에서 64K 제한 처리
현상.
JSP에 여러 항목이 표시되면 스택 추적
The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit Stacktrace
을 토로하여 오류가 발생하는 경우가 있습니다.자바는 사이즈 상한선이 64KB까지 제한되는 방법이 하나 있는데, 그것 때문에 걸렸어요.
대응
include
지시를 사용하여 화면을 분할하는 방법이 있으나 코드를 수정하지 않고 대응하는 경우jspService 메서드의 코드 양을 줄이기 위해 JSP 컴파일러의 설정을 변경합니다.$CATALINA_HOME/conf/web.xml의 소파 이름 jsp의 소파류 초기화 파라미터에 세 개의 파라미터를 추가합니다.
<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>genStringAsCharArray</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>mappedFile</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-starup>3</load-on-startup>
</servlet>
설명
이름:
값
genStringAsCharArray
true
mappedFile
false
trimSpaces
true
jsp에서 자바코드
_jspService
로 전환하는 방법에서 대량out.write("ほげほげ");
을 출력합니다.genStringAsCharArray = true
에서 이'먼지 제거'문자열의 소양을 정적char로 배열하여 외출시켜 방법 내의 용량을 낮춘다.따라서 지루한 문자열 소양이 많으면 효과적이라고 여겨진다.그 밖에
out.write("ほげほげ");
out.write("ふがふが");
out.write("ぼりぼり");
와 여러 줄이 분리되어 mappedFile=false
하면 한 줄로 묶는다.trimSpaces는 여분의 공간과 줄을 출력하지 않고 압축할 수 있습니다.
최대한 벽에 부딪혔다면 이 대책을 통해 벗어날 수 있었을 것이다.한번 해 볼 만하다.
web.xml
변경 후 토마토캣을 다시 시작하여 변경 사항을 반영합니다.
Reference
이 문제에 관하여(JSP에서 64K 제한 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/kobachiki/articles/208798ea93091e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)