REST模式demo

一、json
  1. jar包
要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:
  • json-lib-2.4-jdk15.jar
  • commons-beanutils-1.8.0.jar
  • commons-collections-3.2.1.jar
  • commons-lang-2.5.jar
  • ezmorph-1.0.6.jar
  1. JSON和其他对象转换
  •  JAVA对象转JSON
先将java对象转换为json对象,在将json对象转换为json字符串
JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象
String str = json.toString();//将json对象转换为字符串
  • JSON转JAVA
同样先将json字符串转换为json对象,再将json对象转换为java对象,如下所示。
JSONObject obj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象
将json对象转换为java对象
Person jb = (Person)JSONObject.toBean(obj,Person.class);//将建json对象转换为Person对象
  1. 遍历JSON对象 获取属性
//res:返回的json对象 
var list="";
$.each(res,function(i){
                   list +=i+'    '+res[i]+ '    ' ;
               })
结果:

 age 11 id 1 name zhangzhang sex 女

  1. 获取JSON对象的指定属性
//data1为某个标签的id值   rest为JSON对象  name为JSON对象的一个属性名
document.getElementById("data1").innerHTML=res.name  //获取json对象的指定属性值,显示在id=data1的标签中

二、AJAX

  1. 在js中引入JQuery的核心库(写在<head></head>中)
<script src="jquery.min.js"></script>
需要引用  jquery.min.js

  1. AJAX请求
$.ajax({
           url:"/RestDemo1.1/demo1",   //ajax发送请求的地址
           //dataType:"json",     //预期服务器返回的数据类型
           data:{"name":"zhanzhanzhan"},  //data属性,将data数据传送到url地址中,发送到服务器的数据,将自动转换为请求字符串格式
           success:function (res){//请求成功后的回调函数

                alert(res);   //res返回的数据
                               
           },
           fail:function(res){//请求失败后的回调函数
                alert(res);
           }
     })
三、代码使用DEMO

  1. demoServlet.java 
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           // TODO Auto-generated method stub
           //设置编码方式
                     response.setContentType("text/html;charset=UTF-8");
            PrintWriter out=response.getWriter();

           //声明三个类,模拟数据库中的查询结果
                Student s1=new Student("zhang",1,"女",11);
                Student s2=new Student("wang",2,"女",22);
                Student s3=new Student("liu",3,"女",33);


                //设置编码方式
                response.setContentType("text/html;charset=UTF-8");
                // 设置响应头允许ajax跨域访问
                //response.setHeader("Access-Control-Allow-Origin", "*");
                /* 星号表示所有的异域请求都可以接受, */
               //response.setHeader("Access-Control-Allow-Methods", "GET,POST");

                //获取ajax 中data传过来的数据
               String name = request.getParameter("name");
               s1.setName(name);


              JSONObject json = JSONObject.fromObject(s1);//将java对象转换为json对象
             String str = json.toString();//将json对象转换为字符串
             //out.println中的内容都将显示在回调函数中
            out.print(json);
               
              
             out.flush();
             out.close();
     }

  1. demo1.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>传送json数据</title>
<script src="jquery.min.js"></script>  
<script>
//页面加载时执行
$.ajax({
     url:"/RestDemo1.1/demo1",
     dataType:"json",
     data:{"name":"zhangzhang"},  //data属性,将data数据传送到url地址中
     success:function (res){
           document.getElementById("data2").innerHTML=res.name  //获取json对象的指定属性值
                     //DOM层刷新
                     var listHtml='';
                 //循环取json对象的属性,并呈现在列表中
                listHtml += '<ul>';
                  $.each(res,function(i){
                   listHtml += '<li>'+i+'    '+res[i]+'</li>';
               })
                      listHtml += '</ul>';
               $("#data1").replaceWith(listHtml);   //将listHtml内容替换原有内容
                     //var arr;
                     //arr=res.split(" ");  //分割成数组,  “ ” 中的内容为分隔符
                     console.log(res);


     },
     fail:function(res){
           alert(res);
     }
})
</script>
</head>
<body>

<input type="button" value="使用Json请求去后台获取数据返回是json对象"   onclick="toJson()" >

<div id="data1">111111</div>
<div id="data2">222222</div>

 <script>
 //这是启动AJAX异步通信的方法
 function  toJson()
{
      alert(1);  //用于调试

     $.ajax({
           url:"/RestDemo1.1/demo1",   //ajax发送请求的地址
           //dataType:"json",     //json对象无法划分数组,下面会出错
           data:{"name":"zhanzhanzhan"},  //data属性,将data数据传送到url地址中
           success:function (res){
                alert(res);
                //DOM层刷新
                $("#data2").text(res);
                var arr;
                arr=res.split(" ");  //分割成数组  “” 中的内容为分隔符
                console.log(arr);
           },
           fail:function(res){
                alert(res);
           }
     })
}


</script>

</body>
</html>

  1. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>RestDemo1.1</display-name>
  <welcome-file-list>
    <welcome-file>demo1.html</welcome-file>

  </welcome-file-list>

  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>demoServlet</servlet-name>
    <servlet-class>demo.demoServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>demoServlet</servlet-name>
    <url-pattern>/demo1</url-pattern>
  </servlet-mapping>



</web-app>

四、异常处理

  1. java ClassNotFoundException   解决方案:导包  包不全 
  2. java NoClassDefFoundException   解决方案:将包放入tomcat的lib中 让tomcat可以找到

五、资源
  1. json对象和其他对象转化 http://www.sojson.com/blog/20.html
  2. JSONObject和JSONArray  http://blog.youkuaiyun.com/huangwuyi/article/details/5412500
  3. 上述异常区别  http://blog.youkuaiyun.com/chenchaofuck1/article/details/50971994
  4. AJAX使用方法  http://www.w3school.com.cn/jquery/ajax_ajax.asp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值