tomcat基础知识——jsp访问错误(一)

本文介绍了在Tomcat 6.0环境下,遇到JSP页面访问时出现双引号引用错误的问题。错误表现为Attribute value包含未转义的双引号。错误原因是由于Tomcat版本升级后对双引号处理机制的改变。解决方案包括修改jsp代码中的双引号,或者调整Tomcat配置禁用严格引用转义检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、错误重现

开发中,有时候我们会遇到tomcat部署项目时,访问某个页面出现如下错误。

Attribute value view.getItems("SendAcctList") is quoted with " which must be escaped when used  which must be esca

或者是Attribute value request.getParameter("name") is quoted with " which must be esca,今天部署一个比较老的项目时遇到了这个问题,我使用的是tomcat6.0,在网上查阅相关资料后,发现造成这个问题是jsp页面中包含有双引号包含双引号的地方,在tomcat升级到6.0之后,就会出现问题,之前的版本不会出现该问题。


二、错误发生位置及解决方案

(1)、发生问题位置 <t:radio name="FD_PayAcc"value="<%=view.getItems("SendAcctList")%>"defaultValue="<%=view.getValueNull("FD_PayAcc")%>"/>

(2)错误产生的原因:是因为tomcat版本升级后(6.0以后),对双引号的处理机制引起的,如果出现双引号包含双引号的情况,就可能会出现这个错误。

(3)、解决方案:

a、修改双引号包含双引号处,改为单引号包含双引号。

value="<%=view.getItems("SendAcctList")%>" 改为value='<%=view.getItems("SendAcctList")%>'

b、在a的方案中会出现一个问题,如果项目中几十个页面都是双引号包含双引号,怎么办?难道我们要一一修改吗?这样下来,也是比较麻烦的事情!
于是查询tomcat文档,里边关于解析jsp页面时,有一段话:

“Iffalsethe requirements for escaping quotes in JSP attributes will be relaxed so that an unescaped quote will not cause an error.

If not specified, the specification compliant default oftruewill be used.” 具体大意是:如果要求在jsp中escaping属性的值为false,那么转义引号将不会导致错误,如果没有指定该属性,将会使用规范兼容的默认值true。这个描述针对的是tomact的org.apache.jasper.compiler. Parser.STRICT_QUOTE_ESCAPING属性,因此,只需在tomcat启动时将这个属性设为false就可以解决这个问题。 那么怎么将这个属性设置到tomcat的system属性中呢,这里介绍两个办法:

(1)、利用tomcat启动的执行脚本,在执行过程中调用setenv.sh,在其中设置环境变量,如:JAVA_OPTS=%JAVA_OPTS%: -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false。

(2)、在tomcat文件夹下找到conf/catalina.properties文件,在最后添加org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false ,重启tomcat就可以了,我使用的就是这种方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值