• The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes


    转载: https://blog.csdn.net/qq_31772441/article/details/80586398

    多次遇到这个问题,记录下解决方案,以备后查,也给后来者一点提示。

    网上很多的文章都是写着这个是错误是JSP过大导致的,我也曾一度这样认为。
    网上的解决方案:
    方法1、修改include方式

    将<%@ include file=" "%>
    改为:<jsp:include page=" " />

    方法2、修改 Tomcat 的web.xml配置文件,添加如下配置

    <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 : 是否对每个输入行都用一条print语句来生成静态内容,以方便调试。缺省为true。
    //这样做,只是让Tomcat不为JSP每行都添加print语句,但是实际上,当文件达到一定程度,还是会发生错误,所以最根本的还是尽量减小JSP大小。

    其实有个很重要的点,你仔细看报错信息,
    The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes,
    这里说的其实是 _jspService() 方法的代码 超过了65535字节,
    我们知道,其实jsp也是一个servlet,编译后jsp的内容都会放在service() 方法中。无限的include,将嵌套页面的一些代码全部都塞到了主jsp的 service() 方法中,这样才导致了这个问题。

    我们细想,一个方法!这么多代码量!查看费劲维护困难!设计上是不是有点问题?
    所以,换个思路,是不是应该把某些较公共的方法抽出来,需要使用时是以调用的形式,而不是copy copy,这里粘一块那边粘一块!这样方法体精简许多,一些不需要关心的逻辑封装成方法也没有影响,还可复用!

    抽离出来的方法可以放在 java文件,也可以放在 JSP 中,这里有必要了<% %>、<%! %>、<%=%>这几个标签的区别
    可以参考此文: https://www.cnblogs.com/alternative/p/7491647.html
    文中也提到了,放在<% %>的代码都会怼到 service方法中,所以抽离出的方法要放在jsp的话要放在 <%! %>标签中。

    一点点感悟:其实我们遇到问题,不要轻易地直接百度!要有几计的思考哇!至少把报错信息看清楚了吧哈哈

  • 相关阅读:
    JavaScript常用设计模式
    js 判断l对象类型
    JavaScript编程(终极篇)
    微信小程序开发-滑动操作
    解决Jquery向页面append新元素之后事件的绑定问题
    C# list与数组互相转换
    C# “贝格尔”编排法
    C#数字格式化
    SQL从一个表查询数据插入/更新到另一个表
    全局唯一标识符 (GUID)
  • 原文地址:https://www.cnblogs.com/brithToSpring/p/13838858.html
Copyright © 2020-2023  润新知