二、语法JSON(JavaScript Object Notation, JS 对象标记) 是⼀种轻量级的数据交换格式。它基于ECMAScript的⼀个⼦集,采⽤完全独⽴于编程语⾔的⽂本格式来存储和表示数据。简洁和清晰的层次结构使得JSON 成为理想的数据交换语⾔。易于⼈阅读和编写,同时也易于机器解析和⽣成,并有效地提升⽹络传输效率。
三、书写规范JSON对象的语法有三种:对象、数组、混合模式
四、工具介绍1、使⽤{}和[]书写,{}表示对象类型,[]表示数组类型
2、.对象类型中每组数据之间⽤逗号隔开,每组中的关键字与值之间⽤冒号隔开
3、数组类型中每个值之间⽤逗号隔开,最后⼀个值后⾯不要加逗号
1、JSON在线解析⼯具:http://www.bejson.com/
作⽤:
1.校验JSON数据的语法是否正确
2.将不规范的JSON格式数据进⾏格式化
五、应用2、常⻅的json转换⼯具
json的转换⼯具是通过java封装好的⼀些jar⼯具包,直接将java对象或集合转换成json格式的字符串。
Jackson使用:
导⼊json相关jar包
创建java对象或集合
使⽤jackson的ObjectMapper对象的writeValueAsString⽅法进⾏转换
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ujiuye.pojo.User;
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.HashMap;
import java.util.List;
import java.util.Map;
@WebServlet("/jackson")
public class jackson extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//创建User对象
User user = new User();
user.setUid(1001);
user.setUsername("柳岩");
user.setPassword("123");
//创建List集合
List<String> list = new ArrayList<>();
list.add("Java研发⼯程师");
list.add("web前端⼯程师");
list.add("UI设计师");
//创建Map集合
Map<String, User> map = new HashMap<>();
map.put("user", user);
//转换json
ObjectMapper mapper = new ObjectMapper();
String userJson = mapper.writeValueAsString(user);
String listJson = mapper.writeValueAsString(list);
String mapJson = mapper.writeValueAsString(map);
System.out.println(userJson);
System.out.println(listJson);
System.out.println(mapJson);
}}
六、案例
案例需求: 搜索框⾃动补全
在输⼊框输⼊关键字,下拉框中异步显示与该关键字相关的数据
jsp代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
$Title$
Servlet代码
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ujiuye.pojo.Student;
import com.ujiuye.service.SearchService;
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.List;
@WebServlet("/searchWord")
public class SearchWordServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//获取word值
String word = request.getParameter("word");
//业务处理
SearchService ss = new SearchService();
List<Student> sList = ss.searchWord(word);
//判断
if(sList != null && sList.size() > 0){
//将集合转换成json
ObjectMapper mapper = new ObjectMapper();
String strJson = mapper.writeValueAsString(sList);
System.out.println(strJson);
//响应⻚⾯
response.getWriter().write(strJson);
}}}
Service层
package com.ujiuye.service;
import com.ujiuye.dao.SearchDao;
import com.ujiuye.pojo.Student;
import java.util.List;
public class SearchService {
public List<Student> searchWord(String word) {
SearchDao sd = new SearchDao();
return sd.searchWord(word);
}}
Dao层
import com.ujiuye.pojo.Student;
import com.ujiuye.utils.C3P0Utils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.sql.SQLException;
import java.util.List;
public class SearchDao {
public List<Student> searchWord(String word) {
try {
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
String sql = "select * from student where sname like ?";
List<Student> sList = qr.query(sql, new BeanListHandler<Student>(Student.class),
"%"+word+"%");
return sList;
} catch (SQLException e) {
e.printStackTrace();
}
return null; }
}
效果
XML
一、简介
二、语法XML 指可扩展标记语⾔(EXtensible Markup Language),是⼀种标记语⾔,很类似 HTML,设计宗旨是传输数据,⽽⾮显示数据。标签没有被预定义。您需要⾃⾏定义标签。
三、约束1、⽂档声明:
2、⾃定义标签:
<根标签>
<⼦标签 属性=“值”>内容⼦标签>
<⼦标签 属性=“值”>内容⼦标签>
…
根标签>
DTD(⽂档类型定义)的作⽤是定义 XML ⽂档的合法构建模块。
DOCTYPE note [
<!ELEMENT note (to+,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>xxto>
<to>to>
<from>Johnfrom>
<heading>Reminderheading>
<body>Don't forget the meeting!body>
note>
XML Schema 是基于 XML 的 DTD 替代者,XML Schema 描述 XML ⽂档的结构。
student.xsd⽂件:
<xsd:schema xmlns="http://www.ujiuye.com"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ujiuye.com" elementFormDefault="qualified">
<xsd:element name="students" type="studentsType"/>
<xsd:complexType name="studentsType">
<xsd:sequence>
<xsd:element name="student" type="studentType" minOccurs="0"
maxOccurs="unbounded"/>
xsd:sequence>
xsd:complexType>
<xsd:complexType name="studentType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageType" />
<xsd:element name="sex" type="sexType" />
xsd:sequence>
<xsd:attribute name="number" type="numberType" use="required"/>
xsd:complexType>
<xsd:simpleType name="sexType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="male"/>
<xsd:enumeration value="female"/>
xsd:restriction>
xsd:simpleType>
<xsd:simpleType name="ageType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="256"/>
xsd:restriction>
xsd:simpleType>
<xsd:simpleType name="numberType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{4}"/>
xsd:restriction>
xsd:simpleType>
xsd:schema>
student.xml:
<students
xmlns="http://www.ujiuye.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ujiuye.com student.xsd"
>
<student number="1111">
<name>tomname>
<age>111age>
<sex>malesex>
student>
students>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)