JSP에서 64K 제한 처리

8178 단어 JSPtomcattech

현상.


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 변경 후 토마토캣을 다시 시작하여 변경 사항을 반영합니다.

좋은 웹페이지 즐겨찾기