JSON & Ajax
Ajax 和 Json
json
JavaScript 对象表示法(JavaScript Object Notation)
要求和语法格式
- 对象表示为键值对
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
Json 与 js对象的关系
-
Json 是 js 对象的字符串表示法,使用文本表示一个js对象的信息,本质上就是一个字符串
-
Json 与 js对象互转
-
Json to js, 使用JSON.parse()
let obj = JSON.parse(‘{"a":"Hello", "b":"World"}‘);
-
js to json, 使用JSON.stringify()
let json = JSON.stringify({a:"Hello", b:"World"});
-
-
Servlet内返回json
- 简单的一个对象
@WebServlet("/json1") public class Demo1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * ObjectMapping 是 jackson 操作的核心,所有JSON操作都在ObjectMapping中实现 * ObjectMapping 有多个序列化的方法,可以把JSON字符串保存在File、outputStream中 * writeValue(File arg0, Object arg1)可以把arg1转换为json序列保存到arg0文件中 * writeValue(OutputStream arg0, Object arg1)可以把arg1转换为json序列,并输出到arg0输出流中 * writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组 * writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串 */ ObjectMapper objectMapper = new ObjectMapper(); User user = new User("小明", 10, "男"); String str = objectMapper.writeValueAsString(user); System.out.println(str); // 页面输出乱码 resp.setContentType("text/html;charset=utf-8"); resp.getWriter().print(str); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
- 时间类型数据
@WebServlet("/json3") public class Demo3 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 这里实现日期转换工具类封装工作 resp.getWriter().print(TimeUtils.getTimeStr()); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
- 封装的工具类
/** * @author Rainful * @create 2021/07/28 */ public class TimeUtils { /** * 获取当前时间的默认格式 yyyy-MM-dd HH:mm:ss * @return 一个时间字符串类型 */ public static String getTimeStr(){ return getTimeStr(new Date(), "yyyy-MM-dd HH:mm:ss"); } /** * 获取一个指定时间的默认格式 yyyy-MM-dd HH:mm:ss * @param date 一个指定的时间 * @return 一个时间字符串类型 */ public static String getTimeStr(Date date){ return getTimeStr(date, "yyyy-MM-dd HH:mm:ss"); } /** * 获取当前时间并按照格式指定的格式格式化 * @return 一个时间字符串类型 */ public static String getTimeStr(String dateFormat) { return getTimeStr(new Date(), dateFormat); } /** * 获取指定时间并按照格式指定的格式格式化 * @param date 一个指定的时间 * @param dateFormat 指定的时间格式 * @return 一个时间字符串类型 */ public static String getTimeStr(Date date, String dateFormat){ // 日期转化需要关闭 ObjectMapping时间戳功能 ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); // 自定义时间格式 SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); objectMapper.setDateFormat(simpleDateFormat); // 获得时间并返回 Calendar cal = Calendar.getInstance(); try { return objectMapper.writeValueAsString(cal); } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } }
Ajax
Ajax 是一种在无需重新加载整个网页的前提下,局部刷新网页的一种技术
ajax
请输入要访问的地址
网页加载
- 上面是一个虚假的 Ajax 形式
- Ajax的核心就是XMLHttpRequest对象(XHR)
- 这是使用jquery来实现
ajax
@WebServlet("/ajax3")
public class AjaxServlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
Map parameterMap = req.getParameterMap();
String msg = "";
// 验证用户名及密码
if (!parameterMap.isEmpty()) {
String[] name = parameterMap.get("name");
if (name != null) {
if ("admin".equals(name[0])) {
System.out.println("用户名验证成功");
msg = "ok";
} else {
System.out.println("用户名验证失败");
msg = "用户名输入有误";
}
}
String[] pwd = parameterMap.get("pwd");
if (pwd != null) {
if ("123456".equals(pwd[0])) {
System.out.println("密码验证成功");
msg = "ok";
} else {
System.out.println("密码验证失败");
msg = "密码输入有误";
}
}
}
resp.getWriter().print(msg);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
原文:https://www.cnblogs.com/rainful/p/15073126.html