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

上篇讲到如何用jquery ajax提交数据至后台,后台接收并返回给ajax。https://www.cnblogs.com/tiezhuxiong/p/11943328.html

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

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

;gutter:true;
CREATE TABLE
user(idint(11) NOT NULL AUTO_INCREMENT,usernamevarchar(255) DEFAULT NULL,passwordvarchar(255) DEFAULT NULL,
PRIMARY KEY (
id) )</p> <pre><code> ;gutter:true;
INSERT INTO user.user(id,username,password) VALUES ( NULL,’铁柱兄’,’666666′);

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

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

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

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

java;gutter:true; package com.tiezhu.po;</p> <p>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; }</p> <p>}</p> <pre><code> 搞定User类之后,我们去serveice包里创建LoginServeice类,再去dao包里创建LoginDao类: 回到我们上次创建的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上面,第一个提示工具就会自动给我们去创建这个方法了。 现在我们进入LoginServeic类里,继续我们的代码: ;gutter:true;
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类。

java;gutter:true; package com.tiezhu.dao;</p> <p>import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;</p> <p>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;</p> <pre><code>/** * 建立连接 */ 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(); } } } </code></pre> <p>}</p> <pre><code> 友情提示: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(); String sql="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,而不是用户输入的值,也同时提醒一下大家以后写代码的时候细心一点哦(现在已经改回来了): 这次我们的jsp中ajax有一些变动,代码贴出来: ;gutter:true;
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);
}
});
}

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

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

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

Original: https://www.cnblogs.com/tiezhuxiong/p/11954117.html
Author: 铁柱兄
Title: 继上篇-jquery ajax提交 本篇用ajax提交的数据去数据库查询

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/608645/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux修改dns域名配置

    bash;gutter:true;</p> <h1>!/bin/bash</h1> <h1>1.定义DNS的文件</h1&gt…

    Linux 2023年6月13日
    0101
  • 使用bt面板中Python项目管理部署Django项目找不到static采坑记

    工作需要,准备在用django做一个小项目,本地测试没有问题,但是使用bt的工具”python项目管理器”部署到服务器上,找不到static文件 于是尝试解…

    Linux 2023年6月14日
    0103
  • 远程小工具PuTTY

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。我们连接服务器一般用ssh或者telnet,这…

    Linux 2023年5月27日
    092
  • 域控制器所需的DNS SRV记录没有在DNS中注册的解决方法

    搭建完AD和DNS之后,发现在DNS的正向查找区域没有SRV记录,并且客户端无法加入到AD中,如下 解决方法 删除正向查找区域下的目录 然后选择”正向查找区域&#822…

    Linux 2023年6月14日
    094
  • js学习笔记之for循环

    for 循环是在您希望创建循环时经常使用的工具。 for 循环的语法如下: for (语句 1; 语句 2; 语句 3) { 要执行的代码块 } 语句 1 在循环(代码块)开始之前…

    Linux 2023年6月13日
    063
  • docker容器资源限制:限制容器对内存/CPU的访问

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    081
  • 回溯法:算法思路以及相关流程图的绘制

    参考建模原文2020国赛B题参考文章1 回溯法介绍 深度优先搜索(缩写DFS):对一个连通图进行遍历的算法。它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标…

    Linux 2023年6月14日
    082
  • windows版本rabbitmq安装及日志level设置

    1.DirectX Repair 安装缺失的C++组件,不安装缺失的组件会造成第二部安装erl文件夹缺少bin文件夹2.安装otp_win64_23.1 1.配置 ERLANG_H…

    Linux 2023年6月7日
    0172
  • 最小化安装killall不可用

    最小化安装killall不可用 最小化安装 Centos7.4后,发现killall命令不可用使用了以下命令,查看软件包名: yum search killall 查找后发现应使用…

    Linux 2023年6月13日
    091
  • php获取图片的主要颜色值RGB

    public function dominant_color() { $image = 'D:/Python/flow/test_photos/12240303_80d8…

    Linux 2023年6月7日
    0105
  • redis数据库

    这一次主要是接着redis服务器接着进行代码讲解,因为redis服务器中包含大量的数据库,因为redis也对每个数据库设计了结构体 redis数据库 在上面 redisServer…

    Linux 2023年6月13日
    094
  • 调度器简介

    内核中用来安排进程执行的模块称为调度器(scheduler),它可以切换进程状态(process state)。例如执行、可中断睡眠、不可中断睡眠、退出、暂停等。 调度器是CPU中…

    Linux 2023年6月7日
    070
  • MySQL表空间回收的正确姿势

    不知道大家有没有遇到这样的一种情况,线上业务在MySQL表上做增删改查操作,随着时间的推移,表里面的数据越来越多,表数据文件越来越大,数据库占用的空间自然也逐渐增长 为了缩小磁盘上…

    Linux 2023年6月13日
    086
  • 常见网络安全设备

    一、防火墙定位:访问控制类产品,网络出现后的第一类安全产品。功能:隔离内网、外网以及DMZ区(业务系统对外发布区,Web应用服务器,邮件服务器等)并控制用户访问。部署方式:通常部署…

    Linux 2023年6月14日
    077
  • Rprop 与 RMSprop 优化器

    https://www.cnblogs.com/setdong/p/16508415.html 1. Rprop 在 full-batch optimization 中, 一些梯度…

    Linux 2023年6月7日
    080
  • 防火墙NAT配置与DHCP下发

    该实验如果有做的不足的地方请见谅 实验目标: 按要求划分区域,公司内部办公区为trust,服务器区为dmz,外部网络为untrust。 PC1和PC2为公司内部办公区,需要从防火墙…

    Linux 2023年6月7日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球