JavaWeb核心——ajax技术知识详解及示例分析(二)

Ajax技术知识详解及示例分析(二)


版权声明

  • 本文原创作者:清风不渡
  • 博客地址:https://blog.csdn.net/WXKKang

一、JSON

  上一篇我们将过了通过ajax技术来实现页面局部刷新技术,即ajax对象向servlet容器发送请求并获取响应之后将内容显示在网页上,最后我们遇到了一个问题,Java是一种面向对象编程语言,绝大多数可能会给ajax响应的是一个Java对象,而不是简单的字符串,但是当ajax对象带着servlet响应的Java对象“开开心心”的回到jsp中时,就出现了一个十分尴尬的问题——ajax写在javascript中,而javascript“不认识”java对象,它只能处理普通的字符串和JS对象等,那怎么办呢?就需要使用工具,将java对象转化成Json字符串,这样javascript就可以识别后再做处理了,那么它怎么用呢?有很多方式我现在知道两种方式,介绍给大家吧:

假设现在我们需要将一条用户信息响应并显示:

1、方式一

  使用 gson-2.7 jar包实现,步骤如下:

User类代码:

public class User {
	private String username;
	private String password;
	private String gender;
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(String username, String password, String gender) {
		super();
		this.username = username;
		this.password = password;
		this.gender = gender;
	}
	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 getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
}
  • 第一步:导入gson jar包
    在这里插入图片描述
  • 第二步,在servlet代码中创建对象,代码如下
package com.etime.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

import com.google.gson.Gson;
@WebServlet("/ajax")
public class Servlet extends HttpServlet{

	private static final long serialVersionUID = -4143249464552690886L;
	
	@Override
	public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
		//设置请求编码格式
		req.setCharacterEncoding("UTF-8");
		//设置响应编码格式
		resp.setCharacterEncoding("UTF-8");
		resp.setContentType("application/json;charset=UTF-8");
		//获取请求信息
		//处理请求信息
		User user = new User("xxp", "123456", "man");
		//响应处理结果
		resp.getWriter().write(new Gson().toJson(user));
		
	}
}
  • 第三步,在jsp中接收并转换,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index</title>
<style type="text/css">
	#showdiv{
		border:1px solid #000;
		width: 400px;
		height: 100px;
	}
</style>
<script type="text/javascript">
	function showMessage() {
		//创建ajax引擎对象
		var ajax;
		if(window.XMLHttpRequest){
			ajax = new XMLHttpRequest;
		}else if(window.ActiveXObject){
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
		}
		//重写onreadystatechange方法
		ajax.onreadystatechange = function(){
			//判断ajax状态码
			if(ajax.readyState==4){
				//判断响应状态码
				if(ajax.status==200){
					var result = ajax.responseText;
					result = JSON.parse(result);
					var showdiv = document.getElementById("showdiv");
					showdiv.innerHTML = "账号:"+result.username+",密码:"+result.password+",性别:"+result.gender;
				}else if(ajax.status==404){
					var showdiv = document.getElementById("showdiv");
					showdiv.innerHTML = "请求资源不存在";
				}else if(ajax.status==500){
					var showdiv = document.getElementById("showdiv");
					showdiv.innerHTML = "服务器繁忙";
				}
			}
		}
		//发送请求
		ajax.open("GET","ajax",true);
		ajax.send(null);
	}
</script>
</head>
<body>
	<h1>欢迎来到清风不渡的博客</h1>
	<hr>
	<input type="button" value="测试" onclick="showMessage()">
	<br />
	<br />
	<div id="showdiv">
	</div>
</body>
</html>

运行结果(点击测试按钮后):
在这里插入图片描述

2、方式二

  使用 jackson jar包实现,步骤如下:

第一步:导入jar包
在这里插入图片描述
在serlvet类中使用jar包内的方法将Java对象转换为Json字符串

package com.etime.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
@WebServlet("/ajax")
public class Servlet extends HttpServlet{

	private static final long serialVersionUID = -4143249464552690886L;
	
	@Override
	public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
		//设置请求编码格式
		req.setCharacterEncoding("UTF-8");
		//设置响应编码格式
		resp.setCharacterEncoding("UTF-8");
		resp.setContentType("application/json;charset=UTF-8");
		//获取请求信息
		//处理请求信息
		User user = new User("xxp", "123456", "男");
		//响应处理结果
		//创建ObjectMapper对象将java对象转换为json字符串并返回
		ObjectMapper mapper = new ObjectMapper();
		String userString = mapper.writeValueAsString(user);
		resp.getWriter().write(userString);
		
	}
}

  这两种方式的处理结果都是一样的,都是将Servlet中的Java对象转换为Json字符串返回给浏览器,这样,页面里的js代码就可以顺利的执行并取出里面的数据来显示在页面上的某一处了。

  那么,解决了这个问题之后,想想还有什么问题需要我们解决呢?对喽,我们Java可以将数据封装成一个对象来提高代码的复用性,那么照现在这样的方法,我们每次使用Ajax技术都需要写这么多代码,我们可不可以将重复的代码封装起来呢?答案肯定是可以的,并且封装技术前辈们已经替我们封装好了哟,我们只需要直接调用就可以了,那就是用JQuery的方式实现Ajax技术,我们下篇来进行解说,感兴趣的童鞋可以查阅文档预习一下哦 ~ ~

  好啦,今天的学习就到这里吧!记录学习,记录生活,我还是那个java界的小学生,一起努力吧!!
  欢迎各位看官评论探讨哟 ~ ~ 小生在此谢过了 ~ ~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片微型计算机(MCU)经过多年的发展,在性能上有很大的进步,在型号上发展到上千种类,已经广泛应用于人类社会生活的各个领域。单片机课程已经成为高校计算机、自动化、测控以及电子信息工程等专业的重要课程。该课程是一门理论性和实践性都很强的课程,在实际教学中,应将理论教学和实验教学紧密结合。学生在掌握理论知识之余,必须通过编写程序、设计硬件电路、仿真、调试这一系列的实验过程,才能更好地掌握单片机的结构原理和应用技能。随着单片机及其接口技术的飞速发展,目前市场上供应的编程仿真实验资源并不能完全满足高校单片机课程教与学的需求,构建低成本、技术先进、源码公开的单片机编程仿真实验系统,对我国单片机课程的教学和单片机领域人才的培养具有重要的现实意义。 本论文结合目前教学中对单片机编程仿真实验系统的实际需求,采用模块化结构设计思想,精心设计和开发了单片机编程仿真实验系统。该单片机编程仿真实验系统由PC机端单片机编程控制软件和单片机编程仿真实验板两部分组成。PC机端的单片机编程控制软件可以自动检测到连接到单片机编程仿真实验板上的单片机,控制单片机编程器擦除、写入、读出、校验目标单片机ROM中的程序,以十六进制文件(.HEX文件)格式显示在控制界面内;单片机仿真实验系统能够把写入单片机的程序实时地运行,并呈现实际运行效果。单片机编程控制软件和单片机仿真实验板组成一个完整的单片机编程仿真实验系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值