tmp = oXmlHttp.responseText;可以将jsp文件里面的内容读出来.那样的话,在文件头会产生很多空行,所以我干脆用Servlet来写,可:
http://localhost:8080/id_check?id=liangj123里面输出来的数据用oXmlHttp.responseText读不到?是为什么?
http://localhost:8080/id_check?id=liangj123里面输出来的数据用oXmlHttp.responseText读不到?是为什么?
如果返回数据多,用XML封装比较好,
package book.chat;import java.sql.Connection;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import book.chat.table.UserEO;public class SendServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
boolean bSuccess = true;
String chatID = request.getParameter("cid");
String userID = request.getParameter("uid");
String msg = request.getParameter("msg");
if (chatID == null || chatID.equals(""))
return; if (userID == null || userID.equals(""))
return;
if (msg == null || msg.equals(""))
return;
UserEO user = new UserEO(Integer.parseInt(userID));
Connection con = null;
ConnectionMananger gm = null;
try {
gm = new ConnectionMananger();
con = gm.getConnection();
int number = DbManager.getTotal(con,
"select message_id from message") + 1;
String insertSQL = "insert into message (message_id,chat_id,user_id,user_name,message,post_time) values("
+ number
+ ","
+ chatID
+ ","
+ user.getUserID()
+ ",'"
+ user.getUserName() + "','" + msg + "',GETDATE())";
DbManager.excute(con, insertSQL);
} catch (Exception e) {
try {
con.rollback();
} catch (Exception ez) {
ez.printStackTrace();
}
e.printStackTrace();
} finally { // コネクションの解放
if (con != null) {
try {
con.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException { doPost(request, response);
}}
import java.sql.ResultSet;
import java.util.Vector;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import book.chat.table.MessageEO;public class GetServlet extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
String chatID = request.getParameter("chatId");
String lastID = request.getParameter("last");
if ( chatID==null||chatID.equals("") )
return ;
if ( lastID==null||lastID.equals("") )
return ;
Vector vResult = new Vector();
Connection con = null;
ConnectionMananger gm = null;
ResultSet rs = null;
try {
String sql = "select message_id from message where chat_id="+chatID+" and message_id >"+lastID;
MessageEO message =null;
gm = new ConnectionMananger();
con = gm.getConnection();
rs = DbManager.getResultSet(con, sql );
while (rs.next())
{
message = new MessageEO(rs.getInt("MESSAGE_ID"));
vResult.add(message);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
// コネクションの解放
if(con!=null){
try {
con.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
response.setContentType("text/xml");//ノ靹テキオサリハ?ンタ獎ヘホェxmlクス
java.io.PrintWriter out = response.getWriter();
System.out.println(parasToXML(vResult));
out.print(parasToXML(vResult));//オテparasToXML()キスキィ
}public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {doPost(request, response);
}
public String parasToXML(Vector v) {// クテキスキィスォハ?ンラェサッウノXMLクスハ莎?
StringBuffer buf = new StringBuffer();
buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
buf.append("<root>");
for (int i = 0; i < v.size(); i++) {
MessageEO message = (MessageEO) v.get(i);
buf.append("<message id=\""+message.getMessageID()+"\">");
buf.append("<user>" + message.getUserName() + "</user>");
buf.append("<text>" + message.getMessage() + "</text>");
buf.append("<time>" + message.getPostTime()+ "</time>");
buf.append("</message>");
}
buf.append("</root>");
return buf.toString();
}}
var receiveReq = createAjaxObj();
var lastMessage = 0;
var mTimer;
var chatId;
var userId;
//Function for initializating the page.
function startChat() {
//Set the focus to the Message Box.
document.getElementById('txt_message').focus();
//Start Recieving Messages.
initial();
getChatText();
}
function initial()
{
chatId = document.frmmain.cid.value;
userId = document.frmmain.uid.value;
}
//Gets the browser specific XmlHttpRequest Object
function createAjaxObj(){
var httprequest=false
if (window.XMLHttpRequest)
{ // ???Mozilla, Safari ????
httprequest=new XMLHttpRequest()
if (httprequest.overrideMimeType)
httprequest.overrideMimeType('text/xml')
}
else if (window.ActiveXObject)
{ // ???IE
try {
httprequest=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
}
return httprequest
}
//Gets the current messages from the server
function getChatText() {
//alert("7");
//判断上次请求的状态是否完成或是还未发送请求
try{
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
//alert("8");
//发送获得消息的服务器地址
var submitURL = "getMessage?chatId="+chatId+"&last=" + lastMessage;
receiveReq.open("GET", submitURL, true);//建立请求
receiveReq.onreadystatechange = handleReceiveChat; //当请求状态改变时调用handleReceiveChat方法
receiveReq.send(null);//发送请求
}
//alert(submitURL);
}catch(e){
alert(e);
}
}
//Add a message to the chat server.
function sendChatText() {
//alert("1");
//如果输入的消息为空,提示用户输入
if(document.getElementById('txt_message').value == '') {
alert("You have not entered a message");
return;
}
//判断上次发送消息请求的状态是否完成或是还未发送请求
//alert("2");
if (sendReq.readyState == 4 || sendReq.readyState == 0) {
//保存消息的服务器地址
var submitURL = "sendMessage?cid="+chatId+"&uid="+userId+"&msg="+document.getElementById('txt_message').value;
sendReq.open("POST", submitURL , true);//建立请求连接
sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
sendReq.onreadystatechange = handleSendChat; //当请求状态改变时调用handleSendChat方法
sendReq.send(null);//发送请求
document.getElementById('txt_message').value = '';//设置提交消息文本框为空
}
//alert("3");
}
//When our message has been sent, update our page.
function handleSendChat() {
//alert("4");
//取消间隔获取数据的方法
clearInterval(mTimer);
//alert("5");
//重新获得调用getChatText()方法
getChatText();
//alert("6");
}
//Function for handling the return of chat text
function handleReceiveChat() {
if (receiveReq.readyState == 4) {//此时请求已经完成
//获得显示消息的图曾层元素
var chat_div = document.getElementById('div_chat');
//获得返回后的XML文件
var xmldoc = receiveReq.responseXML;
//得到所有的新的消息记录
var message_nodes = xmldoc.getElementsByTagName("message");
var n_messages = message_nodes.length;
alert('message_nodes.lengthL:'+message_nodes.length);
//循环每一条新消息,组织成HTML格式数据
for (i = 0; i < n_messages; i++) {
var user_node = message_nodes[i].getElementsByTagName("user");
var text_node = message_nodes[i].getElementsByTagName("text");
var time_node = message_nodes[i].getElementsByTagName("time");
chat_div.innerHTML += '(<font class="chatUser">'+user_node[0].firstChild.nodeValue + '</font>) said at ';
chat_div.innerHTML += '<font class="chatTime">' + time_node[0].firstChild.nodeValue + '</font><br />';
chat_div.innerHTML += '<span class="title">'+text_node[0].firstChild.nodeValue + '</span><br />';
chat_div.scrollTop = chat_div.scrollHeight;
//每循环一条消息,记录到全局变量lastMessage中
lastMessage = (message_nodes[i].getAttribute('id'));
}
//获取数据后,设置2秒钟后再次调用getChatText()方法
mTimer = setTimeout('getChatText();',2000); //Refresh our chat in 2 seconds
}
}
//This functions handles when the user presses enter. Instead of submitting the form, we
//send a new message to the server and return false.
function blockSubmit() {
sendChatText();
return false;
}
{
response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
EncodeUC.getEncodeLang();
String web_id = EncodeUC.EncodeUC(request.getParameter("web_id").trim());
bean.member.MemberInfo dataObj = new bean.member.MemberInfo();
int rtnVal = dataObj.getWebIdCnt(web_id);
if (rtnVal == 0){
out.print("true");
}else{
out.print("false");
}
out.close();
}
然后ajax 再去读取这个Servlet输出来的数据是true还是false,如果是用jsp文件,可以取到,但我不知道为什么用Servlet就取不到了,而jsp文件头会产生很多空格,所以又没办法使用jsp