首先要说明的是,这里所说的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 都可以
纯英文的包含 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 都可以