• jsp报错“is exceeding the 65535 bytes limit”


    报错:The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes

    网上很多的文章都是写着这个是错误是JSP过大导致的,我也曾一度这样认为。

    网上的解决方案:

    方法1、修改include方式

    <%@ include file=" "%>

    改为:``

    方法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 中,这里有必要了<% %>、<%! %>、<%=%>这几个标签的区别

    文中也提到了,放在<% %>的代码都会怼到 service方法中,所以抽离出的方法要放在jsp的话要放在 <%! %>标签中。

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

  • 相关阅读:
    idea中编译项目报错 java: javacTask: 源版本 1.8 需要目标版本 1.8
    发布返回结果对象中添加冒泡结果字段
    Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释
    跨网段IP
    Vlan
    分区工具parted的详解及常用分区使用方法
    dump命令详解
    备份 (综述)
    firewalld 防火墙配置
    find、which、whereis、locate和type之间的区别
  • 原文地址:https://www.cnblogs.com/wuluogan/p/13364629.html
Copyright © 2020-2023  润新知