servlet+ajax+jquery进行数据交互(前后端利用json(jackson)+ajax交互

博客主要介绍了Java对象与JSON的相互转换。包括导入JSON的jar包,创建Java对象、核心对象objectMapper并调用相关方法实现Java对象转JSON,还展示了复杂对象转换代码及结果;同时介绍了JSON转Java对象,最后通过小demo前端界面展示前后端交互,为后续做ssm项目奠定基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

json

json解析器:

			现在用的比较多的是jsonlib,gson,fastjson(阿里巴巴),jackson是springMVC内置的解析器,
			今天使用的是jackson的包

1、java对象转换成json

1、导入json的jar包
在这里插入图片描述
这是用maven管理的包

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.8</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.8</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.9.8</version>
    </dependency>

2、创建一个java对象

3、创建一个核心的对象objectMapper

	objectMapper mapper = new ObjectMapper();

4、调用object的相关方法

void writeValue(参数1,obj);

参数1:
  	file:将obj文件对象转换成JSON字符串,并保存到指定文件中

 	outputStream:将obj对象转换成JSON对象,并填充到字节输出流中
 
	writer:将obj对象转换成json字符串,并将json数据转换成字符输出流

[String] writeValueAsString(obj)

	将obj对象转换成json字符串

5、代码及结果展示

package com.hqh;


import com.fasterxml.jackson.databind.ObjectMapper;
import domain.Person;
import org.junit.Test;

import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestUn {
      @Test
      public void fun() throws Exception {
        //1、创建一个person对象
        Person p = new Person();
        p.setPassword("loveCom");
        p.setUsername("二狗子");
        p.setSex("女");
        //2、创建一个json核心对象
        ObjectMapper mapper = new ObjectMapper();
        //3、进行转换(java对象转换成json数据)
        /*
            转换的常用方法
                1、writeValue(参数1,obj)
                参数1:
                    file:将obj文件对象转换成JSON字符串,并保存到指定文件中
                    outputStream:将obj对象转换成JSON对象,并填充到字节输出流中
                    writer:将obj对象转换成json字符串,并将json数据转换成字符输出流
                ;
                2、writeValueAsString(obj)   将obj对象转换成json字符串
         */
//            String s = mapper.writeValueAsString(p);
//        System.out.println(s);
        mapper.writeValue(new File("E://Desktop/hhh/hhh.txt"),p);
        mapper.writeValue(new FileWriter("E://Desktop/hhh/h2.txt"),p);
    }
   

}

6、list和map复杂对象转换成json字符串
单点测试代码如下:
peson对象如下:

在这里插入代码片

package domain;

public class Person {
private String username;
private String password;
private String sex;

@Override
public String toString() {
    return "Person{" +
            "username='" + username + '\'' +
            ", password='" + password + '\'' +
            ", sex='" + sex + '\'' +
            '}';
}

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;
}

public String getSex() {
    return sex;
}

public void setSex(String sex) {
    this.sex = sex;
}

}

 @Test
    public void f(){
        //创建一个map对象
        Map<String,String> map = new HashMap<String, String>();
        map.put("name","hqh");
        map.put("password","root");
        map.put("sex","男");
//创建一个;list对象
        List<Person> list = new ArrayList<Person>();
        Person person = new Person();
        person.setSex("男");
        person.setUsername("狗子");
        person.setPassword("root");
        Person p1 = new Person();
        p1.setSex("男");
        p1.setUsername("狗子");
        p1.setPassword("root");
        list.add(p1);
        list.add(person);

//创建一个核心对象
        ObjectMapper mapper = new ObjectMapper();
//调用其中的方法
        String ma = mapper.writeValueAsString(map);
        String li = mapper.writeValueAsString(list);
        System.out.println(ma);
        System.out.println(li);
    }

结果如下
在这里插入图片描述

2、json转换成java对象

 @Test
    public void mun() throws Exception{
        String json ="{\"username\":\"狗子\",\"password\":\"root\",\"sex\":\"男\"}"; //定义一个json格式的字符串.

        ObjectMapper jsonObject = new ObjectMapper();

        Person c =jsonObject.readValue(json,Person.class);
        System.out.println(c);

    }

下面开始进行小demo的前端界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>
</head>
<body>
<form action="#" method="post">
    <input type="text"  id = "user_name" name="username" placeholder="请输入用户名"><br>
    <input type="password" name="password" placeholder="请输入密码">
    <input type="submit"  value="提交">
</form>
<script>
    window.onload = function () {
        $("#user_name").blur (function () {
            $.ajax({
                url:'testUserName',
                type:'post',
                dataType:'json',
                data:
                    {
                        username:$("#user_name").val()
                    },
                success:function (data) {
                	
                    alert("hello world");
                    alert(data);
                }


            },"json")
        })


    }
</script>

</body>
</html>

界面如下显示:
有点丑,不要嫌弃
后台代码如下:

@WebServlet("/testUserName")
public class TestUser extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
				System.out.println("你好呀,我热烈欢迎你从ajax进入java");
				String s = request.getParameter("username");
				//创建一个jackson的对象
				ObjectMapper objectMapper = new ObjectMapper();
				if(s.equals("huang")) {
					objectMapper.writeValue(response.getWriter(), "恭喜你对了"+s);
				}else {
					objectMapper.writeValue(response.getWriter(), "不好意识"+s);
					
				}
	}

}

最后的效果图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

经过这个这个样例之后,我大概了解了前后端是如何交互的,也离前后端分离又迈进了一大步,起码接下来可以好好的做ssm的项目了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值