Java基础入门day63

news2024/10/5 14:10:18

day63

JSON

Jackson方式

package com.saas.test;
​
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.saas.entity.Student;
import com.saas.entity.Birth;
​
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
​
public class TestJacksonJson {
​
 public static void main(String[] args) {
     Student student = new Student();
​
     student.setSid(1);
     student.setName("张三");
     student.setScore(90.5);
​
     Birth birth = new Birth();
​
     birth.setYear(1990);
     birth.setMonth(1);
     birth.setDay(1);
​
     student.setBirth(birth);
​
     System.out.println(student);
​
     System.out.println("===========================================");
​
     ObjectMapper mapper = new ObjectMapper();
​
     try {
         String jsonStu = mapper.writeValueAsString(student);
​
         System.out.println(jsonStu);
​
         System.out.println("===========================================");
​
         Student student2 = mapper.readValue(jsonStu, Student.class);
​
         System.out.println(student2);
​
         System.out.println("===========================================");
​
         List<Student> list = new ArrayList<>();
​
         list.add(student);
         list.add(student2);
​
         String jsonList = mapper.writeValueAsString(list);
​
         System.out.println(jsonList);
         System.out.println("===========================================");
​
         List<Student> list2 = mapper.readValue(jsonList, mapper.getTypeFactory().constructCollectionType(List.class, Student.class));
​
         System.out.println(list2);
     } catch (JsonProcessingException e) {
         throw new RuntimeException(e);
     } catch (IOException e) {
         throw new RuntimeException(e);
     }
 }
}

运行结果如下:

Student{sid=1, name='张三', score=90.5, birth=Birth{year=1990, month=1, day=1}}
===========================================
{"sid":1,"name":"张三","score":90.5,"birth":{"year":1990,"month":1,"day":1}}
===========================================
Student{sid=1, name='张三', score=90.5, birth=Birth{year=1990, month=1, day=1}}
===========================================
[{"sid":1,"name":"张三","score":90.5,"birth":{"year":1990,"month":1,"day":1}},{"sid":1,"name":"张三","score":90.5,"birth":{"year":1990,"month":1,"day":1}}]
===========================================
[Student{sid=1, name='张三', score=90.5, birth=Birth{year=1990, month=1, day=1}}, Student{sid=1, name='张三', score=90.5, birth=Birth{year=1990, month=1, day=1}}]
​

AJAX和JSON综合案例

简介

完成一个访百度的搜索效果,用户键盘输入内容后,下面有联想词语列表,在列表上悬浮有与其他条目不一样的效果样式,离开又恢复到之前的状态,用户点击条目后,让该条目显示在搜索框中,并且将下面的下拉框清空。

静态页面

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>index html</title>
​
 <style>
     #imgDiv {
         width: 100%;
         height: 100%;
         margin-top: 160px;
         margin-left: 600px;
     }
​
     #par {
         width: 800px;
         height: 480px;
         position: absolute;
         left: 30%;
         margin-top: 60px;
     }
​
     #keyword {
         width: 560px;
         height: 40px;
         margin-top: 20px;
         border: 2px solid green;
         font-size: 20px;
     }
​
     #search {
         width: 200px;
         height: 44px;
         margin-top: 20px;
         font-size: 20px;
     }
​
     .tdHover{
         background-color: pink;
         font-size: 22px;
     }
 </style>
</head>
<body>
<div id="imgDiv">
 <img id="img" src="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" alt=""/>
</div>
​
<div id="par">
 <input type="text" id="keyword" οnkeyup="getContent()">
 <button id="search">百度一下,你就知道</button>
 <table id="table">
     <tbody id="tbody">
     <!--<tr>
         <td>java</td>
     </tr>
     <tr>
         <td>javascript</td>
     </tr>
     <tr>
         <td>jsp</td>
     </tr>
     <tr>
         <td>jstl</td>
     </tr>-->
     </tbody>
 </table>
</div>
​
<script>
​
 var xhr;
​
 function createXHR(){
     if(window.XMLHttpRequest){
         xhr = new XMLHttpRequest();
     }else{
         xhr = new ActiveXObject("Microsoft.XMLHTTP");
     }
 }
 function getContent() {
     //alert(123)
     createXHR();
​
     var keyword = document.getElementById("keyword").value;
​
     xhr.open("GET","search?keyword="+keyword,true);
​
     xhr.send();
​
     xhr.onreadystatechange = callBack;
 }
​
​
 function callBack(){
     if(xhr.readyState == 4){
         if(xhr.status == 200){
​
             var content = xhr.responseText;
​
             //  eval函数可以将字符串转换为JSON对象
             content = eval(content);
​
             createTD(content);
​
             setListener(content);
         }
     }
 }
​
 function setListener(c){
     var size = c.length;
​
     for (var i = 0; i < size; i++){
         var selectTD = document.getElementById("id" + i);
​
         selectTD.addEventListener("mouseover", function (){
             this.setAttribute("class", "tdHover");
         });
​
         selectTD.addEventListener("mouseout", function (){
             this.removeAttribute("class");
         });
​
         selectTD.addEventListener("click", function (){
             var keyword = this.innerText;
             document.getElementById("keyword").value = keyword;
​
             clearTD();
         });
     }
 }
