使用ajax进行登陆验证

需求分析:通过ajax进行登陆验证,即如果输入的用户名数据库中存在,就提示用户该用户名已经存在。

我看了下,实现不是很困难,下面是代码,写下来也算巩固ajax的知识。

1.建立一个登陆页面

     
        ajax验证用户名是否存在


输入用户名:
2.上面我们看到,当用户的鼠标移开text文本框时,便会调用validate()函数,下面便是ajax的调用过程代码

3.由于要进行后台数据库的验证,因而数据库的建立是必不可少的,下面是数据库的建表语句

CREATE TABLE `t_user` (
  `id` int(11) NOT NULL,
  `name` varchar(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8


这里我们插入一条数据:name=qzp 以供ajax登陆验证
4.上面的准备工作做完以后,我们就可以开始servlet的验证,代码如下
注:此项目比较小,数据库的连接,查询等操作都写在一个类中,不过建议以后项目之中,还是要将数据库的连接,操作封装到一个类中,这样更加符合面向对象的设计。
还有发现有的同学不是很理解try{ }catch{ }的作用,看到他们的代码中catch{ }块都没有输出语句,这样出错调试时,导致控制台一片空白。其实,这就是少了e.printStackTrace();语句,他的作用就是打印输出错误信息,方便你的调试。
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



public class DoAjaxServlet extends HttpServlet {
   
        /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
        response.setContentType("text/html;charset=gb2312");
        PrintWriter out = response.getWriter();
        
        try {
            response.setContentType("text/html");
            response.setHeader("Cache-Control", "no-store");
            response.setHeader("Pragma", "no-cache");
            response.setDateHeader("Expires", 0);
            String name = request.getParameter("id");
            try {
		  Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
		}
	    Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/login","root","sa");
            String sql="select * from t_user where name=?";
            PreparedStatement pst=conn.prepareStatement(sql);
    	    pst.setString(1,name);
    	    ResultSet rs = pst.executeQuery();
            //如果用户名存在,则返回一个用户名已经存在的信息
            if(rs.next()){
    	         out.write("NO");    	         
    	   }
            else {
                out.write("OK");
            }
        } catch (SQLException e) {			
		e.printStackTrace();		
        } finally { 
            out.close();
        }
    } 

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }

}

5.最好附上web.xml的配置信息
如何检查配置信息是否正确呢,下方红色字体,看是否可以Ctrl进去,如果能直接进到那个类,就说明此处配置正确。

    DoAjax
    DoAjaxServlet
 


 
    DoAjax
    /DoAjax
 
       
6.测试结果
使用ajax进行登陆验证_第1张图片 使用ajax进行登陆验证_第2张图片
大家可以看到,因为数据库中已经存在qzp的信息,所以输出qzp的信息以后,会提示该用户已经存在;输入别的数据则不会提示。

你可能感兴趣的:(java)