目的

在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. Codeforces 679C Bear and Square Grid

    Bear and Square Grid 枚举k * k 的位置, 然后接上它周围白色连通块的数量, 再统计完全在k * k范围里的连通块, 这个只要某个连通块全部的方格 在k * k里面就好, 并且 ...

  2. Map的知识点梳理(不包含collections工具类)

    一:基础公共方法(map不再是简单的加索引,可以直接命名key,通过key进行遍历) 1.常见的map子类 HashTable:底层是哈希表结构.不允许null键和null值,线程同步 HashMap ...

  3. 069 Hue协作框架

    一:介绍 1.官网 官网:http://gethue.com/ 下载:http://archive.cloudera.com/cdh5/cdh/5/,只能在这里下载,不是Apache的 手册:http ...

  4. drupal笔记

    $app_root :网站根目录 安装 汉化:1将汉化包放置drupal8\sites\default\files\translations下安装:2极简版的话需要在extend(扩展)中安装Inte ...

  5. POJ 3304 Segments (叉乘判断线段相交)

    <题目链接> 题目大意: 给出一些线段,判断是存在直线,使得该直线能够经过所有的线段.. 解题思路: 如果有存在这样的直线,过投影相交区域作直线的垂线,该垂线必定与每条线段相交,问题转化为 ...

  6. 008.Docker Flannel+Etcd分布式网络部署

    一 环境准备 1.1 Flannel概述 Flannel是一种基于overlay网络的跨主机容器网络解决方案,即将TCP数据包封装在另一种网络包里面进行路由转发和通信,Flannel是CoreOS开发 ...

  7. 虚拟机克隆后导致两台机器的IP都不显示的解决方法

    centos7中输入ifconfig出现ens33,没有eth0,也没有ip,不能上网,输入ifconfig后如下图 之前在网上也找了很多的方法,比如删除文件70-persistent-ipoib.r ...

  8. Spring MVC 注解 @RequestParam解析

    在Spring MVC 后台控制层获取参数的方式主要有两种,一种是requset.getParameter(“name”),另一种是用注解@Resquest.Param直接获取. 一.基本使用获取提交 ...

  9. BZOJ.4767.两双手(组合 容斥 DP)

    题目链接 \(Description\) 棋盘上\((0,0)\)处有一个棋子.棋子只有两种走法,分别对应向量\((A_x,A_y),(B_x,B_y)\).同时棋盘上有\(n\)个障碍点\((x_i ...

  10. Python图形编程探索系列-02-框架设计

    跳转到我的博客 设计任务 在主窗口root中放置三个容器用于容纳组件,容器采用框架设计. 代码初步设计 import tkinter as tk root = tk.Tk() root.geometr ...