java ajax

1.ajax定义:异步刷新技术

2.ajax语法

 3.ajax实战

在不需要点击刷新按钮时,达到局部刷新的效果,如下图所示

 

 

 

 步骤一:创建工程/包/js

 步骤二:数据库/表创建

步骤三:实体类

步骤四:UserDao

package cn.kgc.dao;import cn.kgc.entity.User;public interface UserDao {//1.判断用户名称是否存在public User findByUserName(String username);//2.通过用户名和密码判断是否正确public  User findUser(User user);
}

步骤五:UserDaoImpl

package cn.kgc.dao;import cn.kgc.entity.User;
import cn.kgc.util.BaseDao;import java.sql.SQLException;public class UserDaoImpl extends BaseDao implements UserDao {public User findByUserName(String username) {User user = null;rs = super.executeQuery("select * from t_user where username = ?",new Object[]{username});try {while (rs.next()){user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setUserpwd(rs.getString("userpwd"));}} catch (SQLException e) {throw new RuntimeException(e);} finally {super.closeConn();}return user;}public User findUser(User u) {User user = null;rs = super.executeQuery("select * from t_user where username = ? and userpwd=?",new Object[]{u.getUsername(),u.getUserpwd()});try {while (rs.next()){user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setUserpwd(rs.getString("userpwd"));}} catch (SQLException e) {throw new RuntimeException(e);} finally {super.closeConn();}return user;}
}

步骤六:UserService

package cn.kgc.service;import cn.kgc.entity.User;public interface UserService {public String validate(User user);
}

步骤七:UserServiceImpl

