jquery ajax连接mysql_继上篇-jquery ajax提交 本篇用ajax提交的数据去数据库查询

本文介绍如何使用jQuery AJAX提交数据至MySQL数据库并进行查询操作。首先创建了用户表,然后在Eclipse中编写Java代码,包括创建User类、LoginService类和LoginDao类。接着在LoginServlet中处理前端传来的数据,调用service和dao层的方法。最后,修复了jsp页面的AJAX错误,完成用户登录的查询功能。
摘要由CSDN通过智能技术生成

今天我们把数据传到数据库去做一下查询。话不多说,上教程。

首先,我们先建立数据库:

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(255) DEFAULT NULL,

`password` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

)

INSERT INTO `user`.`user`(`id`,`username`,`password`) VALUES ( NULL,'铁柱兄','666666');

93cae2726f120e960539bb529b532ba6.png

数据库搞定了,下一步,进eclipse编辑java代码,同学们,跟上,跟上。

今天基于上次的基础上次的新建了三个包,并导入了一个祖传的mysql的jar包:

804bfaa88dbc2f6d914f6021b0484dfb.png

我们先在po包里创建一个名为User的java类(类名随便自己定,只要自己能认识就好了),并在类里定下三个字段给这三个字段创建get、set方法:

ff96706fedf575834f03112ea87f1d96.png

package com.tiezhu.po;

public class User {

private int id;//用户的唯一标识

private String userName;//用户登录的账号(用户名)

private String Password;//密码

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassword() {

return Password;

}

public void setPassword(String password) {

Password = password;

}

}

搞定User类之后,我们去serveice包里创建LoginServeice类,再去dao包里创建LoginDao类:

490fbffca12b603804498888245b6b04.png

回到我们上次创建的LoginServlet类里:

package com.tiezhu.action;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.tiezhu.po.User;

import com.tiezhu.service.LoginServeice;

@WebServlet(name="LoginServlet",urlPatterns="/login")

public class LoginServlet extends HttpServlet{

/**

*

*/

private static final long serialVersionUID = 1L;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// TODO Auto-generated method stub

super.doGet(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//处理编码格式

req.setCharacterEncoding("UTF-8");

resp.setContentType("html/text;charset=UTF-8");

//接受前端传来的数据

String userName=req.getParameter("userName");

String password=req.getParameter("password");

System.out.println("接收到前端传来的数据:userName="+userName+"password="+password);

//new出user对象

User user=new User();

//new出loginservice对象

LoginServeice loginservice=new LoginServeice();

//在loginservice里创建login方法,并把user,userName和password塞进login方法里

user=loginservice.login(userName,password);

//对user进行判断有没有值

if(user!=null){

resp.getWriter().print("查询成功");System.out.println("1");

}else{

System.out.println("0");

resp.getWriter().print("用户不存在");

}

}

}

这时候第40行的user=loginservice.login(userName,password);中的login会报错,这是因为这个方法在loginservice中还不存在。

把鼠标放到login上面,第一个提示工具就会自动给我们去创建这个方法了。

d74177d6ba22ab3d7ee2ad5b0c51fed7.png

现在我们进入LoginServeic类里,继续我们的代码:

package com.tiezhu.service;

import org.apache.tomcat.jni.User;

import com.tiezhu.dao.LoginDao;

public class LoginServeice {

public User login(String userName, String password) {

User user=null;

//new出dao对象

LoginDao dao=new LoginDao();

//在dao里创建login方法,并把userName和password塞进login方法里

user=dao.login(userName,password);//这个时候代码会走进dao层,等dao层里的login方法走完,回来再走return

return user;

}

}

这个时候user=dao.login(user,userName,password);里的login会报错,还是用同样的方法,鼠标放上去,根据提示,点击第一个提示,工具自动在dao里给我们创建好login方法。

现在不急着去编写LoginDao类。我们先在dao包里创建一个BaseDao的java类。

143150bf211480e08b2045b06d1bf581.png

package com.tiezhu.dao;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class baseDao {

//mysql驱动包

private static String driver="com.mysql.jdbc.Driver";

//数据库地址,3306是端口号,user是数据库的库名

private static String url="jdbc:mysql://localhost:3306/user";

//数据库账号

private static String user="root";

//数据库密码

private static String password="root";

//sql连接

Connection conn = null;

/**

* 建立连接

*/

public Connection getConnection(){

//如果conn为空,则去建立连接

if(conn==null){

try {

//1.加载驱动

Class.forName(driver);System.out.println("加载驱动成功");

//2.建立连接

conn=DriverManager.getConnection(url, user, password);System.out.println("建立连接中...");

} catch (Exception e) {

e.printStackTrace();

}

}

System.out.println("连接数据库成功");

return conn;

}

/**

* 关闭连接

*/

public void closeAll(Connection conn,PreparedStatement pstm,ResultSet rs){

if(rs!=null){

try {

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(pstm!=null){

try {

pstm.close();System.out.println("关闭pstm成功");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(conn!=null){

try {

conn.close();System.out.println("关闭conn成功");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

友情提示:baseDao打的所有包必须是sql的不要去打其他的包,要不然就报错。

现在我们去LoginDao里去:

package com.tiezhu.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import com.tiezhu.po.User;

public class LoginDao extends baseDao{

public User login( String userName, String password) {

//这里定义了user,给后面用的

User user=null;

//1定义Connection

Connection conn = null;

//2.定义PreparedStatement

PreparedStatement pstm = null;

//3.查询需定义ResultSet

ResultSet rs = null;

try {

conn=this.getConnection();

Stringsql="select * from user where username='"+userName+"' and password='"+password+"'";

pstm = conn.prepareStatement(sql);

System.out.println(sql);

rs=pstm.executeQuery();

while (rs.next()) {

//在这里new出了user,给下面要把从数据中查询出来的值set进user里面

user=new User();

//从数据库查询出来的set进user类

user.setId(rs.getInt("id"));

user.setUserName(rs.getString("username"));

user.setPassword(rs.getString("password"));

System.out.println(user.getUserName());

}

System.out.println("dao层走到尽头,把user送回service层");

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

this.closeAll(rs,conn, pstm);//释放数据连接

}

//将user返回到service层里。

return user;

}

}

JAVA类搞定!我们回到jsp界面,在这里我要跟大家道个歉,因为上次写的太快了,没注意jsp写错了,现在在这里纠正一下:

上次的错误点,我把上传的userName加了引号,导致最后后台得到数据就是userName,而不是用户输入的值,也同时提醒一下大家以后写代码的时候细心一点哦(现在已经改回来了):

3c468646a9c9aa4d093ca3bb2d559bd0.png

这次我们的jsp中ajax有一些变动,代码贴出来:

pageEncoding="UTF-8"%>

Insert title here

点我提交

function btnConfirm(){//a标签中的点击事件

var userName=$("#userName").val();//通过id获取输入框中用户输入的值

var password=$("#password").val();

$.ajax({

type : 'post',

url : '${pageContext.request.contextPath}/login',

//这里的/login对应LoginServlet类中注解的urlPatterns="/login"

data:{'userName':userName,'password':password},

traditional : true,

async : false,

dataType: 'text',

success : function(data){//成功的事件

alert(data);

},

error : function(data){//失败的事件

alert(data);

}

});

}

全部搞定!把代码跑起来试一下。

ae64289b1d39601f8add914c029696e4.png

d63a807587b4aca79cb56e0f6a3afe42.png

本次教程到此结束,谢谢观看,如有问题,欢迎在评论区留言哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值