ajax+jsp+servlet+mysql实现登陆验证
发布时间:2020-12-16 01:58:31 所属栏目:百科 来源:网络整理
导读:ajax+jsp+servlet+mysql实现登陆验证 找了很多网上的代码,多半是不能用的,不是这有错就是那有错,只好自己写一个。亲自试验,绝对可以用。 1、首先在Mysql创建一个user的数据库,在user数据库创建一个users的表,设计表,字段为name varchar类型;pass ver
ajax+jsp+servlet+mysql实现登陆验证 找了很多网上的代码,多半是不能用的,不是这有错就是那有错,只好自己写一个。亲自试验,绝对可以用。 <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>
“` (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 等待进程启动
- 【cocos2dx】文本占用内存优化及减少drawcall
- 福建省机动车驾驶培训学时管理系统网上理论学习 自动挂
- Jmeter----正则表达式提取respones数据
- ios – 在交换机中未处理枚举值’NSFetchedResultsChangeMo
- Introduction to Optimizer Statistics
- XML-世界上最难学的语言,我的XML创新之路(2)
- swift – String.init(contentsOfFile :)替代Linux?
- c# – 在没有ToList()的情况下使用linq在foreach中锁定数据
- c# – 具有Reactive Extensions的组的缓冲区组,嵌套订阅