`
PerfectPlan
  • 浏览: 122200 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2- Gson的使用

阅读更多

 

关于Struts2- Gson的使用

 

一、什么是Google-Gson?

:Gson这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。

Gson支持任意复杂Java对象包括没有源代码的对象。它的比struts2提供的json插件的操作更加简单明了。

二 、使用Google-Gson需要什么配置?

:我们需要下载Gson.jar将它放入web项目的lib包中

三、方法简介。

:Googe-Gson提供了两种重要的方法

1.toJson(); //将一个对象转换成JSON对象

2.fromJson();//将一个JSON对象转换成一个对象

//对于这两个方法有很多的重载方法

 

四、具体实例:

		JavaBean:
			package org.viancent.domain;

			import java.util.Date;

			import org.apache.struts2.json.annotations.JSON;

			public class Person {
				private int pid;
				private String pname;
				private int page;
				private String address;
				private Date date;
					
				public Date getDate() {
					return date;
				}

				public void setDate(Date date) {
					this.date = date;
				}

				public int getPid() {
					return pid;
				}

				public void setPid(int pid) {
					this.pid = pid;
				}

				public String getPname() {
					return pname;
				}

				public void setPname(String pname) {
					this.pname = pname;
				}

				public int getPage() {
					return page;
				}

				public void setPage(int page) {
					this.page = page;
				}

				public String getAddress() {
					return address;
				}

				public void setAddress(String address) {
					this.address = address;
				}
			}

  Action:

			package org.viancent.action;

			import java.io.PrintWriter;
			import java.lang.reflect.Type;
			import java.util.ArrayList;
			import java.util.List;

			import javax.servlet.http.HttpServletResponse;
			import javax.xml.crypto.Data;

			import org.apache.struts2.ServletActionContext;
			import org.apache.taglibs.standard.lang.jstl.parser.Token;
			import org.viancent.domain.Person;

			import com.google.gson.Gson;
			import com.google.gson.reflect.TypeToken;
			import com.opensymphony.xwork2.ActionSupport;

			public class GetGsonAction extends ActionSupport {

				private String Gson; //这里是为了获取界面传过来的JSON文本

				public String getGson() {
					return Gson;
				}

				public void setGson(String gson) {
					Gson = gson;
				}

				@Override
				public String execute() throws Exception {
					//创建一个集合
					List<Person> list = new ArrayList<Person>(); 

					//创建一个person对象
					Person person = new Person();
					person.setPid(1);
					person.setPname("张三");
					person.setPage(15);
					person.setDate(new Date());
					
					//创建一个person对象
					Person person1 = new Person();
					person1.setPid(2);
					person1.setPname("李四");
					person1.setPage(20);
					person1.setDate(new Date());
					
					//将person对象添加到集合中去
					list.add(person);
					list.add(person1);
					
					//创建Gson对象
					Gson gson  =  new Gson();
					//使用toJson方法将集合转换成String数组
					String result = gson.toJson(list);
					
					//创建HttpServletResponse
					HttpServletResponse response = ServletActionContext.getResponse();
					
					//设置编码格式,以及信息类型  及 是否有缓存的设置
					response.setContentType("application/json;charset=utf-8");
					
					response.setHeader("caChe-Control", "no-cache");
					
					//创建PrintWriter 对象 将信息写入到Reponse中
					PrintWriter out =response.getWriter();
					
					out.print(result);
					
					//清空缓存
					out.flush();
					
					//关闭
					out.close();
					
					/*************************************测试 GSON的fromJson方法**********************************************************/
					//创建fromJson转换时需要的类型,注意对于特殊的结合需要使用这个方法,其他普通对象则可以直接使用 *.class
					 Type listtype = new TypeToken<List<Person>>() {}.getType();//这里使用了一个匿名类
					 //使用Gson的fromJson方法
					 /*
					  * 这里我们选择有两个参数的重在方法 fromJson(String,class<T>);
					  * 
					  * String :需要转换成集合的JSON文本	
					  * 
					  * class<T> :转换集合的类型
					  * */
					 List<Person> lists = gson.fromJson(this.getGson(), listtype);
					 //输入信息
					 System.out.println(lists.get(0).getPname());
					 
					return null;
				}

			}			

  JSP:

			<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

			<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
			<html>
				<head>
						<script type="text/javascript" src="WEB-JS/jquery-1.5.1.js"></script>
				</head>

				<body id="theBody">
				<script type="text/javascript">
				function getAllInfo() {
				$.post("/struts2/getgsons.action", {
				Gson:"[{'pid':1,'pname':'张三','page':15,'date':'2011-3-21 15:36:52'},{'pid':2,'pname':'李四','page':19,'date':'2012-3-21 15:36:52'}]"
					}, function(returnedData, status) {
						if ("success" == status) {
							for ( var i = 0; i < returnedData.length; i++) {
									alert(returnedData);
							}
						}
					})
				}
				</script>
				<input type="button" value="Get All Info" onclick="getAllInfo();">
				</body>
				
			</html>

  Gson下载地址: 

http://code.google.com/p/google-gson/downloads/detail?name=google-gson-2.2.1-release.zip
 

 

2
2
分享到:
评论

相关推荐

    struts2-json

    使用Struts2的JSON功能时,需要注意安全问题。由于JSON可以暴露敏感信息,应避免在JSON响应中包含敏感数据。此外,Struts2的JSON漏洞曾引起广泛关注,因此保持框架版本的更新至关重要,以修复可能的安全漏洞。 8. ...

    struts2~json~gson~jquery~ajax简单应用

    - gson-1.5.jar #### 四、示例实现 以下是一个简单的示例,展示了如何使用Struts2结合Gson和jQuery实现Ajax请求: 1. **Index.jsp页面**:展示了一个按钮,点击按钮时触发Ajax请求。 ```html ...

    Struts2-Json-Plugin 的使用.docx

    在Struts2中,如果没有使用Struts2-Json-Plugin,开发人员需要手动利用如XStream、Google Gson或Jackson等工具将Java对象转换为JSON字符串,然后将其写入Response。这样做不仅需要编写更多的代码,还需要关注字符集...

    struts2-jsondemo

    5. **Action中的JSON处理**:在Action中,我们可以使用Struts2提供的`@ResultType("json")`注解或者在配置文件中声明结果类型,使得Action可以直接返回Java对象,Struts2会自动将其转换为JSON。 6. **JSONParam注解...

    struts2所需的包和Struts2_json所需包

    - `jackson-*.jar` 或 `gson-*.jar`:这两个库提供了JSON对象和Java对象之间的自动转换,Struts2可以与它们集成,使得JSON处理更加便捷。 4. **Servlet容器相关库**:由于Struts2是基于Servlet API的,因此需要`...

    Struts-2.3.15.3

    为了正确地使用Struts2框架,开发者需要理解其配置机制,包括struts.xml文件的编写,Action类的设计,以及视图层的实现。同时,掌握OGNL表达式和拦截器的使用也是必不可少的。通过熟练运用这些知识点,可以构建出...

    struts-2.5-lib

    7. **Java Annotation Support**:Struts 2 支持使用注解来配置Action、结果、拦截器等,因此JDK的注解库(如 `java.lang.annotation`)也会包含在lib中。 8. **Other Libraries**:可能还会有其他依赖库,如 JSON ...

    Struts2 必需类库.zip

    在实际开发中,你需要将这些类库添加到你的项目类路径中,然后按照Struts2的规范编写Action、配置Struts2 XML文件,使用Interceptor实现额外的功能,并通过ValueStack和视图技术展示数据。通过这些组件的组合,你...

    271个java需要用的jar包

    gson-2.2.4.jar guava-r09.jar httpclient-4.4.jar httpcore-4.4.jar jackson-annotations-2.5.0.jar jackson-core-2.5.0.jar jackson-core-asl-1.9.2.jar jackson-databind-2.3.4.jar jackson-databind-2.5.0.jar ...

    Struts2搭建简易javaWeb后台

    通过这个简单的例子,我们了解了如何使用Struts2和Gson构建一个处理HTTP请求并返回JSON响应的JavaWeb应用程序。Struts2提供了丰富的功能,如拦截器、结果类型、插件等,可以实现更复杂的业务逻辑和交互。而Gson库则...

    lib_struts-2.0.12

    因此,对于新项目,建议使用更新且稳定版本的Struts2,以确保应用的安全性和性能。同时,随着Java和Web技术的发展,Struts2也需要与其他现代框架(如Spring Boot)结合,以适应不断变化的技术环境。 总的来说,...

    Struts2返回json -- demo

    例如,你可以使用Gson库或其他序列化库来自定义JSON序列化逻辑,或者使用`@JSON(serializeNulls=false)`注解来避免序列化null值。 这篇博客可能会详细介绍以上步骤,并给出一个简单的示例,展示如何通过Struts2创建...

    struts2和json的jar包

    4. `jackson*.*.jar` 或 `gson-*.jar`: 这些是其他的JSON库,例如Jackson或Gson,它们也可以与Struts2一起工作,提供更灵活的对象-JSON绑定。 导入这些jar包后,开发者可以在Struts2配置文件中定义JSON结果类型,...

    最新版本的Struts2+Spring4+Hibernate4三大框架整合(改进:增加整合Quartz和Gson)

    1、 同时使用了Struts2、Spring4、Hibernate4、Quartz、JUnit4、Log4j、SLF4J、Ehcache、Gson等库或框架,搭建一个最基本的项目原型。 2、 Spring配置提供了多种可选整合方案:详见applicationContext.xml的配置 (1...

    AJAX和struts2传递JSON数组

    这告诉Struts2框架当收到名为`struts2Action`的请求时,使用`Struts2Action`类,并返回JSON格式的结果。如果需要在Action执行后返回一个页面,可以将`result`元素的类型改为`dispatcher`。 总结来说,通过这种方式...

    json+struts2的jar

    JSON(JavaScript Object Notation)和Struts2是两个在Web开发中广泛使用的技术。JSON是一种轻量级的数据交换格式,它允许数据以键值对的形式进行传输,易于人阅读和编写,同时也方便机器解析和生成。而Struts2是一...

    Eclipse+Struts2+Spring+MyBatis+json+gson环境搭建

    在本文中,我们将探讨如何在Eclipse环境中搭建一个基于Struts2、Spring、MyBatis的SSM框架,并结合JSON和Gson库进行开发。首先,我们需要准备相关的安装文件,包括Struts2、Spring、MyBatis、jQuery、Eclipse IDE...

    struts2_JSONObjec的使用

    3. jackson或者gson相关的jar包,因为Struts2也支持使用Jackson或Gson进行JSON转换。 这些jar包可以通过Maven或Gradle等构建工具引入,或者手动添加到项目的类路径中。 二、前台代码 在前端,通常使用JavaScript来...

    Struts2+Json+Android简单实现

    2. **客户端**:在Android应用中,使用HttpURLConnection或者第三方库如Volley、OkHttp发起HTTP请求到服务端的Struts2 Action。收到响应后,使用Gson或Jackson库解析JSON数据。 3. **数据处理**:解析后的JSON数据...

    struts dom4j json gson xml 拦截器 类型转换

    Struts、DOM4J、JSON、Gson与XML都是在IT行业中常见的技术,尤其是在Web开发领域。这些技术分别扮演着不同的角色,共同构建了高效、灵活的Web应用程序。以下是关于这些技术的详细解释: 1. **Struts**: Struts是...

Global site tag (gtag.js) - Google Analytics