错误:is quoted with " which must be escaped when used within the value

严重: Servlet.service() for servlet jsp threw exception

org.apache.jasper.JasperException: /index.jsp(43,38) Attribute value request.getAttribute("lineSize")  is quoted with " which must be escaped when used within the value

at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)

at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)

at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:198)

at org.apache.jasper.compiler.Parser.parseQuoted(Parser.java:299)

at org.apache.jasper.compiler.Parser.parseAttributeValue(Parser.java:249)

at org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:211)

at org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:154)

at org.apache.jasper.compiler.Parser.parseParam(Parser.java:845)

at org.apache.jasper.compiler.Parser.parseBody(Parser.java:1678)

at org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1020)

at org.apache.jasper.compiler.Parser.parseInclude(Parser.java:872)

at org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1134)

at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1461)

at org.apache.jasper.compiler.Parser.parse(Parser.java:137)

at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)

at org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)

at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:170)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)

at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)

at com.miyao.web.PersonServlet.doGet(PersonServlet.java:86)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)

at java.lang.Thread.run(Unknown Source)

2010-1-6 20:08:39 org.apache.catalina.core.StandardWrapperValve invoke

严重: Servlet.service() for servlet PersonServlet threw exception

org.apache.jasper.JasperException: /index.jsp(43,38) Attribute value request.getAttribute("lineSize")  is quoted with " which must be escaped when used within the value

at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)

at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)

at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:198)

at org.apache.jasper.compiler.Parser.parseQuoted(Parser.java:299)

at org.apache.jasper.compiler.Parser.parseAttributeValue(Parser.java:249)

at org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:211)

at org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:154)

at org.apache.jasper.compiler.Parser.parseParam(Parser.java:845)

at org.apache.jasper.compiler.Parser.parseBody(Parser.java:1678)

at org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1020)

at org.apache.jasper.compiler.Parser.parseInclude(Parser.java:872)

at org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1134)

at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1461)

at org.apache.jasper.compiler.Parser.parse(Parser.java:137)

at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)

at org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)

at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:170)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)

at org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)

at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)

at com.miyao.web.PersonServlet.doGet(PersonServlet.java:86)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)

at java.lang.Thread.run(Unknown Source)

 

 

大家会清楚的看到:/index.jsp(43,38) Attribute value request.getAttribute("lineSize")  is quoted with " which must be escaped when used within the value.这句话,很清楚的说明了错误发生在哪里!

于是,我们会顺着错误提示杀到代码中去检查(index.jsp),找到相应的行后,一看,发现没有错误呀,我的代码很正确呀,没有写错代码,也没有少了符号,而且""号也是正确的呀.大家可以看一下,以下就是提示错误的代码:

 

 

41   <jsp:include page="split_page.jsp">

42   <jsp:param name="jspUrl" value="<%=jspUrl %>"/>

43   <jsp:param name="lineSize" value="<%=request.getAttribute("lineSize") %>"/>

44   <jsp:param name="allRecorders" value="<%=request.getAttribute("allRecorders") %>"/>

45   <jsp:param name="keyWord" value="<%=request.getAttribute("keyWord") %>"/>

46   <jsp:param name="currentPage" value="<%=request.getAttribute("currentPage") %>"/>

47   <jsp:param name="searchFlag" value="T"/>

48   </jsp:include>

 

 

看到了吗?是的,就是这一段动态包含的代码.就像我说的,大家也看见了,43行,照常规,我们没有看出任何错误之处,对比一下其它行也都很相似.

所以,这下就把我急坏了,改了好久还是不行...最后,就想到了百老师和谷老师,就把错误信息一贴,发现已经有此问题的解决了,我打开了几个看了一下,上面基本都和我遇到的问题一样...这下就让我大开眼界了...上面说是,只要把出错位置的value=""改成value='',就不会有错了,但上面都没有说明到底是为什么?我也没管,就照上面的改一下试试...改了以后,一运行,还是出错了...但大家别急,错误的行号变了,变成了44行...也就是43行已经没有错了.是的,44行的value还不有改,我就又改了...再一运行,又出错了,而且错误的行号又变了,是的,没错,变成了45行,这下就让我觉得有意思了...我再改了45行后,我遇见性的想到如果不改46行可能还会出错,但我没有急着改,因为我想证明一下自己的想法...一运行,果然如此,45行正确了,46行出错了,哈哈.就这样,改了最后一个46行,再运行,一切正常了!!!!

大家看到这里可能也都有点晕了吧!不过,这个时候,我再仔细看一下,43行/44行/45行/46行有一个共同点,我们都知道,在定义属性时,一般,我们都是要加双引号""的,是的,他们的属性都加了双引号,而且仔细一看,在属性中拿到servlet中的request中的值时(就以43行为例):request.getAttribute("lineSize"),这里我们也为"lineSize"加上了双引号,这也是没有错的.44/45/46也都是这个样子!就是这里,以我们先前所学的知识,毫无错误,也不会想到是这里出错了!但,错误就是这里导致的.

其实,大家回忆一下,我们应该是知道这个原则的,在双引号里再写双引号是会冲突的,是不正确的.但是大家要仔细看了,我们这里面是没有双引号接着双引号写的,我们是在另一个代码中写的双引号,所以,是没有错误的!

让我们再回头看一个错误提示中的英文吧: /index.jsp(43,38) Attribute value request.getAttribute("lineSize")  is quoted with " which must be escaped when used within the value.试着翻译一下,大概意思就是:引用“时必须在属性内避免使用".这一下,可能更晕了...

我们再想一想,value中写属性时,我们即可以用双引号",也可以用单引号'.

在这里也没有官方资料可以查阅,我想的话,最有可能应该是,Tomcat无法解析像43/44/45/46这种情况(如:value="<%=request.getAttribute("lineSize") %>"),双引号中还嵌入的有双引号...然后,我们再进一步分析,request.getAttribute("lineSize")中有能用双引号,是不能用单引号的,而value的双引号是可以修改成单引号的,所以,这可能也就是为什么,当我们在这种特殊的情况下,在value的属性中双引号时会出现这种错误,而当我们改成单引号时,程序确一切正常了!

其实,我们回头仔细想一想,这也不是我的推断,光看错误信息,现在想一想,其实,也就是这个原因了吧!

如有哪个高手,也遇到过这种问题,并且知道真正的原因,且我说的有问题的地方,请帮我指正一下,并批评我一下!在此,先感谢您了!我在这,也是总结一下问题,供自己学习用!希望也能帮助到遇到此困难的人!



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值