Struts Ajax Json

Netkiller Java 手札

Java, Servlet, JavaBean ...

5.4. Ajax + JSON

struts.xml 中加入

		<action name="Captcha" class="com.example.action.ajax.Captcha">
			<result name="success" type="json"></result>
		</action>		

Java 文件

		package com.example.action.ajax;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class Captcha extends ActionSupport {
	private static final long serialVersionUID = 7284583098398030297L;

	private String string1 = "A";
	private String[] stringarray1 = {"A1","B1"};
	private int number1 = 123456789;
	private int[] numberarray1 = {1,2,3,4,5,6,7,8,9};
	private List<String> lists = new ArrayList<String>();
	private Map<String, String> maps = new HashMap<String, String>();
	
	//no getter method, will not include in the JSON

	public Captcha(){
		lists.add("list1");
		lists.add("list2");
		lists.add("list3");
		lists.add("list4");
		lists.add("list5");
		
		maps.put("key1", "value1");
		maps.put("key2", "value2");
		maps.put("key3", "value3");
		maps.put("key4", "value4");
		maps.put("key5", "value5");
	}

	public String execute() {
               return Action.SUCCESS;
        }
	
	public String getString1() {
		return string1;
	}

	public void setString1(String string1) {
		this.string1 = string1;
	}

	public String[] getStringarray1() {
		return stringarray1;
	}

	public void setStringarray1(String[] stringarray1) {
		this.stringarray1 = stringarray1;
	}

	public int getNumber1() {
		return number1;
	}

	public void setNumber1(int number1) {
		this.number1 = number1;
	}

	public int[] getNumberarray1() {
		return numberarray1;
	}

	public void setNumberarray1(int[] numberarray1) {
		this.numberarray1 = numberarray1;
	}

	public List<String> getLists() {
		return lists;
	}

	public void setLists(List<String> lists) {
		this.lists = lists;
	}

	public Map<String, String> getMaps() {
		return maps;
	}

	public void setMaps(Map<String, String> maps) {
		this.maps = maps;
	}
	
}		

测试URL http://localhost:8080/ajax/Captcha.action

5.4.1. GET/POST JSON

struts.xml 文件加入 enableSMD

		<action name="Captcha" class="com.example.action.ajax.Captcha">
			<interceptor-ref name="defaultStack" />
			<interceptor-ref name="json">
				<param name="enableSMD">true</param>
			</interceptor-ref>
			<result name="success" type="json"></result>
		</action>			

Java 代码

			package com.example.action.ajax;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class Captcha extends ActionSupport {
	private static final long serialVersionUID = 7284583098398030297L;

	private String phone = "13113668890";
	private String email = "netkiller@msn.com";
	private Boolean status = false;
	
	//no getter method, will not include in the JSON

	public Captcha() {

	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String execute() {
		this.status = true;
		System.out.printf("%s, %s, %s, %b\n", this.getClass().getName(), this.getPhone(), this.getEmail(), this.getStatus());
		return Action.SUCCESS;
	}

	public String getPhone() {
		return this.phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public void setStatus(Boolean status) {
		this.status = status;
	}
	public boolean getStatus() {
		return this.status;
	}
}			

使用 curl 模拟 post 测试

			# curl http://192.168.4.34:8080/ajax/Captcha.do
{"email":"netkiller@msn.com","phone":"13113668890","status":true} 

# curl -X POST -H "Content-Type:application/json" -d '{"phone":"13066884444", "email":"neo.chan@live.com"}' http://192.168.4.34:8080/ajax/Captcha.do
{"email":"neo.chan@live.com","phone":"13066884444","status":true}			

GET 例子

			# curl "http://192.168.4.34:8080/ajax/Captcha.do?phone=13322993040&email=netkiller@mac.com"
{"email":"netkiller@mac.com","phone":"13322993040","status":true}			

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2015-12-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有趣的Python

9-C++远征之多态篇-学习笔记

使用父类指针指向子类对象,子类与父类有同名函数,加virtual成为虚函数,则调用相同的函数名的时候调用的是子类的函数。 不添加的时候,使用父类指针指向的是父类...

902
来自专栏猿人谷

对称字符串的最大长度

题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 思路...

2318
来自专栏韦弦的微信小程序

Swift 实现strStr() - LeetCode

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

732
来自专栏杂烩

使用javascript让项目支持热插拔 原

    突然想起之前做过的一个小项目,项目虽小,需求却不小,要求解析特定格式的字符串,并且特定格式并非一成不变,想要一套系统能够支持解析多变的规则且更改规则时不...

992
来自专栏Bingo的深度学习杂货店

Q167 Two Sum II - Input array is sorted

Given an array of integers that is already sorted in ascending order, find two n...

2665
来自专栏老马说编程

(50) 剖析EnumMap / 计算机程序的思维逻辑

查看历史文章,请点击上方链接关注公众号。 上节我们提到,如果需要一个Map的实现类,并且键的类型为枚举类型,可以使用HashMap,但应该使用一个专门的实现类E...

1808
来自专栏数据结构与算法

1009 产生数 2002年NOIP全国联赛普及组

009 产生数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 De...

2464
来自专栏数据结构与算法

计算(calc.cpp)

计算(calc.cpp) 【问题描述】 小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“...

34710
来自专栏cmazxiaoma的架构师之路

使用Hibernate、JPA、Lombok遇到的有趣问题

1374
来自专栏咸鱼不闲

jsoup爬虫工具的简单使用

解决方案: 1.通过url 获得doucment对象, 2.调用select()等方法获得Elements对象, 3.调用.text()等方法,获得自己想要的内...

944

扫码关注云+社区