关于JSP页面 报错Unable to compile class for JSP以及jsp引入大文本页面的解决办法

关于JSP页面 报错Unable to compile class for JSP以及jsp引入大文本的解决办法

这两天在公司做项目时,需要将一个较大的页面展示在JSP页面中的一个标签里,由于文档过大。这里提供几个word转html的方法:
(1)office word 转html:

(2)WPS转html:在这里插入图片描述

(3)在线转html
这里附上转换链接:http://www.docpe.com/excel/excel-to-html.aspx


从大小上来看还是在线转比较好,不过转完的html是这样的:
在这里插入图片描述

生成的页面类似于压缩的js文件不方便阅读,可以通过格式化工具在线格式化。
格式化链接:http://tool.oschina.net/codeformat/html

jsp中内嵌其他页面的方法一般使用

<%@include file="xxxx.html" %>

这样引入的页面,服务器在解析jsp时,会将页面内容组装进jsp,但由于组装好的jsp文件过大导致无法编译,所以报错
在这里插入图片描述

HTTP Status 500 - Unable to compile class for JSP:
tacktrace:
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:198)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:495)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:363)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:338)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:325)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:580)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1225)
	org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)

于是使用了另一个jsp引入其他页面的方法:

<jsp:include flush="true" page="xxx.html"/>

第二种引入可以在jsp编译之后,将静态html页面写入到当前已经写好的jsp页面中。就不会报编译文件过大的错误。
但引入文件后出现了乱码的问题。
在这里插入图片描述

网上找了一些解决方法:
在jsp文件头加入头,此方法可以解决当前jsp页面的乱码但无法解决内嵌html页面的问题。

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" language="java" %>

在html中加入说明,此方法试了也不管用。。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

这里选用第三种引入页面的方法:

1.引入jstl依赖

        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

2.在jsp页面引入c标签

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

3.引入页面,设置编码格式

<c:import url="xxx.html" charEncoding="UTF-8"></c:import>

第三种方式也是jsp编译后,将html加入当前页面中,并且可以在引入时指定编码格式,同时这里的url也可以通过request进行动态配置。

<c:import url="${showmenu.urlName}.html" charEncoding="UTF-8"></c:import>

总结一下三种方法的特征

使用方法导入方式指定编码动态url
<%@include file="xx.html" %>编译jsp时导入
<jsp:include page="xx.html"/>编译后导入
<c:import url="xx.html">编译后导入

以上就是我对jsp引入页面的解决办法,也欢迎大佬补充。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值