1 ajax概念
Asynchronous Javascript And XML(异步JavaScript和XML)
DHTML是动态的html: html+css+js+dom
ajax:dhtml+XMLHttpRequest对象
局部刷新:对jsp和servlet进行请求时 响应的都是一个完整的页面:::
只想让服务器响应一个数据 获取数据放到当前页面的某个标签/前段进行处理-----不要刷新整个页面 只是刷新一部分数据
同步请求:http协议是同步请求---客户端发送一个请求时 只有等待服务器端响应了 才能继续发第二个请求
异步请求:不需要等待上一个请求的响应 即可发送第二个请求
百度的搜索框:局部刷新
提示账号存在:局部刷新
注册时发送右键:异步请求
...
2 原始的ajax
2.1 ajax请求的四步走
1:获取XMLHttpRequest对象
2:开启连接
3:发送请求
4:监听statechange事件 获取数据
2.2 准备servlet
package com.zhiyou100_10.ajax;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo01SAjax extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String name=req.getParameter("name");
int age=Integer.parseInt(req.getParameter("age"));
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print("get请求::你叫"+name+",今年"+age+"岁了!");
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String name=req.getParameter("name");
int age=Integer.parseInt(req.getParameter("age"));
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print("post请求::你叫"+name+",今年"+age+"岁了!");
}
}
2.3 原始的ajax的get请求
<input type="button" value="测试ajax的get请求" onclick="testGet1()"/><br/>
<div id="div_show_get"></div>
<script type="text/javascript">
function testGet1(){
var xmlHttpRequest=getXMLHttpRequest();
var age=parseInt(Math.random()*30+10);
xmlHttpRequest.open("get","<c:url value='/ajax/s1.do?name=韩梅梅&age='/>"+age,true);
xmlHttpRequest.send(null);
xmlHttpRequest.onreadystatechange=function(){
if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
var text=xmlHttpRequest.responseText;
$("#div_show_get").html(text.fontcolor("red").bold());
}
}
}
function getXMLHttpRequest(){
var xmlHttpRequest;
try{
xmlHttpRequest=new XMLHttpRequest();
}catch(e){
try{
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
xmlHttpRequest=new ActiveXObject("Msxml2.XMLHTTP");
}
}
return xmlHttpRequest;
}
</script>
2.4 原始的ajax的post请求
<input type="button" value="测试ajax的post请求" onclick="testPost1()"/><br/>
<div id="div_show_post"></div>
<script type="text/javascript">
function testPost1(){
var xmlHttpRequest=getXMLHttpRequest();
xmlHttpRequest.open("post","<c:url value='/ajax/s1.do'/>",true);
xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
var age=parseInt(Math.random()*30+10);
xmlHttpRequest.send("name=韩梅梅&age="+age);
xmlHttpRequest.onreadystatechange=function(){
if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
var text=xmlHttpRequest.responseText;
$("#div_show_post").html(text.fontcolor("red").bold());
}
}
}
</script>
3 对原生态的ajax进行封装
3.1 js文件
function myAjax(type,url,asyn,data,fn){
var xmlHttpRequest=getXMLHttpRequest();
xmlHttpRequest.open(type,url,asyn);
if(type=="post"||type=="POST"){
xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
}
xmlHttpRequest.send(data);
xmlHttpRequest.onreadystatechange=function(){
if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
fn(xmlHttpRequest.responseText);
}
}
}
function getXMLHttpRequest(){
var xmlHttpRequest;
try{
xmlHttpRequest=new XMLHttpRequest();
}catch(e){
try{
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
xmlHttpRequest=new ActiveXObject("Msxml2.XMLHTTP");
}
}
return xmlHttpRequest;
}
3.2 自定义ajax文件的使用
<h1>使用自己封装的ajax方法实现ajax请求</h1>
<script type="text/javascript" src="ajax.js"></script>
<input type="button" value="测试ajax的get请求" onclick="testGet2()"/><br/>
<div id="div_show_get_2"></div>
<script type="text/javascript">
function testGet2(){
var age=parseInt(Math.random()*30+10);
myAjax("get","<c:url value='/ajax/s1.do?name=韩梅梅&age='/>"+age,true,null,function(respData){
$("#div_show_get_2").html(respData.fontcolor("red").bold());
});
}
</script>
<hr/>
<input type="button" value="测试ajax的post请求" onclick="testPost2()"/><br/>
<div id="div_show_post_2"></div>
<script type="text/javascript">
function testPost2(){
var age=parseInt(Math.random()*30+10);
myAjax("post","<c:url value='/ajax/s1.do'/>",true,"name=韩梅梅&age="+age,function(respData){
$("#div_show_post_2").html(respData.fontcolor("red").bold());
});
}
</script>
4 使用ajax实现省市联动
4.1 创建表
CREATE TABLE library(
id INT PRIMARY KEY AUTO_INCREMENT,
TYPE VARCHAR(10) COMMENT '类型:city\province',
NAME VARCHAR(100) COMMENT '类型:名字',
fid INT COMMENT '类型:如果是city fid对应的就是其所在的省份',
remark VARCHAR(200) COMMENT '备注',
CONSTRAINT fk_1l2l2 FOREIGN KEY(fid) REFERENCES library(id)
);
INSERT INTO library VALUES(1,"province","河南",NULL,NULL),(1001,"city","郑州",1,NULL)
,(NULL,"city","汝州",1,NULL)
,(NULL,"city","洛阳",1,NULL)
,(NULL,"city","南阳",1,NULL)
,(NULL,"city","信阳",1,NULL)
,(NULL,"city","安阳",1,NULL);
INSERT INTO library VALUES(2,"province","河北",NULL,NULL),(2001,"city","石家庄",2,NULL)
,(NULL,"city","衡水",2,NULL)
,(NULL,"city","廊坊",2,NULL)
,(NULL,"city","白洋淀",2,NULL)
,(NULL,"city","梁山",2,NULL);
INSERT INTO library VALUES(3,"province","北京",NULL,NULL),(3001,"city","海淀区",3,NULL)
,(NULL,"city","朝阳区",3,NULL)
,(NULL,"city","通州区",3,NULL)
,(NULL,"city","石景山区",3,NULL);
INSERT INTO library VALUES(4,"province","云南",NULL,NULL),(4001,"city","昆明",4,NULL)
,(NULL,"city","丽江",4,NULL)
,(NULL,"city","西双版南",4,NULL)
,(NULL,"city","玉溪",4,NULL)
,(NULL,"city","大理",4,NULL);
4.2 创建实体类
public class Library implements Serializable {
private Integer id;
private String name;
private String type;
private String remark;
private Library flibrary;
。。。
}
4.3 jdbc工具类
package com.zhiyou100_10.ajax;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class Demo01C3p0Util {
private static ComboPooledDataSource source;
static{
source=new ComboPooledDataSource();
}
public static Connection getCon(){
try {
return source.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public static void close(Connection con,Statement sta,ResultSet set){
try {
if(set!=null){set.close();}
if(sta!=null){sta.close();}
if(con!=null){con.close();}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args)throws Exception {
Connection con=getCon();
System.out.println(con);
}
}
4.4 dao
package com.zhiyou100_10.ajax;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class LibraryDao {
public List<Library> getAllProvince(){
Connection con=Demo01C3p0Util.getCon();
PreparedStatement pre=null;
ResultSet set=null;
List<Library> list=new ArrayList<Library>();
try {
pre=con.prepareStatement("select * from library where type=?");
pre.setString(1, "province");
set=pre.executeQuery();
while(set.next()){
list.add(new Library(set.getInt("id"),
set.getString("name"),
set.getString("type"),
set.getString("remark"),null));
}
} catch (Exception e) {
throw new RuntimeException(e);
}
Demo01C3p0Util.close(con, pre, set);
return list;
}
public List<Library> getAllCityByFname(String privinceName){
Connection con=Demo01C3p0Util.getCon();
PreparedStatement pre=null;
ResultSet set=null;
List<Library> list=new ArrayList<Library>();
try {
pre=con.prepareStatement("SELECT * FROM library lcity,library lprovince WHERE lcity.TYPE=? AND lprovince.name=? AND lcity.fid=lprovince.id");
pre.setString(1, "city");
pre.setString(2, privinceName);
set=pre.executeQuery();
while(set.next()){
list.add(new Library(set.getInt(1),
set.getString(3),
set.getString(2),
set.getString(5),
new Library(set.getInt(6),
set.getString(8),
set.getString(7),
set.getString(10))));
}
} catch (Exception e) {
throw new RuntimeException(e);
}
Demo01C3p0Util.close(con, pre, set);
return list;
}
public static void main(String[] args) {
System.out.println(new LibraryDao().getAllProvince());
System.out.println(new LibraryDao().getAllCityByFname("河南"));
}
}
4.5 jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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">
<script type="text/javascript" src="../02_jquery/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="ajax.js"></script>
<title>ajax的省市联动</title>
<style type="text/css">
</style>
</head>
<body>
地址选择:<select name="province"><option>请选择省/直辖市</option></select> |
<select name="city"><option value="">请选择市/区</option></select>
<!-- 文档加载完毕 通过ajax获取所有的省份 把每个省份对应一个option添加到province -->
<script type="text/javascript">
$(function(){
//发送ajax请求:::响应所有的省的名字 之间用-分割
myAjax("get","<c:url value='/ajax/s21.do'/>",true,null,function(responseData){
//通过-分割
var provinceArr=responseData.split("-");
for(var i=0;i<provinceArr.length;i++){
$("select[name='province']").append("<option value='"+provinceArr[i]+"'>"+provinceArr[i]+"</option>");
}
});
});
$(function(){
//当选中某个省份时 在city的seelct中应该加载此省所有的城市
$("select[name='province']").change(function(){
var value=$(this).val();
if(value){
//清空目前已有的city的option
$("select[name='city'] option[value!='']").remove();
//通过ajax获取当前省对应的所有城市
myAjax("post","<c:url value='/ajax/s22.do'/>",true,"provinceName="+value,function(responseData){
//通过-分割
var cityArr=responseData.split("-");
for(var i=0;i<cityArr.length;i++){
$("select[name='city']").append("<option value='"+cityArr[i]+"'>"+cityArr[i]+"</option>");
}
});
}
});
});
</script>
</body>
</html>
4.6 获取所有省份的servlet
LibraryDao dao=new LibraryDao();
List<Library> list=dao.getAllProvince();
StringBuffer stb=new StringBuffer("");
for (Library library : list) {
stb.append(library.getName());
stb.append("-");
}
stb.deleteCharAt(stb.length()-1);
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print(stb.toString());
4.7 根据省份名字获取所有城市的servlet
req.setCharacterEncoding("utf-8");
String provinceName=req.getParameter("provinceName");
LibraryDao dao=new LibraryDao();
List<Library> list=dao.getAllCityByFname(provinceName);
StringBuffer stb=new StringBuffer("");
for (Library library : list) {
stb.append(library.getName());
stb.append("-");
}
stb.deleteCharAt(stb.length()-1);
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print(stb.toString());
5 json
5.1 概念
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式
json是js可以直接解析一种键值对形式的对象类型的数据格式
格式:{属性名=属性值,属性名=属性值,属性名=属性值,属性名=属性值}
注意:属性名必须写在引号中:“” ''
值的类型:字符串+boolean+null+数字+数组[]+json对象{}
5.2 json案例1
<input type="button" value="测试json数据" onclick="test01()"/><br/>
<script type="text/javascript">
function test01(){
var json1={"name":"苗天宝",
"age":36,
"sex":'男',
"score":[33.4,55.7,88.9,33,78],
"wife":{"wifeName":"胖妞","sifeSex":"女","wifeAge":33}};
alert(json1);
alert("名字:"+json1.name+",性别:"+json1.sex+",分数:"+json1.score+",老婆名字:"+json1.wife.wifeName);
}
</script>
5.3 json数据的作用
<input type="button" value="测试eval方法" onclick="test02()"/>
<script type="text/javascript">
function test02(){
var str1="{\"name\":\张三丰\",\"age\":36, \"sex\":\"男\"}";
var str2="{'name':'张三丰','age':36,'sex':'男'}";
var obj1=eval("("+str1+")");
alert("名字:"+obj1.name+",性别:"+obj1.sex);
}
</script>
5.4 servlect响应一个json格式的字符串
package com.zhiyou100_10.ajax;
import java.io.Serializable;
import java.util.Arrays;
import java.util.UUID;
public class Student implements Serializable{
private Integer sid;
private String sname;
private Integer sage;
private Float height;
private Float[] scoreArr;
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Integer getSage() {
return sage;
}
public void setSage(Integer sage) {
this.sage = sage;
}
public Float getHeight() {
return height;
}
public void setHeight(Float height) {
this.height = height;
}
public Float[] getScoreArr() {
return scoreArr;
}
public void setScoreArr(Float[] scoreArr) {
this.scoreArr = scoreArr;
}
@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + ", sage=" + sage + ", height=" + height + ", scoreArr="
+ Arrays.toString(scoreArr) + "]";
}
public Student(Integer sid, String sname, Integer sage, Float height, Float[] scoreArr) {
super();
this.sid = sid;
this.sname = sname;
this.sage = sage;
this.height = height;
this.scoreArr = scoreArr;
}
public Student() {
this.sid=(int)(Math.random()*10000+1000);
this.sage=(int)(Math.random()*10+15);
this.sname=UUID.randomUUID().toString().replace("-", "").substring(1, 10);
this.height=(int)(Math.random()*100+1700)/10.0f;
scoreArr=new Float[]{(int)(Math.random()*1000)/10.0f,(int)(Math.random()*1000)/10.0f,(int)(Math.random()*1000)/10.0f,(int)(Math.random()*1000)/10.0f,(int)(Math.random()*1000)/10.0f};
}
}
<hr/>
<input type="button" value="servlet响应json::一个对象" onclick="test03()"/><br/>
<script type="text/javascript">
function test03(){
myAjax("post","<c:url value='/json/s31.do'/>",true,"n=1",function(responseData){
alert("获取的数据:"+responseData+",数据格式:"+typeof(responseData));
var json3=eval("("+responseData+")");
alert(json3);
alert(json3.sid+":"+json3.sname+":"+json3.height+":"+json3.scoreArr+":"+json3.sage);
});
}
</script>
<hr/>
<input type="button" value="servlet响应json::一个数组集合" onclick="test04()"/><br/>
<script type="text/javascript">
function test04(){
myAjax("post","<c:url value='/json/s31.do'/>",true,"n=11",function(responseData){
alert("获取的数据:"+responseData+",数据格式:"+typeof(responseData));
var json4=eval("("+responseData+")");
alert(json4);
for(var i=0;i<json4.length;i++){
alert("第"+(i+1)+"个对象的信息:"+json4[i].sid+":"+json4[i].sname+":"+json4[i].height+":"+json4[i].scoreArr+":"+json4[i].sage);
}
});
}
</script>
package com.zhiyou100_10.ajax;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Demo031Json extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int n=Integer.parseInt(req.getParameter("n"));
StringBuffer stb=new StringBuffer();
if(n==1){
Student student=new Student();
stb.append("{\"sid\":"+student.getSid());
stb.append(",\"sname\":\""+student.getSname()+"\"");
stb.append(",\"sage\":"+student.getSage());
stb.append(",\"height\":"+student.getHeight());
stb.append(",\"scoreArr\":[");
for (Float score:student.getScoreArr()) {
stb.append(score+",");
}
stb.deleteCharAt(stb.length()-1);
stb.append("]}");
System.out.println(stb.toString());
}else{
List<Student> list=new ArrayList<Student>();
for (int i = 0; i < 5; i++) {
list.add(new Student());
}
stb.append("[");
for (Student student : list) {
stb.append("{\"sid\":"+student.getSid());
stb.append(",\"sname\":\""+student.getSname()+"\"");
stb.append(",\"sage\":"+student.getSage());
stb.append(",\"height\":"+student.getHeight());
stb.append(",\"scoreArr\":[");
for (Float score:student.getScoreArr()) {
stb.append(score+",");
}
stb.deleteCharAt(stb.length()-1);
stb.append("]}");
stb.append(",");
}
stb.deleteCharAt(stb.length()-1);
stb.append("]");
}
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print(stb.toString());
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
5.5 分析
java端把对象转换为json格式的字符串 比较麻烦 通过反射可以写一个工具类 实现对象到json格式的字符串的转换
别人已经写好的
6 通过json的jar 实现对象-josn格式的字符串
6.1 导入依赖
6.2 把一个对象转换为json格式的字符串
Student stu=new Student();
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print(JSONObject.fromObject(stu).toString());
6.3 把一个集合转化为json格式的字符串
List<Student> list=new ArrayList<Student>();
for (int i = 0; i < 5; i++) {
list.add(new Student());
}
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print(JSONArray.fromObject(list).toString());
6.4 页面
<%@ 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">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>json</title>
<script type="text/javascript" src="../02_jquery/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<input type="button" value="servlet响应json::一个对象" onclick="test01()"/><br/>
<script type="text/javascript">
function test01(){
myAjax("get","<c:url value='/json/s41.do'/>",true,null,function(responseData){
alert("获取的数据:"+responseData+",数据格式:"+typeof(responseData));
var json3=eval("("+responseData+")");
alert(json3);
alert(json3.sid+":"+json3.sname+":"+json3.height+":"+json3.scoreArr+":"+json3.sage);
});
}
</script>
<hr/>
<input type="button" value="servlet响应json::一个数组集合" onclick="test02()"/><br/>
<script type="text/javascript">
function test02(){
myAjax("get","<c:url value='/json/s42.do'/>",true,null,function(responseData){
alert("获取的数据:"+responseData+",数据格式:"+typeof(responseData));
var json4=eval("("+responseData+")");
alert(json4);
for(var i=0;i<json4.length;i++){
alert("第"+(i+1)+"个对象的信息:"+json4[i].sid+":"+json4[i].sname+":"+json4[i].height+":"+json4[i].scoreArr+":"+json4[i].sage);
}
});
}
</script>
</body>
</html>
6.5 注意:如果对象的属性是date类型::获取的json对象的此属性值也是json对象
<input type="button" value="servlet响应json::一个对象:对象含有date属性" onclick="test01()"/><br/>
<script type="text/javascript">
function test01(){
myAjax("get","<c:url value='/json/s51.do'/>",true,null,function(responseData){
alert("获取的数据:"+responseData+",数据格式:"+typeof(responseData));
var json3=eval("("+responseData+")");
alert(json3);
alert(json3.sid+":"+json3.sname+":"+json3.height+":"+json3.scoreArr+":"+json3.sage+":"+json3.sbirth+":"+json3.sbirth.year+":");
alert((json3.sbirth.year+1900)+":"+(json3.sbirth.month+1)+":"+json3.sbirth.date+":"+json3.sbirth.hours+":"+json3.sbirth.minutes+":"+json3.sbirth.seconds);
});
}
</script>
7 jquery操作ajax的方法
7.1 jquery中ajax方法
<input type="button" value="测试jquery的ajax方法:ajax::get请求 获取text" onclick="test01()"/><br/>
<div id="div_1"></div>
<script type="text/javascript">
function test01(){
$.ajax({
async:true,
cache:false,
contentType:"application/x-www-form-urlencoded",
type:"GET",
data:"a=1&b=2",
dataType:"text",
url:"<c:url value='/ajax/s61.do'/>",
success:function(data){
alert(data);
$("#div_1").html(("s61.do响应的内容是"+data).fontcolor("red").bold());
}
});
}
</script>
<hr/>
<input type="button" value="测试jquery的ajax方法:ajax::post请求 获取json" onclick="test02()"/><br/>
<div id="div_2"></div>
<script type="text/javascript">
function test02(){
$.ajax({
async:true,
cache:false,
contentType:"application/x-www-form-urlencoded",
type:"POST",
data:"sage=18&sname=hmm&height=180.1",
dataType:"json",
url:"<c:url value='/ajax/s62.do'/>",
success:function(data){
alert(data);
$("#div_2").html(("s62.do响应的内容是"+data.sid+":"+data.sname+":"+data.height+":"+data.scoreArr).fontcolor("red").bold());
}
});
}
</script>
- servlet:get请求返回一个text:/ajax/s61.do
req.setCharacterEncoding("utf-8");
int a=Integer.parseInt(req.getParameter("b"));
int b=Integer.parseInt(req.getParameter("b"));
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print("a="+a+",b="+b+",a+b="+(a+b));
- servlet:get请求返回一个json:/ajax/s62.do
req.setCharacterEncoding("utf-8");
String sname=req.getParameter("sname");
int sage=Integer.parseInt(req.getParameter("sage"));
float height=Float.parseFloat(req.getParameter("height"));
Student stu=new Student();
stu.setSname(sname+"同学");
stu.setSage(sage+10);
stu.setHeight(height+10);
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
resp.getWriter().print(JSONObject.fromObject(stu).toString());
7.2 jquery中get方法和post方法
<!--
jquery中ajax相关的方法:
jQuery.ajax([options]):::参数是json对象
属性:async:Boolean 是否异步
cache:Boolean 是否使用缓存
contentType:String 请求数据类型:(默认: "application/x-www-form-urlencoded")
data:String 请求参数
dataType:String 期待服务器端响应数据的类型:text/json(通过eval解析即可得到json)
success:Function 成功的回调函数
type:String 请求方式 ( 默认)GET/PSOT
url:String 请求的url
jQuery.get(url, [data], [callback], [type])
jQuery.post(url, [data], [callback], [type])
参数: url:请求路径
data:请求参数
callback:成功的回调函数
type:期待响应的数据类型
-->
<input type="button" value="测试jquery的get方法: 获取text" onclick="test01()"/><br/>
<div id="div_1"></div>
<script type="text/javascript">
function test01(){
$.get("<c:url value='/ajax/s63.do'/>","n=1&a=1&b=3",function(data){
$("#div_1").html(("s63.do响应的内容是"+data).fontcolor("red").bold());
},"text");
}
</script>
<hr/>
<input type="button" value="测试jquery的get方法: 获取json" onclick="test02()"/><br/>
<div id="div_2"></div>
<script type="text/javascript">
function test02(){
$.get("<c:url value='/ajax/s63.do'/>","n=2&sage=18&sname=hmm&height=180.1",function(data){
$("#div_2").html(("s63.do响应的内容是"+data.sid+":"+data.sname+":"+data.height+":"+data.scoreArr).fontcolor("red").bold());
},"json");
}
</script>
<hr/>
<input type="button" value="测试jquery的post方法: 获取text" onclick="test03()"/><br/>
<div id="div_3"></div>
<script type="text/javascript">
function test03(){
$.post("<c:url value='/ajax/s63.do'/>","n=3&a=2&b=6",function(data){
$("#div_3").html(("s63.do响应的内容是"+data).fontcolor("red").bold());
},"text");
}
</script>
<hr/>
<input type="button" value="测试jquery的post方法: 获取json" onclick="test04()"/><br/>
<div id="div_4"></div>
<script type="text/javascript">
function test04(){
$.post("<c:url value='/ajax/s63.do'/>","n=4&sage=18&sname=hmm&height=180.1",function(data){
$("#div_4").html(("s63.do响应的内容是"+data.sid+":"+data.sname+":"+data.height+":"+data.scoreArr).fontcolor("red").bold());
},"json");
}
</script>
package com.zhiyou100_10.ajax;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
public class Demo062JqueryUseAjaxByGetPost extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
int n=Integer.parseInt(req.getParameter("n"));
if(n==1){
int a=Integer.parseInt(req.getParameter("b"));
int b=Integer.parseInt(req.getParameter("b"));
resp.getWriter().print("a="+a+",b="+b+",a+b="+(a+b));
return;
}
if(n==2){
String sname=req.getParameter("sname");
int sage=Integer.parseInt(req.getParameter("sage"));
float height=Float.parseFloat(req.getParameter("height"));
Student stu=new Student();
stu.setSname(sname+"同学");
stu.setSage(sage+10);
stu.setHeight(height+10);
resp.getWriter().print(JSONObject.fromObject(stu).toString());
}
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
resp.setCharacterEncoding("utf-8");
int n=Integer.parseInt(req.getParameter("n"));
if(n==3){
int a=Integer.parseInt(req.getParameter("b"));
int b=Integer.parseInt(req.getParameter("b"));
resp.getWriter().print("a="+a+",b="+b+",a+b="+(a+b));
return;
}
if(n==4){
String sname=req.getParameter("sname");
int sage=Integer.parseInt(req.getParameter("sage"));
float height=Float.parseFloat(req.getParameter("height"));
Student stu=new Student();
stu.setSname(sname+"同学");
stu.setSage(sage+10);
stu.setHeight(height+10);
resp.getWriter().print(JSONObject.fromObject(stu).toString());
System.out.println("post:::"+n);
}
}
}