目的
在struts2中使用JQuery、JSON、AJAX等技术处理用户请求,并返回结果。返回结果可以是以JSONObject的方式返回,也可以是以JSONArray方式返回结果。
实现
1. 创建表示层JSP(testJJA.jsp)
此JSP也用于处理返回结果,因为是AJAX方式提交的,并不需要另外的显示页面。
<%@page language="java" import="java.util.*" pageEncoding="utf-8"%>
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")); ListaList = new ArrayList (); 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
4. 测试
打开IE,输入地址:
效果如下:
单击“提交试试(Object)”按钮后,结果如下:
单击“提交试试(Array)”按钮后,效果如下: