目的

在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. 最短路径问题 HDU3790 (dijkstra)

    基础的dijkstra问题  加上了花费 #include<bits/stdc++.h> using namespace std; ][][]; ];]; #define INF 9999 ...

  2. java实体转json忽略属性

    1: import com.alibaba.fastjson.annotation.JSONField; fastjson 过滤指定字段 @JSONField(serialize=false)priv ...

  3. Burp Suite之Scaner模块(三)

    Burp Suite之Scaner模块(三) Scaner模块配置详解 Scan Queue Active Scanning(主动扫描)过程通常包括发送大量请求到服务器为所扫描的每个基本的请求,这可能 ...

  4. JAVA Socket通信 打造属于自己的网盘

    近一个月没敲JAVA代码了,最近老师布置了一个写JAVA网盘的作业,总共花了十几个小时,总算写完了,debug真的累,感觉自己还是菜了,没有那种有一个想法就能马上用代码实现的能力....不扯了,下面开 ...

  5. html 转成 pdf 进行预览、下载、打印

    html 页面转成 pdf,直接看代码: 参考地址: https://github.com/linwalker/render-html-to-pdf 给出代码 方便粘贴: var downPdf = ...

  6. canvas学习-----1px线条模糊问题

    canvas有时候会出现1像素的线条模糊不清且好像更宽的情况,如下图: 这样的线条显然不是我们想要的. 这篇文章的目的就是弄清楚里面的原理,以及解决它. 大家都知道屏幕上最小的显示尺寸就是1像素,虽然 ...

  7. Javascript中call,apply,bind的区别

    一.探索call方法原理 Function.prototype.call = function(obj) { // 1.让fn中的this指向obj // eval(this.toString().r ...

  8. VsVim - Shortcut Key (快捷键)

    Enable / Disable NuGet 中提供了禁用按钮.另外还可以通过 Ctrl+Shift+F12 在 Visual Studio 中实现 Enable / Disable. 移动光标类命令 ...

  9. grpc 使用流程、使用技巧

    1.通过maven插件编译出java stub类. 2.对于批量调用的场景,我们可以使用FutureStub,对于普通的业务类型RPC,我们应该使用BlockingStub. 3.创建批量生成多个语言 ...

  10. 每日踩坑 2019-04-08 VS2015未能找到路径“…\bin\roslyn\csc.exe”的解决方案

    使用 Nuget 安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 包即可. VS2017都是用 roslyn 编译, VS2015原本的编译 ...