一次较为完整的原生JavaScript AJAX与Java的前后端数据交互

效果

在这里插入图片描述

Maven 依赖

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency>

创建数据库表

create table user(
id int NOT NULL AUTO_INCREMENT,
username char(255) NOT NULL,
password char(255) NOT NULL ,
PRIMARY KEY (id)
)ENGINE=InnoDB;

在这里插入图片描述

html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录</title><link rel="stylesheet" href="style.css">
</head>
<body>
<div class="main"><div><input type="text" id="username" placeholder="请输入账号"></div><div><input type="password" id="password" placeholder="请输入密码"></div><div>登录</div>
</div><script>var username = document.querySelector("#username")var password = document.querySelector("#password")var btn = document.querySelector(".main>div:nth-child(3)")var xmlHttpRequest = new XMLHttpRequest();var mainDiv = document.querySelector(".main");btn.addEventListener("click", function (ev) {if(document.querySelector(".pd")!=null){mainDiv.removeChild(document.querySelector(".pd"));}var json = {username: username.value,password: password.value,flag: false}//console.log(ev)xmlHttpRequest.open("POST", "/ajax/from", true)xmlHttpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");//将json对象转换成字符串传输至后台xmlHttpRequest.send(JSON.stringify(json));xmlHttpRequest.onreadystatechange = function () {if (xmlHttpRequest.status == 200 && xmlHttpRequest.readyState == 4) {var data = xmlHttpRequest.responseText;console.log(data);//将json字符串转换成对象var parse = JSON.parse(data);console.log(parse)if (parse.flag == true) {var div = document.createElement("div");div.className="pd"div.innerHTML = `<h3>用户登录成功,欢迎${parse.username}</h3>`mainDiv.appendChild(div);} else if (parse.flag == false) {var div = document.createElement("div");div.className="pd"div.innerHTML = "<h3>用户登录失败,账号或密码有误</h3>"mainDiv.appendChild(div);}}}})
</script>
</body>
</html>

Servlet代码

package com.dao;import com.domain.user;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.util.JDBCutil;import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;@WebServlet(urlPatterns = "/from")
public class from extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");response.setCharacterEncoding("utf-8");final PrintWriter out = response.getWriter();final ServletInputStream inputStream = request.getInputStream();final BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));final StringBuilder stringBuilder = new StringBuilder();String len=null;while((len=reader.readLine())!=null){//System.out.println(len);stringBuilder.append(len);}String json=stringBuilder.toString().trim();//System.out.println("json= "+json);final GsonBuilder gsonBuilder = new GsonBuilder();final Gson gson = gsonBuilder.create();final user user = gson.fromJson(json, com.domain.user.class);System.out.println(user);final JDBCutil jdbCutil = new JDBCutil();if(jdbCutil.login(user)){user.setFlag(true);}System.out.println(gson.toJson(user));out.println(gson.toJson(user));out.close();}
}

User

package com.domain;public class user {private String username;private String password;private boolean flag;public boolean isFlag() {return flag;}@Overridepublic String toString() {return "user{" +"username='" + username + '\'' +", password='" + password + '\'' +", flag=" + flag +'}';}public void setFlag(boolean flag) {this.flag = flag;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

JDBC

package com.util;import java.sql.*;public class JDBCutil {private Connection cn=null;private PreparedStatement  st =null;private ResultSet set=null;private  String url="jdbc:mysql://localhost:3306/zlfsql";private String user="root";private String password="feng10.10";public Connection getConection()  {Connection c=null;try {Class.forName("com.mysql.jdbc.Driver");c=DriverManager.getConnection(url,user,password);}catch (SQLException | ClassNotFoundException e){e.printStackTrace();}return c;}public boolean login(com.domain.user  ur){if(ur.getUsername()==null || ur.getPassword()==null || ur.getUsername().length()<1 || ur.getPassword().length()<1){return false;}cn = getConection();try{st=cn.prepareStatement("select  * from user where username=? and password=? ");//System.out.println(ur.getUsername()+ " &&&"+ur.getPassword());st.setString(1,ur.getUsername());st.setString(2,ur.getPassword());set = st.executeQuery();return set.next();}catch (SQLException e){e.printStackTrace();}return false;}
}

主要是复习一下之前学过的知识。

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

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

相关文章

工厂模式解耦---控制反转

控制反转 是面向对象编程中的一种设计原则&#xff0c;可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;&#xff0c;还有一种方式叫“依赖查找”&#xff08;Dependency Lookup&#xff09…

mySQL教程 第7章 存储过程和函数

第7章 存储过程和函数 存储过程和存储函数 MySQL的存储过程&#xff08;stored procedure&#xff09;和函数&#xff08;stored function&#xff09;统称为stored routines。 1. MySQL存储过程和函数的区别 函数只能通过return语句返回单个值或者表对象。而存储过程不允许执行…

简单的ajax上传商品功能使用SevletFileUpload和FormData

目录1、先上图2、使用ServletFileUpload读取前端发送过来的请求2.1、maven依赖2.2、SevletFileUpload的一些基本操作3、前端代码4、 Servlet4.1、后端返回商品列表4.2、添加商品4.3、商品DAO层4.3.1、 ProductDao4.3.2、ProductDaoimpl1、先上图 2、使用ServletFileUpload读取前…

JavaScript实现数据分页

目录分页效果图如何分页代码分页 当表单数据过多时&#xff0c;比较不容易浏览。这个时候就需要分页查看。 效果图 如何分页 1、首先确定总记录条数 len 2、单页浏览条数 page_number 3、页数 Total_pageslen % page_number 0 ? len / page_number : len / page_number 1;…

日均互动50万次 微信的营销的成功之道

微信公众平台已成为目前最热的企业营销推广平台&#xff0c;每天都有大量互联网公司和传统企业进驻&#xff0c;使用公众账号通过移动端和粉丝互动&#xff0c;不仅可以群发文字、图片、视频、语音等信息内容&#xff0c;还可以进行一对一的深入沟通。 现在微信公众平台已经成为…

微信开发1之PHP成功获取微信支付的Token

相信不少同学在开发“微信支付”的时候遇到了无法获取Token的难题&#xff0c;这里贴出我成功获取Token的php源码&#xff1a; 步骤如下&#xff1a; 1&#xff0c;确保你服务器的php环境是搭建好的&#xff0c;意思就是可以正确运行php程序 2&#xff0c;确定微信Token访问你…

spring IOC基本配置(xml配置和注解配置)

目录Spring IOCIOC是什么IOC可以做什么依赖注入IOC和DIIOC容器Bean配置IOC容器spring ioc 依赖XML配置实例化容器使用容器xml配置详解spring对bean的管理1、创建bean的三种方式2、bean对象的作用范围3、bean对象的生命周期构造函数依赖注入Setter方法依赖注入注解配置使用xml和…

微信开发2之php网页授权登录

在开发之前&#xff0c;我们要确保我们的服务号&#xff0c;在接口权限处&#xff0c;已经获得了网页授权权限 此外&#xff0c;我们还需要有个备案通过的域名&#xff0c;比如"www.myname.com"&#xff0c;并确保你的域名可以访问到你的服务器&#xff0c;于是在公众…

linux6.0 SVN 服务搭建

Linux6.0下安装svn服务器<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Subversion有两种运行方式&#xff0c;一种是基于Apache Http Server&#xff0c;另外一种是Subversion Standalone Server。下面我讲解的是基于Apache H…

Spring+SpringMVC+Mybatis 整合入门

文章目录整体结构结构图Spring 整合SpringMVCweb.xmlSpringMvc.xmlSpring整合MybatisapplicationContext.xml代理接口的配置accountDaoimpl.xml其余代码表现层业务层持久层domain查询效果展示附上spring约束spring约束SpringMVC约束Maven 依赖整体结构 结构图 Spring 整合Sprin…

微信开发3之php模板信息推送

模板信息推送&#xff1a;需要在后台开通了模板消息推送接口 PHP代码如下&#xff1a; <?php $appid"wxxxxxxxxxxxxxxxxxx"; //填写微信后台的appid $appsecret"xxxxxxxxxxxxxxxxxxxxxxxxx"; //填写微信后台的appsecret $TOKEN_URL"…

SpringBoot实现国际化

在哔哩哔哩一位up主视频中学到的&#xff01; 国际化 原理 通过Properties文件配置&#xff0c;配置完后通过Thymeleaf中的#{} 来取代原来的静态资源。例如&#xff1a; spring:# 关闭模板引擎的缓存thymeleaf:cache: falsemessages:encoding: UTF-8## 配置国际化绑定的文…

前端开发1之Node.js以及npm开发环境搭建

关于现今的前端开发&#xff0c;由于微服务架构的普及&#xff0c;前端工程师必须承担更重要的任务。现在的后端工程师无需考虑JS、Ajax和json的解析遍历&#xff0c;或许只需要处理前端请求过来的各种带参请求&#xff08;Get/Post/Patch等&#xff09;&#xff0c;目前许多前…

开源中国iOS客户端学习——(八)网络通信AFNetworking类库

AFNetworking是一个轻量级的iOS网络通信类库&#xff0c;继ASI类库不在更新之后开发者们有一套不错选择&#xff1b; AFNetworking类库和使用教程: https://github.com/AFNetworking/AFNetworking 如果想深入研究有官方文档介绍:http://afnetworking.github.com/AFNetworking/ …

OpenGL 入门第一课 视窗以及三角形

请查看课件教程 下面是我粗劣画的过程图 下面是课件中的过程图 下面是未使用索引缓冲对象&#xff08;EBO&#xff09;的 #define GLEW_STATIC // 这个一定要加不然报错 静态链接库 #include<iostream> #include<GL/glew.h> #include<GLFW/glfw3.h> usin…

玩玩短视频平台和网课平台开发1——腾讯云对象储存COS的初步配置

近一两年来&#xff0c;抖音、快手等以短视频为手段的社交工具红遍了大江南北&#xff0c;腾讯也推出了"微视"平台&#xff0c;希望分一杯羹&#xff1b;传统的直播平台如&#xff1a;斗鱼直播、虎牙直播就更不用说了&#xff0c;甚至涌现了许多主打"知识付费&q…

解决从其它搜索引擎不能直接访问百度页面的问题

由于最近baidu和360又开始互咬了&#xff0c;从其它搜索引擎搜索到百度的结果时又变不能直接访问了&#xff0c;会出现如下界面。 需要手动点击这个链接才能访问&#xff0c;让人非常不爽。因此我写了一个chrome扩展解决这个问题&#xff0c;原理很简单&#xff1a;当遇到这种需…

基于JAVA的校园电商物流云平台 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快递公司模块2.4 物流订单模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 商品表3.2.2 快递公司表3.2.3 物流订单表 四、系统展示五、核心代码5.1 查询商品5.2 查询快递公司5.3 查…

OpenGL Sharders(着色器) 入门

着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。 // 顶点着色器 #version 330 core // 0号栏位读取顶点坐标 layout (location 0) in vec3 aPos; //1号栏位读取颜色颜色 …

玩玩机器学习1——ubuntu16.04 64位安装TensorFlow GPU+python3+cuda8.0+cudnn8.0

如今的机器学习运算大多数都是利用gpu进行&#xff0c;包括很大大型游戏&#xff0c;比特币的开采&#xff0c;都离不开GPU的运算&#xff0c;GPU已成为大型运算能力的主要硬件。 大名鼎鼎的机器学习开源框架&#xff0c;如TensorFlow和Caffe&#xff0c;Caffe2都建议使用GPU作…