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

struts2学习之二-json插件

阅读更多
struts2学习之一:http://arthur2014.iteye.com/admin/blogs/2162974
struts2学习之三-spring注解:http://arthur2014.iteye.com/admin/blogs/2162996
struts2学习之四-struts2注解:http://arthur2014.iteye.com/admin/blogs/2163348

增加的jar包是struts2-json-plugin
1、修改struts.xml文件,package不再继承struts-default,而要继承json-default,修改如下:
<?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>
	<package name="test" extends="json-default" namespace="/a">
		<interceptors>
			<interceptor-stack name="paramStack">
				<interceptor-ref name="json" /><!-- 参数以json格式传输 -->
				<interceptor-ref name="defaultStack" />
			</interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="paramStack" />

		<global-results>
			<result name="json" type="json">
				<!-- false表示父类的属性在在json中返回 -->
				<param name="ignoreHierarchy">false</param>
			</result>
		</global-results>
	</package>
</struts>

2、抽象action父类:
package com.haochen.action;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 
 * @title
 * @Description 属性作为json格式参数时必需要有set方法,作为json格式返回值时必需要有get方法
 * @author chenhao
 * @date 2014年12月3日 上午10:14:48
 * @version 1.0
 */
public abstract class BaseJsonAction extends ActionSupport {
	/**
	 * 
	 */
	private static final long serialVersionUID = 8670042218701228785L;

	protected static final String JSON = "json";
	private Object data;
	private boolean success;
	private int errorCode;
	private String errorMsg;

	@Override
	public abstract String execute() throws Exception;

	public void success() {
		this.success = true;
	}

	public void success(Object data) {
		this.data = data;
		this.success = true;
	}

	public void fail() {
		this.success = false;
	}

	public void fail(int errorCode, String errorMsg) {
		this.success = false;
		this.errorCode = errorCode;
		this.errorMsg = errorMsg;
	}

	public Object getData() {
		return data;
	}

	public boolean isSuccess() {
		return success;
	}

	public int getErrorCode() {
		return errorCode;
	}

	public String getErrorMsg() {
		return errorMsg;
	}

}

3、实现类UserJsonAction,以后的注解练习都会基于这个类写:
package com.haochen.action;

import com.haochen.vo.User;

/**
 * 
 * @title
 * @Description
 * @author chenhao
 * @date 2014年12月3日 下午7:00:08
 * @version 1.0
 */
public class UserJsonAction extends BaseJsonAction {
	/**
	 * 
	 */
	private static final long serialVersionUID = -5818584581746655517L;
	private User user;
	private String name;

	@Override
	public String execute() throws Exception {
		user = new User();
		user.setName("tom");
		user.setAge(18);
		user.setSex('M');

		/**
		 * 1、返回值为JSON,配置文件struts.xml中的<action></action>不用设置<result
		 * type="json"></result>。
		 * 2、返回值为SUCCESS,配置文件struts.xml中的<action></action>需要设置<result
		 * type="json"></result>。
		 **/
		return JSON;
	}

	public User getUser() {
		return user;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

User.java
package com.haochen.vo;

import java.io.Serializable;

public class User implements Serializable {
	private String name;
	private int age;
	private char sex;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		this.sex = sex;
	}

}

4、编写result.jsp,以ajax方式获取数据:
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>

<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="<%=path%>/js/jquery-1.8.0.min.js"></script>
</head>
<body>
	世界,你好.
	<br>
</body>

<script type="text/javascript">
	$(document).ready(function() {
		$.ajax({
			type : "post",
			url : "userJson.action?name=tom",
			dataType : "json",
			success : function(data) {
				alert(data.data.name);
			},
			error : function(XMLHttpRequest, textStatus, errorThrown) {
				alert(errorThrown);
			}
		});
	});
</script>
</html>

5、在struts.xml文件中添加如下代码:
<action name="userJson" class="com.haochen.action.UserJsonAction"></action>

6、发布,访问http://localhost:8080/struts2demo/a/helloworld.action,提示“tom”表示成功。
分享到:
评论

相关推荐

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    `struts2-json-plugin-2.1.8.1.jar` 则是Struts 2框架的一个插件,主要用于增强Struts 2对JSON的支持。Struts 2是一款非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个插件允许...

    struts2-json-plugin

    struts2-json-plugin,Struts JSON插件

    struts2-json-plugin-2.3.8.jar

    在实际开发中,为了使用这个插件,你需要将`struts2-json-plugin-2.3.8.jar`文件放入项目的类路径(classpath)下,然后在Struts2的配置文件(通常为struts.xml)中启用JSON插件。在Action类中,定义返回JSON数据的...

    struts2-json-plugin源码

