轻松解决 WebLogic8.1 不能使用 JSTL 的问题

http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID=25662

首先要说明的是,这里所说的WebLogic 8.1指SP3以前的各个版本,因为从SP3开始,即 WebLogic8.1.3+ 好像已经可以支持JSTL了。另外,由于 WebLogic8.1 仅支持Servlet2.3/JSP1.2,所以只能使用JSTL 1.0。

纯英文的包含 JSTL 标签的 JSP 文件在 WebLogic8.1 上执行没有任何问题,但是JSP中一旦使用了中文或者日文字符,即便是用 UTF-8 编码格式,不论是动态编译还是静态编译(使用weblogic.appc或者weblogic.jspc),都会得到类似下文的错误:
java.io.IOException: javax.servlet.jsp.JspException: The taglib validator rejected the page: "java.io.UTFDataFormatException: Invalid byte 3 of 3-byte UTF-8 sequence., "

例如下面这个简单的JSP文件,应该是算很标准了:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/tags/jstl/core" prefix="c" %>

<html>
<head>
<meta content="Content-Type" http-equiv="text/html; charset=UTF-8">
<title>欢迎光临</title>
</head>
<body bgcolor="white">
加法测试:12+23=<c:out value="${12 + 23}" /><br>
</body>
</html>

就是这么简单一个JSP文件,就是编译通不过。解决办法如下:
1、修改JSP文件,增加定义JSP文件的 pageEncoding 属性。即
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
如此一来,不论是静态编译还是动态编译都可以通过并且执行无误。

2、修改 web.xml ,在<web-app> </web-app> 之间添加以下内容:
<context-param>
<param-name>weblogic.jsp.encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
如此一来,动态编译可以通过并且执行无误,但是静态编译(使用weblogic.appc或者weblogic.jspc)仍然不行。

注:上面的说明中以 UTF-8 编码为例,实际上只要只要是正确的编码都可以,例如:GB2312, Shift_JIS 都可以。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值