package cn.kgc.service;import cn.kgc.dao.UserDaoImpl;
import cn.kgc.entity.User;public class UserServiceImpl implements UserService{UserDaoImpl userDao = new UserDaoImpl();public String validate(User user) {String message="";//判断如果输入用户的名称存在if (user.getUsername()!=null &&!"".equals(user.getUsername())){//通过输入的用户名称 判断是否存在于数据库中User u = userDao.findByUserName(user.getUsername());//如果数据库中不存在当前的用户名称,则返回操作码1000if (u==null){message = "1000";}else {User u2 = userDao.findUser(user);//如果数据库中用户名或密码错误,则返回操作码2000if (u2==null){message = "2000";}}}return message;}
}

步骤八:UserServlet

package cn.kgc.servlet;import cn.kgc.entity.User;
import cn.kgc.service.UserServiceImpl;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;public class UserServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String action = request.getParameter("action");UserServiceImpl userService = new UserServiceImpl();if (action.equals("validate")){String username = request.getParameter("username");String userpwd = request.getParameter("userpwd");User user = new User();user.setUsername(username);user.setUserpwd(userpwd);String validate = userService.validate(user);//以流的形式将操作码返回到客户端response.getWriter().write(validate);}}
}

步骤9:login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Title</title><script type="text/javascript" src="js/jquery-1.9.1.min.js"></script><script type="text/javascript">function validate(){var flag = true;var username = $("[name=\"username\"]").val();var userpwd = $("[name=\"userpwd\"]").val();$.ajax({url:"UserServlet?action=validate",type:"post" ,data: {"username":username,"userpwd":userpwd},dataType: "text",async:false,success:function (data){$("#message1").empty();$("#message2").empty();if (data=="1000"){$("#message1").text("用户名不存在")flag = false;}else if (data=="2000"){$("#message2").text("用户名或密码错误")flag = false;}},error:function (){}})return flag;}function validateLogin() {var username = $("[name=\"username\"]").val();var userpwd = $("[name=\"userpwd\"]").val();if (username==""){alert("用户名不能为空");return false;}if (userpwd==""){alert("用户密码不能为空");return false;}var flag = validate();if (flag){window.location.href="index.jsp";}}</script>
</head>
<body><table><tr><td>用户名称</td><td><input type="text" name="username" onblur="validate()"><span id="message1" style="color: red"></span></td></tr><tr><td>用户密码</td><td><input type="text" name="userpwd" onblur="validate()" ><span id="message2" style="color: red"></span></td></tr><tr><td><input id="loginButton" type="button" value="登录" onclick="validateLogin()"></td></tr></table>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音频数据分割单独处理后再拼接出现跳跃间断点的处理方法

+hezkz17进数字音频系统研究开发交流答疑 1如图所示 问题1: 对于一个81920字节的音频文件,如果是分割成小块4096输入(无重叠,均分),在频域上做去噪算法,每4k数据返回到时域上再拼接成80k的处理结果文件,发现处理结果有异常有跳跃间断点,像是频谱泄露?分割也需要有重…

计算机网络 day9 DNAT实验

目录 DNAT DNAT策略的典型应用环境 DNAT策略的原理 在网关中使用DNAT策略发布内网服务器 DNAT实验&#xff1a; 实验环境&#xff1a; DNAT网络规划拓扑图&#xff1a; 步骤&#xff1a; 1、创建linux客户端Web网站&#xff08;go语言&#xff09;&#xff0c;实现Web服…

如何快速爬取国内985大学学术学报pdf文件

背景 最近&#xff0c;在爬取关于国内985大学的学报时&#xff0c;我注意到大部分大学学报站点格式都采用相似的形式&#xff0c;并且PDF链接都使用自增的ID。然而&#xff0c;我也发现了一个问题&#xff0c;即大多数PDF链接的ID并不是连续的。现在我将向你分享一些方法&…

15 大模型训练 内存优化

先看GPU结构&#xff0c;我们常说显存的时候&#xff0c;说的一般就是Global memory 训练的过程中&#xff0c;我们为了反向传播过程&#xff0c;必须将中间的结果&#xff08;激活值&#xff09;存储下来。 在训练的过程中&#xff0c;那些会消耗内存呢&#xff1f; model we…

web-报错注入

必要的函数 rand select rand(0) from hackbiao; rand(0)&#xff1a;生成以0开头的随机数&#xff0c;生成的数量与字段下数据的条数相等。如果i没有这个地段的话&#xff0c;就会自己形成一个新的字段打印出来。 count和group by grouip by在进行排序的时候&#xff0c;会…

【分布式应用】Ceph的实战应用

目录 一、创建 CephFS 文件系统 MDS 接口1.1服务端操作1&#xff09;在管理节点创建 mds 服务2&#xff09;查看各个节点的 mds 服务3&#xff09;创建存储池&#xff0c;启用 ceph 文件系统4&#xff09;查看mds状态&#xff0c;一个up&#xff0c;其余两个待命&#xff0c;目…

SpringCloud(五)Gateway 路由网关

一、路由网关 官网地址&#xff1a;https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/ 我们需要连接互联网&#xff0c;那么就需要将手机或是电脑连接到家里的路由器才可以&#xff0c;而路由器则连接光猫&#xff0c;光猫再通过光纤连接到互联网&a…

对 Jenkins+ANT+Jmeter 接口测试的实践

目录 1、前言 2、框架与数据准备 3、脚本设计 4、整理测试报告 1、前言 JenkinsANTJMeter是一种常见的接口测试实践方案&#xff0c;可以实现自动化的接口测试和持续集成。Jenkins是一个流行的持续集成工具&#xff0c;ANT是一个构建工具&#xff0c;而JMeter是一个功能强大…

JS逆向系列之猿人学爬虫第18题-jsvmp - 洞察先机

文章目录 目标网址加密参数分析Python 实现往期逆向文章推荐目标网址 https://match.yuanrenxue.cn/match/18题目标着难度是困难级别,主要还是vmp保护的JS代码调试困难,理清逻辑就会变得简单了 加密参数分析 请求第一页时没有加密参数,从第二页开始,url会携带t和v两个参数…

240. 搜索二维矩阵 II

题目描述&#xff1a; 主要思路&#xff1a; 利用矩阵中的单调性进行搜索。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int nmatrix.size(),mmatrix[0].size();int in-1,j0;while(i>0&&j<m){if(m…

详解CPU的态

目录 1.CPU的工作过程 2.寄存器 3.CPU的上下文 4.系统调用 5.CPU的态 1.CPU的工作过程 CPU要执行的指令的地址存在寄存器中&#xff0c;指令存放在内存中&#xff0c;而CPU本质上就是一个去内存中根据地址取指令&#xff0c;然后执行指令的硬件。 举一个例子&#xff1a…

【蓝图】p27开关门互动实现

p27开关门互动实现 创建一个门 添加初学者内容包 拖拽一个门到场景中 添加一个碰撞 创建盒体触发器 左侧模式->基础->盒体触发器&#xff0c;拖拽到门上&#xff0c;调整大小 开关门互动实现 做一个开门互动 要把开门逻辑写在关卡蓝图里 门设置为可移动 打开关卡蓝…

SpringBoot整合knife4j

knife4j 文档地址&#xff1a;https://doc.xiaominfo.com/ knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。 Swagger介绍 前后端分离开发模式中&#xff0c;api文档是最好的沟通方式。 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和…

基于单片机的智能窗帘智能晾衣架系统的设计与实现

功能介绍 以STM32单片机单片机作为主控系统&#xff1b;OLED液晶显示当前环境温湿度&#xff0c;光照强度&#xff0c;时间&#xff0c;开关状态等信息&#xff1b;雨滴传感器检测当前环境是否下雨&#xff0c;天气下雨检测&#xff0c;天气潮湿时自动收衣服&#xff1b;可以通…

RabbitMq(一)

一、基本概念、常见工作模式以及简单使用 MQ全称Message Queue (消息队列)&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。 小结 MQ消息队列&#xff0c;存储消息的中间件分布式系统通信两种方式:直接远程调用和借助第三方完成间接通信发…

openGauss学习笔记-09 openGauss 简单数据管理-创建数据库

文章目录 openGauss学习笔记-09 openGauss 简单数据管理-创建数据库9.1 语法格式9.2 参数说明9.3 示例 openGauss学习笔记-09 openGauss 简单数据管理-创建数据库 数据库安装完成后&#xff0c;默认生成名称为postgres的数据库。您需要自己创建一个新的数据库。 9.1 语法格式…

低代码技术:提高效率降低成本的全新选择

一、前言 企业想要独立的应用程序&#xff0c;开发者在寻求更快速、更高效、更灵活的开发方法&#xff0c;以适应快速变化的市场需求。在这个背景下&#xff0c;低代码技术以提高效率降低成本的方式走进人们视野&#xff0c;成为了一种全新的应用程序开发方式。 二、相比传统的…

金融中的数学:概率分布(下)

上篇博客介绍了离散型概率分布&#xff0c;本篇博客介绍连续型概率分布。 1.连续型概率分布 连续型均匀分布&#xff08;Continuous Uniform distribution&#xff09;是一种描述在特定区间内取值均匀分布的概率分布。在该分布中&#xff0c;随机变量在给定区间内的取值概率密…

上门服务小程序|上门家政小程序开发

随着现代生活节奏的加快和人们对便利性的追求&#xff0c;上门家政服务逐渐成为了许多家庭的首选。然而&#xff0c;传统的家政服务存在着信息不透明、服务质量不稳定等问题&#xff0c;给用户带来了困扰。为了解决这些问题&#xff0c;上门家政小程序应运而生。上门家政小程序…

Jupyter入门使用教程

1 Jupyter Notebook与Jupyter Lab简介 Jupyter Notebook是一个开源的Web应用&#xff0c;在深度学习领域非常活跃。用户可以在这里创建和分享可执行代码、可视化结构和注释说明的文档。 Jupyter Notebook以网页的形式展现&#xff0c;用户可以在此网页中直接编辑代码、运行程…