Struts2+jquery+Ajax实现json数据的传输
2017-04-29 19:56
141 查看
javaweb在使用前后台数据交互时,常常用到Ajax的异步传输来减少数据传输量,让页面局部刷新,而不影响整体页面。
json作为一种简单的轻量级的数据交换格式,大量用于前后台数据交换的格式,类似于map,也是键值关系的。
Jquery.js中集成了Ajax的处理函数,接下来介绍Struts2框架下使用Ajax来让前台获取一段json数据
我用的是myeclipse10,直接导入的jar包,里面的struts2的jar也包含了json的jar,其中缺少一个包,就是ezmorph.jar,这是java处理json格式转换的必备jar,不引不会报错,但是前台无法接收json数据
下载地址:点击下载资源,下载导入即可。
首先我们来看前台页面。
index.jsp
运行图如下:
上面的时间就是验证异步传输,也就是只有橙色div会刷新,整个页面不会刷新
这时,我们输入相应的name和age。
进入Action的代码
DemoAction.java
接下来是配置struts.xml。
然后跑一下就可以了,我们只是验证,所以我只是完成了数据传入后台,封装成json,再返回前台,通过js中eval()函数解析,将数据注入 到一个div中的过程。
运行结果
可以多次输入,看到,那个时间在页面未刷新的情况下不改变,也就是说只有橙色在刷新,那么久大大减少了数据流的传输。
会了这个小Demo之后,就可实现数据的传输,然后处理,再返回了。
json作为一种简单的轻量级的数据交换格式,大量用于前后台数据交换的格式,类似于map,也是键值关系的。
Jquery.js中集成了Ajax的处理函数,接下来介绍Struts2框架下使用Ajax来让前台获取一段json数据
我用的是myeclipse10,直接导入的jar包,里面的struts2的jar也包含了json的jar,其中缺少一个包,就是ezmorph.jar,这是java处理json格式转换的必备jar,不引不会报错,但是前台无法接收json数据
下载地址:点击下载资源,下载导入即可。
首先我们来看前台页面。
index.jsp
<%@page import="java.text.SimpleDateFormat"%> <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@taglib uri="/struts-tags" prefix="s" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script src="js/jquery.js" type="text/javascript"></script> <style type="text/css"> .time{ width:300px; background:#666; } .main{ width:300px; height: 400px; background: #f60; } </style> <script type="text/javascript"> function btn(){ $.ajax({ //提交方式 type:"post", //提交的Action url:"demoAction", data:{ //提交的数据 name:$("input[name=name]").val(), age:$("input[name=age]").val() }, //返回数据类型 dataType:"json", success:function(data){ //eval()是JS中将JSON的字符串解析成JSON数据格式的一种方法 var d = eval(data); //将解析的de数据放入相应的id中 $("#s_name").text(""+d.name+""); $("#s_age").text(""+d.age+""); }, error:function(data) { //失败的话 alert("fail"); }, }); } </script> </head> <body> <div class="time" name="time"> <% SimpleDateFormat fomatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date currentTime = new Date(); String str = fomatter.format(currentTime); %> <%=str %> </div> <form action="#" method = "post"> name:<input type="text" name="name"/> age:<input type="text" name="age"/> <input type="button" class="btn" value="submit" onclick="btn()"/> </form> <div class="main" name="main"> <span id="s_name">nnnn</span> <span id="s_age">aaaa</span> </div> </body> </html>
运行图如下:
上面的时间就是验证异步传输,也就是只有橙色div会刷新,整个页面不会刷新
这时,我们输入相应的name和age。
进入Action的代码
DemoAction.java
package com.action; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; import com.opensymphony.xwork2.ActionSupport; public class DemoAction extends ActionSupport { //获取name和age private String name; private String age; //构造返回的json数据 private JSONObject result; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public JSONObject getResult() { return result; } public void setResult(JSONObject result) { this.result = result; } @Override public String execute() throws Exception { // TODO Auto-generated method stub System.out.println(name); System.out.println(age); Map<String, Object> map = new HashMap<String, Object>(); map.put("name", name); map.put("age", age); result = JSONObject.fromObject(map); return SUCCESS; } }
接下来是配置struts.xml。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="default" extends="struts-default,json-default" namespace=""> <action name="demoAction" class="com.action.DemoAction"> <result type="json"> <!-- 这里的result名字对应着action中jsonObject那个,必须有get,set方法 --> <param name="root">result</param> </result> </action> </package> </struts>
然后跑一下就可以了,我们只是验证,所以我只是完成了数据传入后台,封装成json,再返回前台,通过js中eval()函数解析,将数据注入 到一个div中的过程。
运行结果
可以多次输入,看到,那个时间在页面未刷新的情况下不改变,也就是说只有橙色在刷新,那么久大大减少了数据流的传输。
会了这个小Demo之后,就可实现数据的传输,然后处理,再返回了。
相关文章推荐
- PHP中利用jQuery操作json格式数据,实现$_POST的数据传输和接收
- 用Ajax实现多级联动下拉列表For JSP(无限级别,JSON传输数据,含全国地区数据库
- (转载)利用HttpWebRequest通过POST Json数据在.net后台实现不同平台间的数据传输
- 使用JSON实现数据的跨域传输的php代码
- servlet+jquery+json实现数据传输
- cocos2dx HttpClient实现rapidjson格式数据传输
- 利用HttpWebRequest通过POST Json数据在.net后台实现不同平台间的数据传输
- js实现内容显示并使用json传输数据
- Android与Java 服务器使用Socket协议实现Json数据传输
- js实现内容显示并使用json传输数据
- 使用JSON实现数据的跨域传输的php代码
- 使用JSON实现数据的跨域传输
- ajax用json实现数据传输
- 实现客户端与服务端之间传输json数据
- ajax用json实现数据传输
- pyramid 实现json数据传输时的对象序列化
- 利用HttpWebRequest以POST方式提交Json数据-后台实现不同平台间的数据传输
- Android NDK 使用JSON实现数据封装传输
- 使用JSON实现数据的跨域传输
- 利用json实现数据传输