JSP首页 index.jsp <script>  //设一个变量   
    var XMLHttpReq=false;  
        //创建一个XMLHttpRequest对象  
    function createXMLHttpRequest(){  
           if(window.XMLHttpRequest){ //Mozilla   
            XMLHttpReq=new XMLHttpRequest();  
        }  
           else if(window.ActiveXObject){  
           try{  
               XMLHttpReq=new ActiveXObject("Msxml2.XMLHTTP");  
           }catch(e){  
                       try{  
                    XMLHttpReq=new ActiveXObject("Microsoft.XMLHTTP");  
                  }catch(e){}  
                                    }  
                                }  
                            }  
        //发送请求函数  
    function send(url){  
        createXMLHttpRequest();  
        XMLHttpReq.open("GET",url,true);  
        XMLHttpReq.onreadystatechange=proce;   //指定响应的函数  
        XMLHttpReq.send(null);  //发送请求  
            }  
    function proce(){  
        if(XMLHttpReq.readyState==4){ //对象状态  
        if(XMLHttpReq.status==200){//信息已成功返回,开始处理信息  
        var res=XMLHttpReq.responseXML.getElementsByTagName("div")[0].firstChild.data;  
        window.alert(res);
        document.getElementById("data").innerHTML = res; 
            
        }else{  
            window.alert("不好意思,所请求的页面有异常");  
        }  
        }  
    }  
    function check()
  {  
    var user=document.form1.user.value;
     var usernm=document.form1.usernm.value;
     var password=document.form1.userpwd.value;
   
   if(/^\s*$/g.test(usernm))
      {
        alert ("错误提示:用户名不能为空!");
        return false;
       }
     if (/^\s*$/g.test(password))
     {
       alert ("错误提示:密码不能为空!");
       return false;
     }
      else
var url=document.getElementByName("form1").action + "?user="+user+"&usernm="+usernm+"&password="+password;
     send(url);
     return false;//即将登陆数据提交
    }
  </script><!--需要局部刷新的地方如下,页面其他部分我省略了--><!--登录窗口 -->
     <div id=date>
     <form method="get" name="form1" action="Login"> //Login是一个servlet
      <table border="0" cellpadding="0" cellspacing="0" align="center" width="240" height="60">      <tr>       <td><input type="text" name="usernm"  font-size:8pt ;" tabindex=1/></td>   
       </tr>
      <tr>       <td><img src="image/pw_title.gif"></img></td>       <td><input type="password" name="userpwd" size="20" font-size:8pt" tabindex=2></input></td></tr>      </table>
 <input type="radio" value="student" checked name="user">学生</input> <input type="radio" value="teacher" name="user" >教师</input> <input type="image" src="image/login_bt.gif" value="登录" onclick="return check()"/>   
  </form>
 </div>我要将登陆操作提交给一个Servlet:Login处理
以下是Login.java

package com.jxsf.x3408.servlet.AJAX;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.jxsf.x3408.DB.DataConn;
import com.jxsf.x3408.Model.*;public class Login extends HttpServlet {
private DataConn db;
private Connection conn;
private Statement sta;
private ResultSet res;
private PrintWriter out;
private static final long serialVersionUID = -7999241892841130740L;
protected void doGet(HttpServletRequest request,HttpServletResponse response) 
throws ServletException, IOException {
response.setContentType("text/xml");
        response.setCharacterEncoding("utf-8");
response.setHeader("Cache-Control", "no-cache");
String user = (String) request.getParameter("user");
System.out.println("OK");
System.out.println(user);
PrintWriter out = response.getWriter();
out.println("<pront>");
if (user.equals("student")) {
DataConn db = new DataConn();
String userpwd = request.getParameter("userpwd");
String st_id = request.getParameter("usernm");
System.out.println(userpwd+"==="+st_id);
conn = db.getConn();
if (st_id != null && st_id != "") {
try {
sta = conn.createStatement();
res = sta.executeQuery("SELECT * FROM student WHERE st_id="
+ "\'" + st_id + "\'" + "AND password=" + "\'"
+ userpwd + "\'");
if (res.next()) {
request.getSession().setAttribute("stuname", st_id);
out.print("<div>" + "欢迎您:"+st_id + "<br/>" +"</div>"); } else {
out.print("<div>"+"用户名或密码错误!"+"</div>");
}
} catch (SQLException e) {
System.out.println("statement出错");
} finally {
try {
if (res != null)
res.close();
if (sta != null)
sta.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
db.close();
}
}
} else if (user.equals("teacher")) {
DataConn db = new DataConn();
String te_id = request.getParameter("usernm");
String userpwd = request.getParameter("userpwd");
conn = db.getConn();
if (te_id != null && te_id != "") {
try {
sta = conn.createStatement();
res = sta.executeQuery("SELECT * FROM teacher WHERE te_id="
+ "\'" + te_id + "\'" + "AND password=" + "\'"
+ userpwd + "\'");
if (res.next()) {
//request.getSession().setAttribute("tename", te_id);
out.println("<div>" + "欢迎您:"+te_id+ "</div>");
} else {
out.print("用户名或密码错误!");
}
} catch (SQLException e) {
System.out.println("statement出错");
} finally {
try {
if (res != null)
res.close();
if (sta != null)
sta.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
out.println("</pront>");
db.close();
}
} } }
}现在的问题是我用户验证什么的都没错。。但是不能局部刷新主页的那个登陆窗口。而是跳转到另外一个页面显示用户登陆成功和失败求大神指点我一下!!跪谢!!

解决方案 »

  1.   

    那个表单不要放在form里,这样就不会刷新了
      

  2.   

    。。刚刚把form去掉后我的登录按钮都没反应了
      

  3.   

    在form里,写onsubmit="return check()"
      

  4.   

    或都把input type='submit'改成type="button",在js里调用form.submit
      

  5.   

    function complete(){  
       var value=this.value;
       var xhr;
       //if和else if都不运行
       if(window.XMLHttpRequest){
       xhr=new XMLHttpRequest();
      
       }else if(window.ActiveXObject){
       xhr=new ActiveXObject("Microsoft.XMLHttp");
       }
       xhr.onreadystatechange=callback;//设置回调函数
       xhr.open("GET","SousuoServlet?name="+value,true);  
       xhr.send(null);//发送
       function callback(){//这一句的意思是等待发送的请求接收后再运行? 
       if(xhr.readyState==4    
       if(xhr.status==200)
      

  6.   

    我备注语句不用管,那是我刚开始学的时候的标记。一直没删。
    主要添加一个这个试试  xhr.onreadystatechange=callback;//设置回调函数
      

  7.   

    用jquery的ajax功能就可以,
    然后根据反馈结果,再使用jquery的文档操作的方法就可以了,具简单。