Ajax前后台(Servlet)交互

前端:
定义一个工具类:
package sun;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/**

  • 数据库工具类
  • 1、连接数据库
  • 2、关闭资源
  • @author Lisa Li

*/
public class DBUtil1 {
public static void main(String[] args) {
System.out.println(getConnection());

}
	public static Connection getConnection(){
	Connection conn=null;
	try {
		//加载配置文件
		InputStream in=DBUtil1.class.getClassLoader().getResourceAsStream("bb.properties");
		//创建配置对象
		Properties ps=new Properties();
		//把数据加载到配置文件中
		ps.load(in);
		//加载驱动
		Class.forName(ps.getProperty("jdbcName"));
		//建立数据连接
		//conn=DriverManager.getConnection(ps.getProperty("dbUrl"), ps.getProperty("dbName"), ps.getProperty("dbPwd"));
		String dbName = ps.getProperty("dbName");
		String dbPwd = ps.getProperty("dbPwd");
		String dbUrl = ps.getProperty("dbUrl");
		conn = DriverManager.getConnection(dbUrl, dbName, dbPwd);
		
		
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
		return conn;

	}
//关闭资源
public static void close(ResultSet resultSet, PreparedStatement ps , Connection conn){
	if(resultSet!=null){
		try {
			resultSet.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	if (ps != null) {
		try {
			ps.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
    }
	if (conn != null) {
		try {
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}	

     }
}

}
在定义一个user类:

package sun;

public class User1 {
private Integer id;
private String uname;
private String upwd;

public User1() {
// TODO Auto-generated constructor stub
}

public User1(Integer id, String uname, String upwd) {
super();
this.id = id;
this.uname = uname;
this.upwd = upwd;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUname() {
return uname;
}

public void setUname(String uname) {
this.uname = uname;
}

public String getUpwd() {
return upwd;
}

public void setUpwd(String upwd) {
this.upwd = upwd;
};

}

在这里插入图片描述

注释:
/*
登录按钮绑定点击事件
1、得到用户名和密码
2、判断是否为空
如果为空,提示用户不允许为空,return
3、向后台发送ajax请求,得到后台的响应数据
$.ajax({
type:“post”,
url:“login”,
data:{
uname:用户名,
upwd:密码
},
success:function(data) {
// 处理响应的结果
// code = 1,表示登录成功;code=0,表示登录失败
}
});
*/

function checkForm(){
	var uname=$("#uname").val();// 得到value的值
	var upwd=$("#upwd").val();
	
	//boolean isEmpty() 当且仅当 length() 为 0 时返回 true。 
	if(isEmpty(uname)||isEmpty(upwd)){
		//alert("名称或者密码不能为空");
		$("#msg").html("名称或者密码不能为空");
		return;
	}
	//$("msg").html("");
	//发送ajax请求 的得到后台数据响应
	$.ajax({
		type:"post",
		url: "login1",
		data:{
			'uname':uname,
			'upwd' :upwd
		},
		//回调函数
		success:function(data){
			console.log(data);
			if(data.code==1){// 登录成功
				// 跳转到另外一个页面
				window.loaction.href="index.html";
			}else{
				//登录失败
				alert("登录失败");
				
			}
		}
	});
}

//自定义一个方法 判断字符串是否为空 为空返回true  否则false
//boolean isEmpty() 当且仅当 length() 为 0 时返回 true。 
function isEmpty(str){
	//trim() 此字符串移除了前导和尾部空白的副本;如果没有前导和尾部空白,则返回此字符串。
	if(str==null|| str.trim()==""){
		return true;
		
	}
	return false;
}

后台

新建Servlet类
1 右键src目录 ,新建Servlet,直接finsih
2、修改@WebServlet组件中的值为@WebServlet("/login")
3、删除类中的所有方法,重写service()方法 (方法的参数是http相关的)

@WebServlet("/login1")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 *  1、接收前台传递的参数  uname  upwd
	2、判断用户名和密码是否为空
		如果为空,返回0,return
	3、通过用户名查询用户记录是否存在 (查询操作),返回user对象
	4、判断user对象是否为空(如果查到记录,user对象一定会有值;否则为空)
		如果为空,返回0,return
	5、如果user对象不为空,将数据库查询到的用户密码与前台传递过来的密码作比较
		如果不正确,返回0,return
	6、如果正确,登录成功,返回1

	JDBC的查询操作:通过用户名询用户记录是否存在
		1、得到数据库连接
		2、准备sql语句
		3、预编译sql语句
		4、设置参数,下标从1开始
		5、执行查询,返回resultSet结果集
		6、判断并分析结果集
			如果存在,则从resultSet中取到数据,设置到user对象中
		7、关闭资源
		8、返回user对象
 * 
 */

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	// 获取前台传递的指定名称参数   getParameter(String name)  1、如果前台是ajax提交数据,则name代表的是参数的key值 2、如果前台是表单提交,则name代表的是表单元素的name属性值
	// 所有的请求数据都需要通过request对象获取;响应数据需要使用response对象,响应数据需要通过response得到响应刘,输出数据
	// 1、获取参数
	String userName = request.getParameter("uname");
	String userPwd = request.getParameter("upwd");
	
	// 设置响应类型及编码
	response.setContentType("application/json;charset=UTF-8");
	
	// System.out.println(userName+"----"+userPwd);
	
	// 2、判断用户名和密码是否为空
	if (StringUtil.isEmpty(userName) || StringUtil.isEmpty(userPwd) ) {
		// 如果为空,返回0,return
		response.getWriter().write("{\"code\":0,\"msg\":\"用户名或密码不能为空!\"}"); // 不能直接输出数字0
		return;
	}
	
	// 3、通过用户名查询用户记录是否存在 (查询操作),返回user对象
	User user = findUserByUname(userName);
	
	// 4、判断user对象是否为空(如果查到记录,user对象一定会有值;否则为空)
	if (user == null) {
		// 如果为空,返回0,return
		response.getWriter().write("{\"code\":0,\"msg\":\"用户不存在!\"}"); // 不能直接输出数字0
		return;
	}
	
	// 5、如果user对象不为空,将数据库查询到的用户密码与前台传递过来的密码作比较
	if (!userPwd.equals(user.getUpwd())) { // 不相等
		// 如果不正确,返回0,return
		response.getWriter().write("{\"code\":0,\"msg\":\"密码不正确!\"}"); // 不能直接输出数字0
		return;
	}
	
	// 6、如果正确,登录成功,返回1
	response.getWriter().write("{\"code\":1,\"msg\":\"登录成功!\"}");
	/**
 * JDBC的查询操作:通过用户名查询用户记录是否存在
		1、得到数据库连接
		2、准备sql语句
		3、预编译sql语句
		4、设置参数,下标从1开始
		5、执行查询,返回resultSet结果集
		6、判断并分析结果集
			如果存在,则从resultSet中取到数据,设置到user对象中
		7、关闭资源
		8、返回user对象
  */
  	public User1 findUserByUname(String userName) {
	User1 user=null;
	Connection conn=null;
	PreparedStatement ps = null;
	ResultSet resultSet = null;
	//建立连接
	conn=DBUtil1.getConnection();
	//准备sql语句
	String sql="select * from tb_user where uname=?";
	// 预编译sql语句
	try {
		ps=conn.prepareStatement(sql);
		//设置值
		ps.setString(1, userName);
		// 5、执行查询,返回resultSet结果集
		resultSet=ps.executeQuery();
		// 6、判断并分析结果集
		if(resultSet.next()){
			user=new User1();
			// 如果存在,则从resultSet中取到数据,设置到user对象中
			user.setId(resultSet.getInt("id"));
			user.setUname(userName);
			user.setUpwd(resultSet.getString("upwd"));
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}finally{
		DBUtil1.close(resultSet, ps, conn);
	}

	return null;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值