[1] model
日期类型需要装换,setBirthday中的@JSON(format="yyyy-MM-dd")规定前台页面输入日期格式为yyyy-MM-dd.
用户类
import java.util.Date;
import org.apache.struts2.json.annotations.JSON;
/**
* 类名: User.java<br />
* 类描述:用户
* @version: 1.0
* @date: 2013-4-6 下午6:43:44
* **/
public class User {
private Integer userId;
private String username;
private Date birthday;
private Parents parents;
public Integer getUserId() {
return userId;
}
public String getUsername() {
return username;
}
public Date getBirthday() {
return birthday;
}
public Parents getParents() {
return parents;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public void setUsername(String username) {
this.username = username;
}
@JSON(format="yyyy-MM-dd")
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public void setParents(Parents parents) {
this.parents = parents;
}
}
用户类中的双亲类
/**
* 类名: Parents.java<br />
* 类描述:双亲
* @version: 1.0
* @date: 2013-4-6 下午7:10:26
* **/
public class Parents {
private String falther;
private String mother;
public String getFalther() {
return falther;
}
public String getMother() {
return mother;
}
public void setFalther(String falther) {
this.falther = falther;
}
public void setMother(String mother) {
this.mother = mother;
}
}
调用到的Action.
使用json格式对应User类向服务端传输数据,之后使用json格式向客户端发出响应.
public class AddUserAction extends ActionSupport {
private User user;
/** result: 表示操作是否成功 **/
private Boolean result;
/** 方法描述:set方法,客户端->服务端 **/
public void setUser(User user) {
this.user = user;
}
/** 方法描述:get方法,服务端->客户端 **/
public Boolean getResult() {
return result;
}
@Override
public String execute() throws Exception {
System.out.println("用户名:" + user.getUsername() +
"\n生日:" + user.getBirthday() +
"\n父亲:" + user.getParents().getFalther() +
"\n母亲:" + user.getParents().getMother());
result = true;
return SUCCESS;
}
}
struts.xml配置
<package name="default" extends="json-default" namespace="/">
<!-- 使用json格式想服务器发送数据 -->
<interceptors>
<interceptor-stack name="IStack">
<interceptor-ref name="json" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="IStack" />
<!-- 使用json格式想服务器发送数据 -->
<action name="addUserAction" class="net.arisu.module.user.event.AddUserAction">
<result name="success" type="json">/test.jsp</result>
</action>
</package>
页面
jsonBuildWithObject("parents", parentsKeys, parentsValues),表示自定义对象,parents对应user内的自定义对象,parentsKeys和parentsValues为parents中的属性和值;
jsonBuild("user", key, value, 1)中,user对应action中的user,key和value为user中的属性和值,1表示user中包含n个自定义对象(这里就parents一个),value数值的值会比key多出n个;
<title>test</title>
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/stringUtils.js"></script>
<script type="text/javascript">
$(function(){
});
function add() {
var parentsKeys = new Array("falther", "mother");
var parentsValues = new Array($("#falther").val(), $("#mother").val());
var key = new Array("username", "birthday");
var value = new Array($("#username").val(), $("#birthday").val(),
jsonBuildWithObject("parents", parentsKeys, parentsValues));
//组合json数据格式,方便发送
var json = jsonBuild("user", key, value, 1);
$.ajax({
type : "post",
data : json,
url : "addUserAction.action",
contentType : "application/json",
success : function(returnedData, status) {
if (!returnedData.result) {
alert("error");
} else {
alert("success");
}
}
});
}
</script>
</head>
<body>
用户名 <input id="username" type="text" value="张三"/>
生日 <input id="birthday" type="text" value="2000-11-11" checked="checked">
父亲 <input id="falther" type="text" checked="checked" value="李四">
母亲 <input id="mother" type="text" checked="checked" value="王五"><br>
<input type="button" value="添加" onclick="add()">
</body>
js工具类,stringUtils.js,调用的方法如上,
/**
* 描述:拼接json字符串
* @param objectName 对象名称
* @param key 属性名称
* @param value 属性值
* @returns {String}
* @version: 1.0
* @date: 2012-10-13 上午10:46:10
*/
function jsonBuild(objectName, key, value) {
var result = "{'" + objectName + "':{'";
for ( var i in value) {
if (i < key.length) {
if(i < key.length - 1) {
result += key[i] + "':'" + value[i] + "','";
} else {
if (key.length != value.length)
result += key[i] + "':'" + value[i] + "',";
else
result += key[i] + "':'" + value[i] + "'}";
}
} else {
if (i == value.length - 1)
result += value[i] + "}";
else
result += value[i] + ",";
}
}
result += "}";
return result;
}
/**
* 描述:拼接json字符串
* @param objectName 对象名称
* @param key 属性名称
* @param value 属性值
* @returns {String}
* @version: 1.0
* @date: 2012-10-13 上午10:46:10
*/
function jsonBuildWithObject(objectName, key, value) {
var result = "'" + objectName + "':{'";
for ( var i in key) {
if (i < key.length - 1)
result += key[i] + "':'" + value[i] + "','";
else
result += key[i] + "':'" + value[i] + "'}";
}
return result;
}
分享到:
相关推荐
这种配置使得当用户发起Ajax请求时,Struts2会自动将Java对象转换为JSON格式的数据返回给前端。 3. **前端页面编写** 前端页面使用了jQuery库来发起Ajax请求。首先引入jQuery库(这里使用的是1.2.6版本),然后...
当用户界面触发某个事件(比如点击按钮),jQuery会发起Ajax请求,Struts2 Action执行相关逻辑并生成JSON响应,最后jQuery将数据插入到网页中,完成一次完整的交互。 总结来说,这个例子展示了如何利用Struts2处理...
通过Struts2处理业务逻辑和验证,JSON作为数据交换格式,JQuery在客户端进行交互和验证,可以构建出响应快速、用户体验良好的Web应用。理解并熟练掌握这三个技术,对于提升Web开发能力非常有帮助。
- **Struts2的JSON插件**:虽然题目要求不使用JSON,但通常情况下,Struts2通过JSON插件返回数据给jQuery是最方便的方式。不过,我们可以通过设置Content-Type为"text/plain"或"text/html",让Struts2返回非JSON...
Struts2、jQuery、JSON和Ajax是Web开发中常见的技术栈,它们共同为构建动态、...通过Struts2处理业务逻辑和数据验证,jQuery和Ajax负责前后端的通信,JSON作为数据交换的载体,共同构建了一个高效、响应式的Web应用。
例如,当用户在前端进行某些操作(如点击按钮),jQuery会发送Ajax请求到Struts2的Action,Struts2处理请求并以JSON格式返回响应,jQuery接收到数据后动态更新页面元素,如表格、列表或其他UI组件。 在实际应用中,...
"Struts2+JSON+jQuery实现Ajax数据的存取"就是一个典型的示例,它结合了强大的MVC框架Struts2、轻量级的数据交换格式JSON以及高效的前端库jQuery,以实现网页上的无刷新数据交互。下面将详细介绍这三个技术及其在...
同时,它支持多种结果类型,包括JSP、FreeMarker、Velocity等模板语言,以及JSON和XML等数据格式。 Ajax,即Asynchronous JavaScript and XML,是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。通过...
- **前端交互**:jQuery通过AJAX与后台Struts2 Action通信,发送JSON请求并接收JSON响应。 - **数据展示**:Struts2 Action处理完业务逻辑后,返回JSON结果,jQuery解析后动态更新DOM展示数据。 博客链接中提到的...
结合实例,"struts2+jQuery+json 实例"很可能是创建了一个Web应用,用户在前端通过jQuery发送AJAX请求,这些请求可能包含表单数据或者对页面的某些操作。后端Struts2框架接收到请求后,会调用相应的Action执行业务...
在"Struts2+JQuery+Json实例"中,我们探讨的是如何结合这三个技术来创建动态、响应式的Web应用。以下是这个实例中的关键知识点: 1. **获取JS值**:在JQuery中,我们可以使用`val()`函数来获取表单元素的值,如...
在项目中,`Struts2JQueryJson`文件夹可能包含了HTML页面、JavaScript脚本、Struts2相关的Action类、以及可能的 strut2 配置文件等资源。 总结来说,这个实例通过结合Struts2的后端控制、jQuery的前端交互和JSON的...
4. **jQuery请求与响应处理**:在前端,使用jQuery的Ajax方法向服务器发送请求,如`$.ajax`或`$.getJSON`,获取JSON数据: ```javascript $.getJSON('getData.action', function(data) { // 处理返回的JSON数据 ...
在Struts2框架下,我们可以使用Jquery的Ajax方法向服务器发送请求,获取JSON或XML数据,然后动态更新页面的部分内容。 在"06-mvc之struts2.ppt"中,可能涵盖了以下内容: 1. Struts2框架的基本概念和架构 2. 如何...
这个教程可能详细介绍了如何集成这四者,比如设置Struts2的JSON插件,创建Action来返回JSON数据,编写jQuery代码来发送Ajax请求,以及如何在前端解析和显示JSON数据。通过学习和实践这个例子,开发者可以深入理解...
在jQuery中,$.ajax()方法是进行Ajax请求的主要方式,它可以发送JSON、XML或其他数据格式的请求,并处理服务器返回的数据。 **JSON** (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写...
在本示例中,Struts2将处理来自jQuery的Ajax请求,并返回JSON格式的响应数据。 jQuery则是一个轻量级的JavaScript库,简化了DOM操作、事件处理和Ajax交互。在本例中,jQuery的`$.ajax()`方法用于发起异步请求,获取...
在这个过程中,我们通常会用到`json2.js`库来处理JSON数据在JavaScript端的解析和序列化,以及Struts2的`jsonplugin`来支持JSON响应。 首先,让我们详细了解一下`json2.js`。这个JavaScript库是由Douglas Crockford...