servlet代码:
package com.zx.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.zx.entity.Clas;
import com.zx.entity.Student;
import com.zx.entity.Teacher;
public class LoginServlet extends HttpServlet {
/**
* gson.toJson()
* gson.fromJson()
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("LoginServlet---doGet");
Gson gson = new Gson();
//1、java对象转json字符串
Teacher[] teas = new Teacher[] {new Teacher(11, "张老师"), new Teacher(12, "李老师")};
Clas clas = new Clas(101, "一年一班");
Clas clas1 = new Clas(102, "一年二班");
Student stu = new Student(10, "张三", clas, teas);
String json_str1 = gson.toJson(stu);
System.out.println("json字符串1:"+json_str1);
//1.1、json字符串转java对象
// gson.fromJson(json_str1, new MyTypeToken().getType());
//protected,匿名内部类
Student stu1 = gson.fromJson(json_str1, new TypeToken<Student>() {}.getType());
System.out.println("stu1:"+stu1);
//2、java对象list集合和json的转换
List<Clas> list = new ArrayList<>();
list.add(clas);
list.add(clas1);
String json_str2 = gson.toJson(list);
System.out.println("json字符串2:"+json_str2);
//2.1、json字符串转集合
List<Clas> list1 = gson.fromJson(json_str2, new TypeToken<List<Clas>>() {}.getType());
System.out.println("list1:"+list1.get(1).toString());
//3、map 对象和json 的转换
Map<String,Clas> map = new HashMap<>();
map.put("one", clas);
map.put("two", clas1);
String json_str3 = gson.toJson(map);
System.out.println("json字符串3:"+json_str3);
//3.1、json字符串转map
Map<String, Clas> map1 = gson.fromJson(json_str3, new TypeToken<Map<String, Clas>>(){}.getType());
System.out.println("map1:"+map1.get("two"));
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
//class MyTypeToken extends TypeToken{
// public MyTypeToken() {
// super();
// }
//}
实体类代码:
package com.zx.entity;
public class Clas {
private int classNo;
private String className;
public Clas() {
super();
}
public Clas(int classNo, String className) {
super();
this.classNo = classNo;
this.className = className;
}
public int getClassNo() {
return classNo;
}
public void setClassNo(int classNo) {
this.classNo = classNo;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
@Override
public String toString() {
return "Clas [classNo=" + classNo + ", className=" + className + "]";
}
}
package com.zx.entity;
import java.util.Arrays;
public class Student{
private int id;
private String userName;
private Clas clas; //所在班级
private Teacher[] teas; //老师们
public Student() {
super();
}
public Student(int id, String userName, Clas clas, Teacher[] teas) {
super();
this.id = id;
this.userName = userName;
this.clas = clas;
this.teas = teas;
}
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 Clas getClas() {
return clas;
}
public void setClas(Clas clas) {
this.clas = clas;
}
public Teacher[] getTeas() {
return teas;
}
public void setTeas(Teacher[] teas) {
this.teas = teas;
}
@Override
public String toString() {
return "Student [id=" + id + ", userName=" + userName + ", clas=" + clas + ", teas=" + Arrays.toString(teas)
+ "]";
}
}
package com.zx.entity;
public class Teacher {
private int id;
private String name;
public Teacher() {
super();
}
public Teacher(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + "]";
}
}
前端页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
<script type="text/javascript">
var stu = {
"username" : "zhangsan",
"age" : 18,
"clas" : {
"classno" : 101,
"classname" : "一年一班"
},
"teacher" : [
{
"tno" : "t01",
"tname" : "张老师"
},{
"tno" : "t02",
"tname" : "李老师"
}
]
}
console.log("学生姓名:"+stu.username);
console.log("学生所在班级:"+stu.clas.classname);
console.log("老师姓名:"+stu.teacher[1].tname);
console.log("json对象:"+stu);
/* JSON.stringify():将json对象转化为json字符串 */
var str = JSON.stringify(stu);
console.log("json字符串:"+str);
/* JSON.parse():将json字符串转化为json对象 */
stu = JSON.parse(str);
console.log("json对象:"+stu);
var a = new Object();
console.log("对象:"+a);
</script>
</head>
<body>
</body>
</html>
web.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>javaweb13</display-name>
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.zx.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
需要jar包:
gson-2.2.4.jar
访问路径:
localhost:8080/javaweb13/login
其他
自己建立了一个技术群,大家愿意主动学习和分享,愿意一块实现一些有意思的技术,进行理论和实践的交流。这里面有前端和后段,不是单一的一种,方便大家沟通前后端兼容问题