目的

在struts2中使用JQuery、JSON、AJAX等技术处理用户请求,并返回结果。返回结果可以是以JSONObject的方式返回,也可以是以JSONArray方式返回结果。

实现

1. 创建表示层JSP(testJJA.jsp)

此JSP也用于处理返回结果,因为是AJAX方式提交的,并不需要另外的显示页面。

<%@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="../../js/jquery.js"></script>
<script type="text/javascript" src="../../js/json2.js"></script>
<script>
function entity(param1, param2, bigtext) {
this.param1 = param1;
this.param2 = param2;
this.bigtext = bigtext;
} function ajaxTransferText(which) {
var bigtext = document.getElementById("BigText").value;
var postParams = JSON.stringify(new entity("张三","密码123",bigtext)); if(which == 'object') {
$.post("testjja.action", {
jsonString : postParams,
}, function (dataParam, textStatus){
// 返回的是JSONObject
alert(dataParam.param1 + "|" + dataParam.status);
},"json");
}else {
$.post("testjja!getArray.action", {
jsonString : postParams,
}, function (dataParam, textStatus){
// 返回的是JSONArray
var showValue = "";
for(var i=0; i<dataParam.length; i++) {
showValue = showValue + dataParam[i] + "\n";
} alert(showValue);
},"json");
}
}
</script>
</head>
<body>
<textarea name="textarea" id="BigText" cols="45" rows="5">需要提交的信息主体...</textarea>
<br/>
<input type="button" value="提交试试(Object)" onclick="ajaxTransferText('object')"/>&nbsp;&nbsp;
<input type="button" value="提交试试(Array)" onclick="ajaxTransferText('array')"/>
</body>
</html>

2. 创建处理Action类

package com.clzhang.ssh.demo7;

import java.io.*;
import java.util.*; import net.sf.json.JSONObject;
import net.sf.json.JSONArray;
import org.apache.struts2.ServletActionContext; public class TestJJAAction {
private String jsonString; public String getJsonString() {
return jsonString;
} public void setJsonString(String jsonString) {
this.jsonString = jsonString;
} // 以JSONArray方式返回数据
public String getArray() throws IOException {
System.out.println("jsonString=" + jsonString); JSONObject jsonObject = JSONObject.fromObject(jsonString);
System.out.println("param1=" + jsonObject.get("param1"));
System.out.println("param2=" + jsonObject.get("param2"));
System.out.println("bigtext=" + jsonObject.get("bigtext")); List<String> aList = new ArrayList<String>();
aList.add("param1=" + jsonObject.get("param1"));
aList.add("param2=" + jsonObject.get("param2"));
aList.add("bigtext=" + jsonObject.get("bigtext"));
aList.add("status:成功受理请求!");
JSONArray jsonArray = JSONArray.fromObject(aList); ServletActionContext.getResponse().setContentType("text/html");
ServletActionContext.getResponse().setCharacterEncoding("utf-8");
ServletActionContext.getResponse().getWriter().printf(jsonArray.toString());
ServletActionContext.getResponse().getWriter().flush();
ServletActionContext.getResponse().getWriter().close(); return null;
} // 以JSONObject方式返回数据
public String execute() throws IOException {
System.out.println("jsonString=" + jsonString); JSONObject jsonObject = JSONObject.fromObject(jsonString);
System.out.println("param1=" + jsonObject.get("param1"));
System.out.println("param2=" + jsonObject.get("param2"));
System.out.println("bigtext=" + jsonObject.get("bigtext")); JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("param1", jsonObject.get("param1"));
jsonObject2.put("param2", jsonObject.get("param2"));
jsonObject2.put("bigtext", jsonObject.get("bigtext"));
jsonObject2.put("status","成功受理请求!");
System.out.println(jsonObject2.toString());
ServletActionContext.getResponse().setContentType("text/html");
ServletActionContext.getResponse().setCharacterEncoding("utf-8");
ServletActionContext.getResponse().getWriter().printf(jsonObject2.toString());
ServletActionContext.getResponse().getWriter().flush();
ServletActionContext.getResponse().getWriter().close(); return null;
}
}

3. 修改配置文件struts.xml

        <action name="testjja" class="com.clzhang.ssh.demo7.TestJJAAction">
</action>

4. 测试

打开IE,输入地址:http://127.0.0.1:8080/st/ssh/demo7/testJJA.jsp

效果如下:

单击“提交试试(Object)”按钮后,结果如下:

