利用Ajax实现前台登陆
一.登陆模块思路:
前台:
登陆按钮绑定事件
1.获取文本框和密码框的值
2.判断非空
3.若为空,则提示页面
若不为空,则发送Ajax请求:
传递的参数:用户名,密码,用户行为actionName
接收后台的参数:{code:0,msg:“提示信息”},通过判断回调函数返回的结果得知是否登陆成功 1=成功 ,0=失败
若code=1则登陆成功,跳转页面window.location.href = “index.jsp”;code=0,则提示用户
后台:
UserServlet
用户行为:
用户登录 actionName=login
用户列表 actionName=list
用户删除 actionName=delete
用户修改 actionName=update
用户添加 actionName=add
1.获取actionName的参数值
2.判断参数值来调用不同的方法
用户登陆功能:
1.接收参数
2.判断参数非空,非空则通过流输出响应结果给回调函数 {code:0,msg:“提示信息”},并return(用户名或密码不能为空)
3.通过用户名传入user对象去后台查询是否存在
若为null(空),则通过流输出响应结果给回调函数 {code:0,msg:“提示信息”},并return(用户名不存在)
4.若不为null,则判断密码是否一致
若不一致,则通过流输出响应结果给回调函数 {code:0,msg:“提示信息”},并return(密码错误)
5.若一致,则输出响应结果给回调函数
前台代码:
1)准备一个Js文件实现登陆jsp页面的按钮鼠标点击事件:
$("#asubmit").click(function(){
//1.获取文本框和密码框值
var uname=$("#userName").val();
var upwd=$("#userPwd").val();
//2.判断非空
if(isEmpty(uname)){
$("#msg").html("用户名为空");
return;
}
if(isEmpty(upwd)){
$("#msg").html("密码为空");
}
// 若不为空,则发送Ajax请求:
// 传递的参数:用户名,密码,用户行为actionName
$.ajax({
type:"post",
url:"UserServlet",
data:{
uname:uname,
upwd:upwd,
actionName:"login"
},
//接收后台的参数
success:function(result){
//判断返回的code的结果来判断登陆是否成功
if(result.code==1){
//登陆成功则在ajax里跳转页面
window.location.href = "index.jsp";
}else{
//失败则在前台提示后台传的错误信息
$("#msg").html(result.msg);
}
}
});
});
后台代码:
1)准备加载配置文件/链接/关闭数据库工具类DBUtil:
/**
* 数据库的工具类
* 1、得到数据库连接
* 2、关闭资源
* @author blackmilk3
*
*/
public class DBUtil {
// 配置对象
private static Properties properties = null;
static {
try {
// 1、将配置文件加载到输入流中
InputStream in = DBUtil.class.getClassLoader().getResourceAsStream("db.properties");
// 2、得到Properties配置对象
properties = new Properties();
// 3、将输入流对象通过load方法,加载到Properties对象中
properties.load(in);
} catch (Exception e) {
// 打印异常
e.printStackTrace();
}
}
/**
* 得到数据库连接
* @return
*/
public static Connection getConnection(){
Connection connection = null;
// 得到配置对象中的属性值
String jdbcName = properties.getProperty("jdbcName");
String dbUrl = properties.getProperty("dbUrl");
String dbName = properties.getProperty("dbName");
String dbPwd = properties.getProperty("dbPwd");
try {
// 加载驱动
Class.forName(jdbcName);
// 得到数据库连接
connection = DriverManager.getConnection(dbUrl,dbName,dbPwd);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
/**
* 关闭资源
* @param resultSet
* @param preparedStatement
* @param connection
*/
public static void close (ResultSet resultSet, PreparedStatement preparedStatement, Connection connection) {
try {
// 判断资源是否为空,不为空关闭资源
if (resultSet != null) {
resultSet.close