- 浏览: 390812 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (198)
- java (28)
- J2EE (19)
- struts (33)
- sping (13)
- hibernate (18)
- mybatis (15)
- connection pool (3)
- DB (26)
- SQL (21)
- html (13)
- js (7)
- json (3)
- jquery (2)
- document (17)
- linux (15)
- C# (1)
- url (2)
- eweb4j (1)
- Turbine (1)
- 框架 (11)
- jdbcTemplate (3)
- aop (2)
- windows (2)
- ubuntu (1)
- eclipse (11)
- JPA (8)
- svn (4)
- get 传值 (2)
- mysql (5)
- oracle (2)
- hadoop (1)
- MongoDB (2)
- spring (1)
- python (1)
最新评论
-
jcbingjc:
楼主,你好,按照上面的配置,我报如下错误:Missing Pe ...
[properJavaRDP]在网页中实现远程连接 -
sucful:
折腾了半天跑不通 ,要传就搞个完整的吧
Struts2 <sx:div/>实现页面模块异步刷新 -
Kattou:
你好! 看了你写的这个分页 感觉很好, 但是不怎么会用么,请指 ...
jsp分页控件 -
我叫PSB:
地址完全用不了
eclipse中的安装 jseclipse -
1111emotion:
我的工程里还是有乱码的情况,我该改的地方都改了。
Eclipse/MyEclipse更改默认字符集 设置UTF-8
1、index.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用JSON插件</title> <script src="prototype-1.6.0.3.js" type="text/javascript"> </script> <script src="json2.js" type="text/javascript"> </script> <script type="text/javascript"> function gotClick() { alert('ss'); //请求的地址 var url = 'JSONExample.action'; //将favorite表单域的值转换为请求参数 var params = Form.serialize('form1'); //创建Ajax.Request对象,对应于发送请求 var myAjax = new Ajax.Request( url, { //请求方式:POST method:'post', //请求参数 parameters:params, //指定回调函数 onComplete: processResponse, //是否异步发送请求 asynchronous:true }); } function processResponse(request) { //使用JSON对象将服务器响应解析成JSON对象 var res = JSON.parse(request.responseText); //遍历JSON对象的每个属性 for(var propName in res) { $("show").innerHTML += propName + " --> " + res[propName] + "<br />"; } } </script> </head> <body> <form id="form1" name="form1" method="post"> field1:<input type="text" name="field1" id="field1"/><br /> field2:<input type="text" name="field2" id="field2"/><br /> field3:<input type="text" name="field3" id="field3"/><br /> <input type="button" value="提交" onClick="gotClick();"/> </form> <div id="show"> </div> </body> </html>
2、S<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.i18n.encoding" value="UTF-8"/> <package name="example" extends="json-default"> <action name="JSONExample" class="lee.JSONExample"> <result type="json"/> </action> <action name=""> <result>.</result> </action> </package> </struts>
3、JSONExample Action类
package lee; import java.util.HashMap; import java.util.Map; import com.opensymphony.xwork2.Action; import com.googlecode.jsonplugin.annotations.JSON; public class JSONExample { //模拟处理结果的属性 private int[] ints = {10, 20}; private Map map = new HashMap(); private String customName = "顾客"; //封装请求参数的三个属性 private String field1; private String field2; //没有setter和getter方法的字段不会被序列化 private String field3; public String execute() { map.put("name", "李刚"); return Action.SUCCESS; } //使用注释语法来改变该属性序列化后的属性名 @JSON(name="newName") public Map getMap() { return this.map; } //ints属性的getter方法 public int[] getInts() { return this.ints; } //customName属性的setter和getter方法 public void setCustomName(String customName) { this.customName = customName; } public String getCustomName() { return this.customName; } //field1属性的setter和getter方法 public void setField1(String field1) { this.field1 = field1; } public String getField1() { return this.field1; } //field2属性的setter和getter方法 public void setField2(String field2) { this.field2 = field2; } public String getField2() { return this.field2; }
}
5.如果按照3中的配置。你会发现前台返回的json字符串,是把action中的所有属性全部转化为json字符串返回给浏览器了(甚至有时候返回不了结果,也不报错,后台执行了,但前台执行不到callback function),但是我们有时候需要根据实际情况返回部分结果,如何对json的结果进行定制输出呢?result提供了一些参数替你解决这个问题,一般情况下用的最多的就是includeProperties 参数和excludeNullProperties参数。当然还有其他的方法,如给pojo的属性加json注解。
6.includeProperties 参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。这个参数直接返回对象的json数据,前台不需要eval转换,<param name="root">result</param>则不同,需要前台进行eval转换
如:输出person的所有属性
<result type="json">
<param name="includeProperties">person.*, person\.name</param>
</result>
7.excludeProperties 参数:输出结果需要剔除的属性值,也支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式,类同includeProperties
8.输出一个JSON List列表
<action name="list" class="testAction" method="list">
<result name="success" type="json">
<param name="includeProperties">
list\[\d+\]\.Id,list\[\d+\]\.user\.userName
</param>
</result>
</action>
其中list是action中的一个List类型的属性
list\[\d+\]\.Id表示,list中存储的对象0..end的Id属性(list中存储的对象必须有Id属性)。
list\[\d+\]\.user\.userName就表示list中的对象中的user对象的userName属性
9.为什么要用includeProperties或者excludeProperties 参数:
主要是为了过滤掉接口,pojo的set、list、其他对象等不需要的数据防止循环取其他对象或找不到。如果不配置,默认是处理action中的所有属性,如果action中有接口注入,json拦截器可能找不到返回不了结果,还有如果action中有一个对象,这个对象与好多对象都有关联,json拦截器会将相关联的所有对象的属性全部转换成json格式,如果其他对象有list、set,其返回结果...有可能是死循环,无法返回
10.总结:
action中避免使用get开头的action方法,去掉action中的接口的get方法
为json类型的result配置includeProperties, excludeProperties等参数.
发表评论
-
quartz 时间配置规则
2016-05-28 02:19 0quartz 时间配置规则 格式: [秒] [分] [小时 ... -
Struts2.1.8升级到Struts2.3.15.1的时候遇到了问题
2013-08-09 10:14 1960我把原来的Struts2.1.8升级到Struts2.3. ... -
J2EE RMI搭建
2012-10-08 13:21 1682RMI接口: package com.ynitil.sinf ... -
struts2 url传值中文乱码解决方案
2012-09-21 16:21 1383HttpServletRequest request = Ac ... -
关于JAVA中URL传递中文参数,取值是乱码的解决办法
2012-07-03 14:04 1382今天遇到一个问题就是在Action当中把一条中文信息绑定在UR ... -
JSP的九个隐含对象,EL表达式中的11个隐含对象,JSP的6个基本动作
2012-07-03 09:37 1568一、page 对象 page对 ... -
java去除html格式,提取文字信息
2012-05-25 11:13 11099import java.util.regex.Matcher; ... -
使用struts2中的ognl表达式调用类方法
2012-04-19 09:35 1323struts标签中value都会被解析,如,<s:pro ... -
使用struts2中的ognl表达式调用类方法(转)
2012-04-15 16:54 1245struts标签中value都会被解析,如,<s:pro ... -
Struts2 get 传值乱码过滤器配置
2012-04-15 16:31 1319package cn.org.du.Encode; im ... -
struts2 url传值中文乱码解决方案
2012-04-15 15:51 1472HttpServletRequest request ... -
java.lang.OutOfMemoryError: Java heap space 解决方法
2012-04-09 11:12 994java.lang.OutOfMemoryError: Jav ... -
SmartUpload 下载文件
2012-04-01 18:51 1185<%@ page contentType="t ... -
纯css的防止图片撑破页面的代码(图片自动缩放)
2012-04-01 17:06 1158<!DOCTYPE html PUBLIC " ... -
struts2 result type 介绍
2012-03-23 09:14 1094在默认时,<result>标签的type属性值是“ ... -
Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效
2012-03-08 17:43 1922问题:在Struts2中<jsp:forward pag ... -
Struts2整合Spring、JPA
2012-02-27 09:46 1874一直觉得JPA很神秘,最近抽空看了下,下面贴出刚才做的St ... -
HTMLParser抓取网页信息
2011-12-07 09:19 1890HTMLParser具有小巧,快速 ... -
HTML中,小<meta>的大作用
2011-12-01 17:50 1103meta是用来在HTML文档中模拟HTTP协议的响应头报文。 ... -
JAVA三大框架的各自作用
2011-11-25 00:04 3148一、Spring Spring是 ...
相关推荐
讲述了JQuery,JSON,Struts2实现Ajax异步请求
该资源是使用struts2框架进行操作,返回json格式数据,前台通过ajax提交内容。
struts2 json
struts2-json-plugin,Struts JSON插件
struts2的ajax异步请求访问方式,不采用servlet的writer模式
Ajax与Struts2结合,实现异步请求数据
struts2 json plugin jar包
NULL 博文链接:https://huibin.iteye.com/blog/586035
struts2整合json的插件struts2-json-plugin源码,不是jar包
Struts2+Json+Android简单实现,StrutsJson为服务端代码,JSONDemo为Android端代码
ajax与struts2,json结合实现异步交互,网页的局部刷新。当初在网上没找到全的,希望这个对刚接触的人有所帮助啊\(^o^)/~
struts2 json extjs 完整实例 struts2 json extjs 完整实例 完整可用 无错! struts2 json extjs 完整实例 struts2 json extjs 完整实例 完整可用 无错! struts2 json extjs 完整实例 struts2 json extjs 完整...
jquery和struts2结合使用的jar包
struts2所需的包和Struts2 json所需包,直接导进去就能用,很适合新手开发以及测试Struts2返回json格式的数据。
struts2下通过jquery的ajax从后台传json对象并展示在web页面上的一个小例子,所需的jar包请自己下载否则无法运行,所需的包包括struts的必须包,json的支持包和struts对json的支持包
如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择。... Struts2返回JSON有两种方式:1.使用Servlet的输出流写入JSON字符串;2.使用Struts2对JSON的扩展。
赠送jar包:struts2-json-plugin-2.3.24.jar; 赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-...
struts2与json整合,可进一步讨论
(struts2 json Ajax 整合所需全部jar包
struts整合json用到Jar.zip ,struts整合json用到Jar.zip