ajax+jsp+servlet+mysql实现登陆验证

前端之家收集整理的这篇文章主要介绍了ajax+jsp+servlet+mysql实现登陆验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

ajax+jsp+servlet+MysqL实现登陆验证

找了很多网上的代码,多半是不能用的,不是这有错就是那有错,只好自己写一个。亲自试验,绝对可以用。
1、首先在MysqL创建一个user的数据库,在user数据库创建一个users的表,设计表,字段为name varchar类型;pass verchar类型;添加数据name 为aa ,pass也是aa。
2、在项目的WebContent–WEB-INF–lib下导入一个数据库连接驱动的jar包,MysqL-connector-java-5.1.33-bin.jar网上下载,解压到lib文件夹即可。
3、编写JSP页面

<div><form id="myform" action="" method="post">
    账号:<span id="tdName">
    <input type="text" id="userName" name="name" />     </span><br><br>
    <span id="pwdBox">                             
    密码:<span id="tdPass">
  <input type="password" id="userPass" name="pass" /></span><br><br>
    </span>
    <span id="state"></span><br>
         <div align="center" id="buttom" >
          <span ><input type="button" onClick="check()" value="登录" /></span>
    </div>
    </form>
    </div>

4、编写AJAX函数check() 和回调函数,放在刚才的JSP页面的head部分。

<script type="text/javascript"> var xmlHttp=false; function createXMLHttpRequest() { if (window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }else if (window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); } } function check(){ createXMLHttpRequest(); //调用创建XMLHttpRequest对象方法 xmlHttp.onreadystatechange=callback; //设置回调函数 nameStr=myform.name.value; passStr=myform.pass.value; var url="check?name="+nameStr+"&pass="+passStr; //向servlet/check发送请求的URL xmlHttp.open("get",url); //向服务器端发送请求 xmlHttp.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8"); xmlHttp.send(null); } function callback(){ if(xmlHttp.readyState==4){ if(xmlHttp.status==200){ var str = xmlHttp.responseText; alert(str); if(str.length==2){ //如果返回的字符串长度为2表示用户存在可以登录成功 document.getElementById("state").innerHTML="已登录用户"; var tdName=document.getElementById("tdName"); tdName.replaceChild(document.createTextNode(nameStr),tdName.firstChild);//替换节点 var tdPass=document.getElementById("pwdBox"); tdPass.innerHTML=""; var trButtom=document.getElementById("buttom"); trButtom.innerHTML='<font color=\"red\">恭喜你成功登录</font> <div> <input type="button" onclick="exit()" value="退出" /></div>'; trButtom.name="yes"; }else{ document.getElementById("state").innerHTML="<font color=\"red\">用户名或密码有误</font>"; } } } } </script>

5、编写servlet

package servlet;
import beans.sqlCheck;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Check extends HttpServlet {
    public void doGet(HttpServletRequest request,HttpServletResponse response)
            throws ServletException,IOException {
    //获取客户端请求的参数,并进行判断。
        //如果用户存在,返回一个长度为2的字符串,如果用户不存在返回一个长度为1的字符串。
        PrintWriter out = response.getWriter();
        String name=request.getParameter("name");//取得用户名参数
        String pass=request.getParameter("pass");//取得用户密码参数
        sqlCheck sc=new sqlCheck();
        sc.setName(name);//为JavaBean设置name属性
        sc.setPass(pass);// 为JavaBean设置pass属性
        try{
             if(sc.check()){  //如果用户存在
                 out.print("aa");  //返回长度为2的一个字符串
                 request.getSession().setAttribute("name",name );

                 }else{
                out.print("a");  //返回长度为1的一个字符串
                 }
        }catch(Exception e){
            out.print(e.toString());
        } 
        out.flush();
        out.close();

    }
    public void doPost(HttpServletRequest request,IOException {
        doGet(request,response);
    }
}

6、编写sqlCheck类

package beans;
import java.sql.*;

import javax.servlet.ServletException;
import javax.mail.Session;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.omg.CORBA.Request;

public class sqlCheck {
   private boolean ok=false;//状态变量
   private String name=null;
   private String pass=null;

   public boolean check()throws Exception{
       checksql(this.name,this.pass);
       return this.ok;
   }
   public void setName(String name){
           this.name = name;
   }
   public String getName(){
           return name;
   }
   public void setPass(String pass){
           this.pass = pass;
   }
   public String getPass(){
           return pass;
   }

   //查询数据库,如果数据库没有这个用户就把状态变量设置为false,如果有则设置为true
  private void checksql(String name,String pass) throws Exception{
            Class.forName("com.MysqL.jdbc.Driver");
            String url="jdbc:MysqL://localhost:3306/user?user=root&password=数据库连接密码&characterEncoding=UTF-8";
        Connection con=DriverManager.getConnection(url);
        Statement st=con.createStatement();
        ResultSet rs=st.executeQuery("select * from users where name='"+name+"' and pass='"+pass+"'");
        if(rs.next()){//表示有记录

// 
                   this.ok=true;

                }else{
                   this.ok=false;
                }
   }
}

`7、配置web.xml“

<servlet-mapping>
    <servlet-name>check</servlet-name>
    <url-pattern>/check</url-pattern>
  </servlet-mapping>
   <servlet>
    <servlet-name>check</servlet-name>
    <servlet-class>servlet.Check</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

“`

原文链接:https://www.f2er.com/ajax/163291.html

猜你在找的Ajax相关文章