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的话要放在 <%! %>标签中。
一点点感悟:其实我们遇到问题,不要轻易地直接百度!要有几计的思考哇!至少把报错信息看清楚了吧哈哈
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义