    在Struts2中,通过整合JSON插件,可以方便地将Action的返回结果转换为JSON格式,供前端JavaScript处理。 `struts2-json-plugin`是Struts2的一个插件,它使得Struts2能够处理JSON请求和响应,无需额外的配置或库。这...

    struts2 相关jar包 包含json-lib-2.1.jar+struts2-json-plugin-2.1.8.1.jar

    使用Struts2 JSON插件时,需要注意JSON/XML注入的安全风险。攻击者可能尝试通过构造恶意输入来操纵JSON响应,因此确保对用户输入进行适当验证和过滤至关重要。 6. **性能优化**: - 对于大型应用,可以通过调整...

    struts-json-plugin-2.1.8.jar struts2-junit-plugin-2.1.8.jar json-lib-2.1.jar

    首先,我们来看`struts-json-plugin-2.1.8.jar`,这是Struts2的JSON插件,它允许Struts2的动作类直接返回JSON格式的数据,方便前端进行Ajax请求处理。该插件在2.1.8版本中修复了若干bug,并提供了对JSON输出的支持。...

    struts2-json-plugin-2.1.8.1.jar

    标题"struts2-json-plugin-2.1.8.1.jar"表明这是Struts2 JSON插件的一个特定版本,2.1.8.1。在软件开发中,版本号的更新通常意味着修复了已知的错误,增加了新的特性,或者提高了性能。 "JsonPlugin.tld"是Tag ...

    struts2-json-plugin-2.1.8jar包.zip

    要使用此插件,首先需要在Struts2的配置文件(如struts-default.xml或struts-plugin.xml)中引入JSON插件的配置,通常会添加以下XML代码: ```xml &lt;constant name="struts.enable.SlashesInActionNames" value=...

    struts-ajax-json-struts包

    在Struts中,可以使用Struts2的JSON插件(Struts2-Json-plugin)来支持JSON的序列化和反序列化,使得服务器端的Java对象可以直接转换为JSON格式,发送到客户端,然后由JavaScript解析并操作。 在Struts-AJAX-JSON-...

    struts2--json包

    1. **配置JSON插件**:首先,要在Struts2中启用JSON支持,我们需要在`struts.xml`配置文件中添加JSON插件的配置。这通常包括注册插件以及指定哪些Action需要返回JSON响应。 ```xml &lt;constant name="struts.enable....

    struts2-json-lib

    首先,这个压缩包中可能包含了`struts2-json-plugin-x.x.x.jar`,这是Struts2的JSON插件,它扩展了Struts2的核心功能,允许Action结果以JSON格式返回。这个插件实现了将Action的属性自动转换为JSON对象的功能,简化...

    struts2-json

    Struts2提供了JSON插件,允许开发者在Action类中返回JSON响应。安装插件后,只需在Action配置中启用JSON支持,就能自动处理JSON输出。 2. **Action配置**: 在Struts2的配置文件(struts.xml或struts.properties)...

    struts2----json----jquery小案例

    标签中的"源码"可能意味着博客包含了实现这一功能的具体代码示例,而"工具"可能指的是使用到的Struts2插件或其他辅助工具。 通过这样的案例,开发者能够理解如何在Struts2应用中使用JSON和jQuery进行前后端数据交互...

    struts 2.0 与 2.1 需要的json插件

    在Struts 2的早期版本中,如2.0和2.1,为了支持JSON(JavaScript Object Notation)数据交换格式,开发者需要额外安装和配置JSON插件。JSON在Web应用中广泛用于前后端的数据传输,因为它轻量级、易于阅读和编写,...

    使用Struts2的JSON插件来实现JSON数据传递

    Struts2的JSON插件正是为了方便开发者在Struts2框架中处理JSON数据而设计的。 首先,让我们深入了解JSON。JSON是一种独立于语言的数据交换格式,具有易于人阅读和编写,同时也易于机器解析和生成的特点。它的数据...

    struts2-json-plugin-2.2.3 源码

    struts2-json-plugin-2.2.3-sources.jar 源码

    struts-2.5.20-all(含struts2-json-plugin.jar)jar资源

    在实际开发中,使用Struts 2 JSON插件可以提升Web应用的响应速度和用户体验,特别是在构建RESTful API或者需要与前端进行JSON数据交互的应用中。 总结来说,"struts-2.5.20-all"压缩包提供了完整的Struts 2框架,...

    (struts2-json-plugin-2.2.1)struts2 json-default配置中需要的jar包

    在使用Struts2的JSON插件时,为了确保一切正常运行,我们需要在项目中包含一些必要的JAR包。`struts2-json-plugin-2.2.1`这个版本的插件,意味着它是Struts2框架的2.2.1版本中的JSON支持。以下是这个插件正常工作所...

Global site tag (gtag.js) - Google Analytics