​
 function createTD(c){
     clearTD();
​
     var tbody = document.getElementById("tbody");
​
     for(var i = 0; i < c.length; i++){
         var tr = document.createElement("tr");
         var td = document.createElement("td");
         var node = document.createTextNode(c[i]);
​
         td.appendChild(node);
         td.setAttribute("id","id" + i);
​
         tr.appendChild(td);
         tbody.appendChild(tr);
     }
 }
​
 function clearTD(){
     var tbody = document.getElementById("tbody");
​
     tbody.innerText = "";
 }
</script>
</body>
</html>

后台Servlet

package com.saas.servlet;
​
import com.fasterxml.jackson.databind.ObjectMapper;
​
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 java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
​
@WebServlet(urlPatterns = "/search")
public class SearchServlet extends HttpServlet {
​
 private static List<String> datas = new ArrayList<>();
​
 static {
     datas.add("java");
     datas.add("python");
     datas.add("c++");
     datas.add("c#");
     datas.add("php");
     datas.add("javascript");
     datas.add("html");
     datas.add("css");
     datas.add("mysql");
     datas.add("sqlserver");
     datas.add("mongodb");
     datas.add("redis");
     datas.add("hadoop");
     datas.add("jstl");
     datas.add("js");
     datas.add("jsp");
     datas.add("sql");
 }
​
 @Override
 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     String keyword = req.getParameter("keyword");
​
     if (keyword != null && !keyword.trim().equals("")) {
         List<String> result = new ArrayList<>();
         for (String data : datas) {
             if (data.contains(keyword)) {
                 result.add(data);
             }
         }
​
         Collections.sort(result);
​
         ObjectMapper om = new ObjectMapper();
​
         String s = om.writeValueAsString(result);
         resp.getWriter().write(s);
     }
 }
}

展示效果

image-20240603153254986

image-20240603153337478

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

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

相关文章

大学生技能科普 | office 办公软件技能掌握 暑期电脑办公软件培训

为什么要学office&#xff1f; 提高工作效率&#xff1a;通过学习和掌握Office办公软件&#xff0c;可以更加高效地完成文档编辑、数据处理、图表制作等任务。 增强个人竞争力&#xff1a;在当今职场竞争中&#xff0c;熟练掌握Office办公软件已经成为一项基本的技能要求。掌…

FreeRTOS源码分析

目录 1、FreeRTOS目录结构 2、核心文件 3、移植时涉及的文件 4、头文件相关 4.1 头文件目录 4.2 头文件 5、内存管理 6、入口函数 7、数据类型和编程规范 7.1 数据类型 7.2 变量名 7.3 函数名 7.4 宏的名 1、FreeRTOS目录结构 使用 STM32CubeMX 创建的 FreeRTOS 工…

《STM32 HAL库》小米微电机控制例程——通信协议分析及驱动库

之前有段时间因为机器狗项目的缘故&#xff0c;一直在使用小米微电机&#xff0c;但是苦于没有一个详尽的奶妈级教程&#xff0c;在控制电机的学习中踩了不少的坑。今天咱们就从头至尾一步一步的实现使用按键控制小米微电机。本文将会分析小米电机驱动库&#xff0c;并简要介绍…

Web3新视野:Lumoz节点的潜力与收益解读

摘要&#xff1a;低估值、高回报、无条件退款80%...... Lumoz正通过其 zkVerifier 节点销售活动&#xff0c;引领一场ZK计算革命。 长期以来&#xff0c;加密市场以其独特的波动性和增长潜力&#xff0c;持续吸引着全球投资者的目光。而历史数据表明&#xff0c;市场往往在一年…

RAG 流程及论文串烧

文档切片 文档切片的五个层次 https://medium.com/anuragmishra_27746/five-levels-of-chunking-strategies-in-rag-notes-from-gregs-video-7b735895694d#b123 Basic RAG 与 Advanced RAG https://pub.towardsai.net/advanced-rag-techniques-an-illustrated-overview-04d…

pytorch库 02 Anaconda、Jupyter常用命令及操作

文章目录 一、Anaconda Prompt1、conda常用命令2、pip常用命令 二、Jupyter1、Jupyter常用命令及基本操作2、Jupyter代码补全插件安装 一、Anaconda Prompt 1、conda常用命令 下列命令可以在Anaconda Prompt中输入。 清屏&#xff1a; cls 查看帮助&#xff1a; conda -h 查…

Hadoop升级失败,File system image contains an old layout version -64

原始版本 Hadoop 3.1.3 升级版本 Hadoop 3.3.3 报错内容如下 datasophon 部署Hadoop版本 查看Hadoop格式化版本 which hadoop-daemon.sh/bigdata/app/hadoop-3.1.3/sbin/hadoop-daemon.sh删除原来的旧版本 rm -rf /bigdata/app/hadoop-3.1.3查看环境变量 env|grep HADOOPHAD…

SSRF(2)

