服务器端:
开发工具NetBeans IDE 6.7.1;服务器:GlassFish v2.1;JavaEE版本:JavaEE 5;框架:Visual Web JavaServer Faces
1)写一个EJB3的Bean对数据库Microsoft SQL 2005的数据进行基本操作;
2)写一个JavaBean(类名:AjaxBeanInBom),注入1)中EJB,把数据解析成字符串;
3)建立一个VWP网页(Navigation.jsp),对应版本为jsp2.1和Servlet2.5,运用2)中Bean处理请求和响应,在该网页的头部嵌入以下代码:
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT");
request.setCharacterEncoding("UTF-8"); [color=#FF0000]//疑问1[/color]
String date1=null;
date1=(String)request.getParameter("method");
if(date1!=null){
String mystr=null;
ajaxbean.setRequest(request);
mystr=ajaxbean.getResponseXML();
System.out.println(mystr);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print(mystr);
response.getWriter().close();
}
客户端:
IE浏览器,利用javascript和ajax操作页面内容
4)采用post方式发送请求和获取响应,关键代码如下:
function accessdb_S(jspname,sSQLobj){ //select rows
var requestString;
//注明:因不影响阅读,中间requestString的具体赋值舍去
createXMLHttpRequest();
xmlHttp.open("POST", jspname,false);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
xmlHttp.send(requestString);
}
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
alert(xmlHttp.status);
alert(xmlHttp.responseText); //[color=#FF0000]疑问2[/color]
}
}
}
问题:
疑问1):服务器端报错:PWC4011:由于已读取请求参数或已调用ServletRequest.getReader(),因此无法将请求字符编码从上下文/fuBom设置为UTF-8;
疑问2):由System.out.println(mystr)可以查看到服务器输出自己预期想要的字符串:
0||-1||Tree Example||www.baidu.com$$1||0||节点配置||treeNodeConfig.jsp$$2||1||新浪||www.sina.com$$3||0||搜狐||www.sohu.com$$4||1||微软||www.microsoft.com$$5||2||雅虎||www.yahoo.com
但是在客户端由alert(xmlHttp.responseText)查看时,在该字符串前却加上了有关html的代码,详细如下:
[/color]
0||-1||Tree Example||www.baidu.com$$1||0||节点配置||treeNodeConfig.jsp$$2||1||新浪||www.sina.com$$3||0||搜狐||www.sohu.com$$4||1||微软||www.microsoft.com$$5||2||雅虎||www.yahoo.com
0
自己想要的仅仅是那些从数据库中得到的字符串,而这些包含了HTML信息的字符串并非自己所需要,由于未获得正确字符串,从而导致客户端web页面无法实现ajax变化;即使在js中对返回的字符串进行截取,截掉包含html的那部分,一样是失败。为什么会出现这种情况?是不是利用responseText得到的字符串一定包含html信息部分?如何解决?
补充:
当开发环境其他不变,仅作下述改变时,上述两个错误都不会发生:
服务器:Sun Java System Application Server 8.2(更早的一个服务器版本);JavaEE版本:JavaEE 1.4;
对应web页面:jsp1.2,Servlet2.4
请各位大牛和神人急救!该问题困扰本人十多天之久,若能帮我提供解决之策,万分感谢!