单击“提交试试(Array)”按钮后,效果如下:

struts2:使用JQuery、JSON和AJAX处理请求的更多相关文章

  1. 用jQuery和Json实现Ajax异步请求

    这里有两个例子,一个是关于登录验证的,一个是异步加载数据的 1.regist.jsp <%@ page language="java" import="java.u ...

  2. jQuery:SP.NET Autocomplete Textbox Using jQuery, JSON and AJAX

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="jQueryAutocomp ...

  3. jQuery:多个AJAX/JSON请求对应单个回调并行加载

    因为我们使用jQuery,这意味着需要调用 jQuery.getScript 和 jQuery.getJSON 函数. 我知道这些函数都是异步执行(asyncronously)并且会延迟一段时间返回, ...

  4. jquery的ajax异步请求接收返回json数据

    http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...

  5. JQuery Ajax 设置请求头信息application/json

    今天有个api后台接application/json格式的 在Jquery里$.ajax默认是contentType: application/x-www-form-urlencoded; chars ...

  6. jQuery:多个AJAX/JSON请求对应单个回调

    原文链接:jQuery: Multiple AJAX and JSON Requests, One Callback 原文日期: 2014年4月15日 翻译日期: 2014年4月22日 翻译人员: 铁 ...

  7. jQuery:多个AJAX/JSON请求相应单个回调

    原文链接:jQuery: Multiple AJAX and JSON Requests, One Callback 原文日期: 2014年4月15日 翻译日期: 2014年4月22日 翻译人员: 铁 ...

  8. jQuery实例之ajax请求json数据案例

    今天有这样一个需求,点击六个大洲,出现对应的一些请求信息,展示在下面,请求请求过后,第二次点击就无需请求.如图所示:点击北美洲下面出现请求的一些数据 html代码结构: <div class=& ...

  9. struts2 + jquery + json 简单的前后台信息交互

    ajax 是一种客户端与服务器端异步请求的交互技术.相比同步请求,大大提高了信息交互的速度和效率.是当下非常实用和流行的技术. 这里简单的说明 struts2 + jquery + json 下的 信 ...

随机推荐

  1. BZOJ4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ4997 题意概括 在n*n的区域里,每一个1*1的块都是一个格子. 有k头牛在里面. 有r个篱笆把格 ...

  2. python下sqlite增删查改方法(转)

    sqlite读写   #coding=utf-8 import sqlite3 import os #创建数据库和游标 if os.path.exists(' test.db'): conn=sqli ...

  3. uva 674 Coin Change 换钱币【完全背包】

    题目链接:https://vjudge.net/contest/59424#problem/A 题目大意: 有5种硬币, 面值分别为1.5.10.25.50,现在给出金额,问可以用多少种方式组成该面值 ...

  4. epoll使用详解

    目录 epoll介绍 Epoll的优点: 1.支持一个进程打开大数目的socket描述符(FD) 2.IO效率不随FD数目增加而线性下降 3.支持边缘触发模式 4.使用mmap加速内核与用户空间的消息 ...

  5. 安卓工作室 android studio 汉化后,报错。 设置界面打不开。Can't find resource for bundle java.util.PropertyResourceBundle, key emmet.bem.class.name.element.separator.label

    安卓工作室 android studio 汉化后,报错. 设置界面打不开. Android studio has been sinified and reported wrong.The setup ...

  6. Python3基础之字典

    Python数据类型之字典(Dictionary) 字典特征 特征 可变.无序.映射.键值对 形式 {key0:value0, key1:value1, key2:value3, ..., } key ...

  7. [转]Vmware(vmdk)虚拟机到hyperv(vhd)虚拟机转换

    Vmware(vmdk)虚拟机到hyperv(vhd)虚拟机转换   1.关闭Vmware所有虚拟机 2.合并Vmware磁盘 通常磁盘都分开储存 "C:\Program Files (x8 ...

  8. Django关于设置自定义404和安装debug-toolbar的笔记

    Django关于设置自定义404和安装debug-toolbar的笔记 关于设置404 先做好404页面,然后在views.py文件中做好映射,最后是在urls.py做好路由,而这个urls.py必须 ...

  9. 2d场景背景无限滚动

    之前都是直接借用的DoTween插件,两个背景无限交替位置进行,还有就是三个背景在利用Trigger进行判断显示与否循环: 示例脚本: private List<RectTransform> ...

  10. ssdb安装注意事项

    官网的安装教程依赖于autoconf,需要提前安装.