Gopher协议的利用 gopher协议是ssrf利用中最强大的协议 gopher协议支持发出GET、POST请求&#xff1a; 可以先截获get请求包和post请求包&#xff0c;再构成符合gopher协议的请求。 默认端口为70,一般需发送到80端口 如果发起post请求&#xff0c;回车换行需要使用%0D%0A&…

Java面试八股之myBatis与myBatis plus的对比

myBatis与myBatis plus的对比 基础与增强&#xff1a; MyBatis 是一个成熟的Java持久层框架&#xff0c;它允许开发者通过XML文件或注解来配置SQL语句和数据库映射&#xff0c;提供了一个灵活的方式来操作数据库&#xff0c;但需要手动编写所有的SQL语句和结果集映射。 MyBa…

AI系统进入临床实践的几点考量——DECIDE-AI读后感

AI系统进入临床实践的几点考量——DECIDE-AI读后感 DECIDE-AI是一个新的阶段性报告指南&#xff0c;用于早期的临床评估基于人工智能&#xff08;AI&#xff09;的决策支持系统。它由欧洲影像学和医学人工智能实验室&#xff08;IDEAL&#xff09;合作开发&#xff0c;旨在解决…

60.指针数组和数组指针

一.指针数组 指针数组是一个数组&#xff0c;在指针数组中存放的是指针变量。 定义一个指针数组p int *p[5]; 内存模型如下&#xff1a; 指针数组的初始化 #include <stdio.h>int main(void) {int a1;int b2;int c3;int i;int *p[3] {&a,&b,&c};for(i0…

hdfs源码解析之DFSClient

1、DFSClient类简介 DFSClient 是 Hadoop 分布式文件系统&#xff08;HDFS&#xff09;中的一个核心类&#xff0c;用于客户端与 HDFS 之间的交互。它提供了一组方法&#xff0c;使客户端应用程序可以方便地与 HDFS 进行通信&#xff0c;包括文件的读取、写入、创建、删除、重命…

Nidhogg:一款专为红队设计的多功能Rootkit

关于Nidhogg Nidhogg是一款专为红队设计的多功能Rootkit&#xff0c;该工具的主要目的是为红队研究人员提供一个多合一的切易于使用的多功能Rootkit&#xff0c;并允许研究人员通过单个头文件来将其引入到自己的C2框架之中。 当前版本的Nidhogg支持任意版本的x64 Windows 10和…

git的Cherry pick

Cherry pick Git Cherry Pick详解 https://blog.csdn.net/jam_yin/article/details/131594716 目标: 将开发分支A中提交的部分内容合并到B分支(可能是测试分支) 步骤: vscode安装 点击下图标进入graph

【golang学习之旅】使用VScode安装配置Go开发环境

1. 下载并安装Go1.1 下载地址1.2 选择版本并下载1.3 安装目录1.4 验证是否安装成功 2. 配置环境变量2.1 配置步骤2.2 GO部分环境变量说明 3. 下载或更新 Vscode3.1 下载地址3.2 安装步骤 4. 为Go开发配置VScode 1. 下载并安装Go 1.1 下载地址 https://studygolang.com/dl 1.…

压缩pdf文件大小,如何压缩pdf

压缩PDF文件是现代办公中常见的需求&#xff0c;因为PDF文件往往包含了大量的图片、文本和格式信息&#xff0c;导致文件体积较大&#xff0c;不利于传输和存储。本文将详细介绍如何压缩PDF文件&#xff0c;我们一起来看一下。 浏览器打开 "轻云处理pdf官网" &#x…

计网重点面试题-TCP三次握手四次挥手

三次握手 第一次握手(syn1) 客户端会随机初始化序号&#xff08;client_isn&#xff09;&#xff0c;将此序号置于 TCP 首部的「序列号」字段中&#xff0c;同时把 SYN 标志位置为 1&#xff0c;表示 SYN 报文。接着把第一个 SYN 报文发送给服务端&#xff0c;表示向服务端发…

微波传感器,人体接近传感器,ATM微波传感器人体存在传感器

史新华 微波传感器&#xff0c;人体接近传感器&#xff0c;ATM微波传感器人体存在传感器 微波传感器&#xff0c;人体接近传感器&#xff0c;ATM微波传感器YTMW8630 1 产品简介 该YTMW8630是根据微波多普勒效应原理&#xff08;也就是雷达基本原理&#xff09;制作成的&…

Graphviz——实现动态更新协议状态机

1、描述 为了实现动态更新协议状态机&#xff0c;首先需要定义类来表示协议状态机。初始化该类后&#xff0c;保存状态机对象。在后续更新过程中&#xff0c;就可以加载保存的状态机对象&#xff0c;添加新的状态或事件。Graphviz的安装过程参考&#xff1a;Graphviz——安装、…

【AI-6】算力和带宽

上述为大模型训练的显卡选项 tensor fp16 算力是什么&#xff1f; Tensor FP16(Float16)算力是指GPU在执行深度学习的张量计算时,使用float16(半精度浮点)数据类型所能达到的性能指标。 为什么要使用Tensor FP16? 提升计算效率: float16数据类型的存储和计算开销比float32…