- 浏览: 262630 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
sflscar:
太好了,我搞了一下午,批量插入,第一个参数个数没对sql批量导 ...
redis pipe大数据量导入 -
赵青青:
那 entity.hbm.xml 文件中的主健策略怎么配置 ...
Hibernate 和 Access -
GapStar:
换成flash IconCellRenderer.as应该怎么 ...
DataGrid 中加入图标 -
binbinyouli:
不好意思。我把楼主注释掉得部分打开了。但是我看楼主有传递对象的 ...
Flex Flash 和JAVA 在Socket交互 -
binbinyouli:
不知道前两位评论人时怎么做得。我再做这个例子的时候出现了安全沙 ...
Flex Flash 和JAVA 在Socket交互
JSON官方文档
http://www.json.org/json-zh.html
jQuery官方文档
http://docs.jquery.com/Main_Page
- <SPAN style="FONT-SIZE: small">function removerecordbyid(recordid){
- $("#showallrecord table tr").each(
- function(){
- var seq=parseInt($(this).children("td").html());
- var thisrecord = this;
- if(seq==recordid)
- if(confirm("您确认执行删除操作么?")){
- $.ajax({
- type: "POST",
- url:"removeRecordById.action",
- dataType:"json",
- data:{"msg.id":recordid},
- success:function(json){
- if(json.status==4){
- alert("删除失败,只有提交留言的ip才能删除");
- }else{
- $(thisrecord).remove();
- // alert("删除成功");
- }
- },
- error:function(){
- alert("del error");
- }
- });
- }
- });
- }
- function getrecordbypage(page){
- $.ajax({
- type: "POST",
- url:"listAllRecordByPage.action",
- dataType:"json",
- data:{"page":page},
- success:function(json){
- var strs="<table border=\"1\"><tr id='colattr'><td>key-id</td><td>昵称</td><td>留言时间</td><td width='120'>邮箱</td><td width='120'>博客</td><td width='250'>留言</td><td>操作</td></tr>";
- for(i=0;i<json.records.length;i++){
- str="<tr id='"+json.records[i].id+"' onclick='lineclick(this);'><td>"+json.records[i].id+"</td><td>"+json.records[i].from+"</td><td>"+json.records[i].addDate+"</td><td>"+json.records[i].mail+"</td><td>"+json.records[i].site+"</td><td>"+json.records[i].cont+"</td><td><a onclick='removerecordbyid("+json.records[i].id+");'>删除</a></td></tr>"
- strs=strs+str
- }
- strs=strs+"</table>"
- $("#showallrecord").html(strs);
- },
- error:function(){
- alert("error");
- }
- });
- };</SPAN>
function removerecordbyid(recordid){
$("#showallrecord table tr").each(
function(){
var seq=parseInt($(this).children("td").html());
var thisrecord = this;
if(seq==recordid)
if(confirm("您确认执行删除操作么?")){
$.ajax({
type: "POST",
url:"removeRecordById.action",
dataType:"json",
data:{"msg.id":recordid},
success:function(json){
if(json.status==4){
alert("删除失败,只有提交留言的ip才能删除");
}else{
$(thisrecord).remove();
// alert("删除成功");
}
},
error:function(){
alert("del error");
}
});
}
});
}
function getrecordbypage(page){
$.ajax({
type: "POST",
url:"listAllRecordByPage.action",
dataType:"json",
data:{"page":page},
success:function(json){
var strs="<table border=\"1\"><tr id='colattr'><td>key-id</td><td>昵称</td><td>留言时间</td><td width='120'>邮箱</td><td width='120'>博客</td><td width='250'>留言</td><td>操作</td></tr>";
for(i=0;i<json.records.length;i++){
str="<tr id='"+json.records[i].id+"' onclick='lineclick(this);'><td>"+json.records[i].id+"</td><td>"+json.records[i].from+"</td><td>"+json.records[i].addDate+"</td><td>"+json.records[i].mail+"</td><td>"+json.records[i].site+"</td><td>"+json.records[i].cont+"</td><td><a onclick='removerecordbyid("+json.records[i].id+");'>删除</a></td></tr>"
strs=strs+str
}
strs=strs+"</table>"
$("#showallrecord").html(strs);
},
error:function(){
alert("error");
}
});
};
注意dataType:"json"这个参数一定不能少,否则不能正确识别
一下是Struts action代码
- <SPAN style="FONT-SIZE: small">public class CrudMsgAction extends ActionSupport{
- private Record msg;
- private int index;
- private RecordService recordService;
- private List<Record> records;
- private int status = 0;
- private int page = 0;
- @JSON(serialize=false)
- public RecordService getRecordService() {
- return recordService;
- }
- //other getter and setter
- @Override
- public String execute() throws Exception {
- return SUCCESS;
- }
- /**
- * 返回所有记录的JSON数据
- * @return list . All of the record.
- * @throws Exception
- */
- public String listAllRecord() throws Exception{
- List<Record> list = recordService.listAllRecord();
- // List list = Arrays.asList(allRecord);
- // List<Record> list2 = (List<Record>)list;
- // Record rec = (Record)list.get(0);
- records = list;
- return SUCCESS;
- }
- public String listAllRecordByPage() throws Exception{
- List<Record> list = recordService.listAllRecord(page);
- records = list;
- return SUCCESS;
- }
- /**
- * 插入记录
- * @return update the view with AJAX when struts2 action return
- * @throws Exception
- */
- public String insertRecord() throws Exception{
- //插入留言日期设置
- msg.setAddDate(new Date());
- //获取客户端ip,setIpaddr
- String clientIpAddr = ServletActionContext.getRequest().getRemoteAddr();
- msg.setIpaddr(clientIpAddr);
- //判断是否为空
- if("".equals(msg.getFrom()))msg.setFrom("anonymous");
- if("".equals(msg.getMail()))msg.setMail("@");
- if("".equals(msg.getSite()))msg.setSite("-");
- if("".equals(msg.getCont()))msg.setCont("这家伙很懒,什么都没留下");
- recordService.insertRecord(msg);
- return SUCCESS;
- }
- /**
- * 通过索引查找记录
- * @return the field msg
- * @throws Exception
- */
- public String listRecordByIndex() throws Exception{
- List<Record> list = recordService.listAllRecord();
- this.msg = list.get(this.getIndex());
- return SUCCESS;
- }
- /**
- * 删除对应id记录
- * @return field status. in order to update view with AJAX
- * @throws Exception
- */
- public String removeRecordById() throws Exception{
- String clientIpAddr = ServletActionContext.getRequest().getRemoteAddr();
- Record r = recordService.listRecordById(msg.getId());
- if(clientIpAddr.equals(r.getIpaddr())){
- recordService.removeRecordById(msg.getId());
- return SUCCESS;
- }
- status = 4;
- return SUCCESS;
- }
- /**
- * 获得分页数
- * @return pageSize using field page
- * @throws Exception
- */
- public String getPageSize() throws Exception{
- page = recordService.getPage();
- return SUCCESS;
- }
- }</SPAN>
public class CrudMsgAction extends ActionSupport{
private Record msg;
private int index;
private RecordService recordService;
private List<Record> records;
private int status = 0;
private int page = 0;
@JSON(serialize=false)
public RecordService getRecordService() {
return recordService;
}
//other getter and setter
@Override
public String execute() throws Exception {
return SUCCESS;
}
/**
* 返回所有记录的JSON数据
* @return list . All of the record.
* @throws Exception
*/
public String listAllRecord() throws Exception{
List<Record> list = recordService.listAllRecord();
// List list = Arrays.asList(allRecord);
// List<Record> list2 = (List<Record>)list;
// Record rec = (Record)list.get(0);
records = list;
return SUCCESS;
}
public String listAllRecordByPage() throws Exception{
List<Record> list = recordService.listAllRecord(page);
records = list;
return SUCCESS;
}
/**
* 插入记录
* @return update the view with AJAX when struts2 action return
* @throws Exception
*/
public String insertRecord() throws Exception{
//插入留言日期设置
msg.setAddDate(new Date());
//获取客户端ip,setIpaddr
String clientIpAddr = ServletActionContext.getRequest().getRemoteAddr();
msg.setIpaddr(clientIpAddr);
//判断是否为空
if("".equals(msg.getFrom()))msg.setFrom("anonymous");
if("".equals(msg.getMail()))msg.setMail("@");
if("".equals(msg.getSite()))msg.setSite("-");
if("".equals(msg.getCont()))msg.setCont("这家伙很懒,什么都没留下");
recordService.insertRecord(msg);
return SUCCESS;
}
/**
* 通过索引查找记录
* @return the field msg
* @throws Exception
*/
public String listRecordByIndex() throws Exception{
List<Record> list = recordService.listAllRecord();
this.msg = list.get(this.getIndex());
return SUCCESS;
}
/**
* 删除对应id记录
* @return field status. in order to update view with AJAX
* @throws Exception
*/
public String removeRecordById() throws Exception{
String clientIpAddr = ServletActionContext.getRequest().getRemoteAddr();
Record r = recordService.listRecordById(msg.getId());
if(clientIpAddr.equals(r.getIpaddr())){
recordService.removeRecordById(msg.getId());
return SUCCESS;
}
status = 4;
return SUCCESS;
}
/**
* 获得分页数
* @return pageSize using field page
* @throws Exception
*/
public String getPageSize() throws Exception{
page = recordService.getPage();
return SUCCESS;
}
}
在上面代码中,使用了JSON注释@JSON(serialize=false),
除此之外,JSON注释还支持如下几个域:
name:指定Action属性被序列化成JSON对象的属性名。
serialize:设置是否序列化该属性
deserialize:设置是否反序列化该属性。
format:设置用于格式化输出、解析日期表单域的格式。例如"yyyy-MM-dd'T'HH:mm:ss"。
- <SPAN style="FONT-SIZE: small"><?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <constant name="struts.objectFactory" value="spring"/>
- <package name="json" extends="json-default">
- <action name="ajaxRequest" class="com.jun.demos.struts2json.HelloWorld">
- <result type="json" />
- </action>
- <action name="listIndexRecord" class="com.jun.demos.book.action.CrudMsgAction">
- <result type="json" />
- </action>
- <action name="listAllRecord" class="com.jun.demos.book.action.CrudMsgAction" method="listAllRecord">
- <result type="json" />
- </action>
- <action name="listAllRecordByPage" class="com.jun.demos.book.action.CrudMsgAction" method="listAllRecordByPage">
- <result type="json" />
- </action>
- <action name="insertRecord" class="com.jun.demos.book.action.CrudMsgAction" method="insertRecord">
- <result type="json" />
- </action>
- <action name="removeRecordById" class="com.jun.demos.book.action.CrudMsgAction" method="removeRecordById">
- <result type="json" />
- </action>
- <action name="getPageIndex" class="com.jun.demos.book.action.CrudMsgAction" method="getPageSize">
- <result type="json" />
- </action>
- </package>
- </struts></SPAN>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.objectFactory" value="spring"/>
<package name="json" extends="json-default">
<action name="ajaxRequest" class="com.jun.demos.struts2json.HelloWorld">
<result type="json" />
</action>
<action name="listIndexRecord" class="com.jun.demos.book.action.CrudMsgAction">
<result type="json" />
</action>
<action name="listAllRecord" class="com.jun.demos.book.action.CrudMsgAction" method="listAllRecord">
<result type="json" />
</action>
<action name="listAllRecordByPage" class="com.jun.demos.book.action.CrudMsgAction" method="listAllRecordByPage">
<result type="json" />
</action>
<action name="insertRecord" class="com.jun.demos.book.action.CrudMsgAction" method="insertRecord">
<result type="json" />
</action>
<action name="removeRecordById" class="com.jun.demos.book.action.CrudMsgAction" method="removeRecordById">
<result type="json" />
</action>
<action name="getPageIndex" class="com.jun.demos.book.action.CrudMsgAction" method="getPageSize">
<result type="json" />
</action>
</package>
</struts>
配置该Action与配置普通Action存在小小的区别。
包继承了json-default包,而不再继承默认的default包,这是因为只有在该包下才有json类型的Result。
result可以使用<param name="excludeProperties">page,index</param>
排除Action中这些都不返回的属性.
结合action中属性getter方法注解@JSON(serialize=false)灵活配置
异常解决:
- Nested in javax.servlet.ServletException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: java.lang.reflect.InvocationTargetException:
- com.google.apphosting.utils.jetty.JettyLogger warn
Nested in javax.servlet.ServletException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: com.googlecode.jsonplugin.JSONException: java.lang.reflect.InvocationTargetException: com.google.apphosting.utils.jetty.JettyLogger warn
这里下面有4-5页的异常信息,就不贴出来了
解决方法:
出现这个问题是某属性通过串行化json数据异常,
因为使用的spring注入属性recordService,也就是提供了getter和setter,
而sturts-plugin是通过getterXxx把Xxx属性串行化输出JSON到客户端,
所以解决这个异常方法就是在不需要串行化的属性的getter前加上annotation,
就是@JSON(Serialize=false)
代码如:
发表评论
-
redis pipe大数据量导入
2015-07-06 18:48 14215由于做性能测试,需要往redis中导出千万 ... -
Tongweb、Tomcat远程调试
2014-04-15 21:01 3689在开发过程中经常需要对布署在远程的程序进行跟踪测 ... -
JAVA中Integer 和 int 的比较
2012-06-17 15:04 838http://topic.csdn.net/u/2012060 ... -
java给图片加水印,文字水印
2010-10-09 10:03 1163package com.newland.bi.tt; i ... -
jsp session 丢失
2010-04-19 20:37 23621.先访问a站点:http://192.168.18.2/te ... -
读取Properties的N种方法
2009-12-14 10:55 936如何读取资源文件:( ... -
Java正则表达式详解(上)
2009-03-28 10:24 956如果你曾经用过Perl或任 ... -
JAVA数据库基本操作指南
2009-03-28 10:04 964转自:http://www.qqread.com/java/2 ... -
不同Web主机上的Servlet之间数据对象的相互传输
2009-03-03 10:48 1280由于数据库服务器A和服务库服务器B之间存在着数据的交换,而WE ... -
与常用支付平台接口
2009-03-03 10:10 1368step-by-step集成阿里巴巴支付宝接口 http:// ... -
Java 6 RowSet 使用完全剖析(3)
2009-03-02 19:31 1194清单 24. 清单 23 中的代码执行结果 1 Tom Tom ... -
Java 6 RowSet 使用完全剖析(2)
2009-03-02 19:19 2005分页 由于 CachedRowSet 是 ... -
Java 6 RowSet 使用完全剖析(1)
2009-03-02 18:52 1893javax.sql.rowset 自 JDK 1.4 引入,从 ... -
关于log4j配置文档详解
2009-02-25 14:39 791一.参数意义说明输出级别的种类ERROR、WARN、INFO、 ... -
Log4j最简入门(很不错的Log4j入门)
2009-02-25 14:34 831<!--[if !supportLists]--> ... -
Java对象的序列化和反序列化实践
2008-12-29 14:38 919引:当两个进程在进行远 ... -
Java语言中的参数传递详解
2008-12-24 08:41 836和其它程序设计语言类 ... -
set map table list总结
2008-10-13 11:39 1417<转自>http://bluefishyong. ... -
多态的运用 实现java 数据类型判断
2008-09-03 12:54 2420package javaBasic;/** *//** * 用 ... -
java关于23种java关于23种设计模式的有趣见解 设计模式的有趣见解
2008-09-03 12:48 1360创建型模式 1、FACTORY— ...
相关推荐
在这个过程中,我们通常会用到`json2.js`库来处理JSON数据在JavaScript端的解析和序列化,以及Struts2的`jsonplugin`来支持JSON响应。 首先,让我们详细了解一下`json2.js`。这个JavaScript库是由Douglas Crockford...
为了支持JSON格式的数据交互,我们需要下载并引入JSON插件,如文中提到的jsonplugin-0.31.jar。 Spring框架是一个全面的Java企业级应用开发解决方案,涵盖了依赖注入(DI)、面向切面编程(AOP)、数据访问、事务...
import com.googlecode.jsonplugin.annotations.JSON; import com.opensymphony.xwork2.ActionSupport; public class JsonPluginAction extends ActionSupport { private static final long serialVersionUID =...
struts2+ajax+json需要的jar包:commons-beanutils-1.8.0.jar commons-lang-2.5.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar struts2-core-2.0.14.jar jsonplugin-0.32.jar
是struts的一个插件包
### Struts2 + jQuery + JSON 实现Ajax 在现代Web开发中,Ajax技术因其能够实现网页的局部刷新而被广泛采用。本篇文章介绍如何利用Struts2框架结合jQuery与JSON来构建一个简单的Ajax功能。 #### 一、环境搭建 1. ...
最新Struts2.3.8 + jquery + ajax + ... 注意:要导入import com.googlecode.jsonplugin.annotations.JSON; 4. 获取json中的数据可以通过访问对象的方式 如:json_targer.attributeName 访问attaributeName中的信息
使用技术:struts2(+jsonplugin-0.3) + Spring2.5 + iBatis2.3 + ExtJs3.0 使用的浏览器:Firefox3.0 数据库生成:train_s2sie3_v1.sql 测试数据:train_s2sie3_v1_data.sql 这个项目是在以前做过的一个小项目...
首先,为了使用JSON插件,你需要将下载的jsonplugin-0.7.jar文件复制到Web应用的WEB-INF/lib目录下。这样,JSON插件就会被Struts2框架自动加载,你可以在Action中利用它的功能。 在Action中,你可以定义各种属性来...
- 需要额外添加`jsonplugin-0.34.jar`包,以支持Struts 2 Action返回JSON格式的数据。 2. **实体类设计** - 定义一个通用的实体接口`BaseEntity`,其中包含一个公共方法`getId()`来获取实体的主键ID。 ```java ...
JSONPlugin是Struts2框架的一个插件,主要目的是为了支持JSON(JavaScript Object Notation)格式的数据交换,使得Struts2的应用能够与前端进行高效的JSON通信。JSON作为一种轻量级的数据交换格式,因其易于人阅读和...
在这个场景中,我们关注的是`jsonplugin-0.33.jar`,这是一个用于Struts2的插件,专门处理JSON(JavaScript Object Notation)数据格式的交互。 JSON是网络上数据交换的一种轻量级格式,因其简洁和高效而被广泛采用...
第一次上传,要5分,是物有所值,处理了jsonplugin 的no session的问题,并且添加了,新的注释,例如 @JSON(exclude='对象的名称') 就可以剔除 解决json与Hibernate之间的大部分问题 1.数据只取三层 2.对one-ton-many ,...
在提供的文档《Struts2_Jsonplugin_详解.doc》和《JsonPlugin 使用.docx》中,你应该能找到更具体的使用示例和详细配置信息。这些文档可能涵盖了如何处理集合类型、自定义类型转换器、错误处理以及与其他Struts2功能...
### Struts2 + jQuery 实现Ajax交互的关键技术与实践 #### 概述 在Web开发领域,使用Struts2框架结合jQuery实现Ajax交互是一种常见的做法。这种组合不仅可以提高Web应用程序的响应速度,还能显著提升用户体验。...
### Struts2+JSON 实现 AJAX 返回对象和列表 #### 一、背景介绍 随着Web技术的发展,Ajax(Asynchronous JavaScript and XML)已经成为现代Web应用不可或缺的一部分。它通过后台与前端进行异步数据交换和操作,使...
在原来的项目中集成juery的ajax功能,返回json串,结果报了一大堆版本冲突以及jar包缺失的问题,在网上查了老半天资料终于成功了,附传资源包以及我做的小例子大家共享下,注意...jsonplugin-0.34.jar xwork-2.1.2.jar
JSONPlugin-0.33.jar 是一个专门为Struts2框架设计的插件,主要用于扩展Struts2的功能,使其能够更好地支持JSON(JavaScript Object Notation)数据格式的处理。JSON是一种轻量级的数据交换格式,广泛应用于Web服务...