Struts的JSON机制

Struts的JSON帮助我们自动将对象解析为JSON对象,不用我门借助第三方进行JSON的解析

。具体的使用机制如下:

1.Action类

package StrutsJSON;

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

import com.opensymphony.xwork2.Action;

import freemarker.template.utility.NormalizeNewlines;

public class JSONtest {

    private Map<String,Object> map;
    private String name;
    private String password;
    List<User> list ;

    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Map<String, Object> getMap() {
        return map;
    }

    public void setMap(Map<String, Object> map) {
        this.map = map;
    }

    public String execute(){
        System.out.println(11);
        System.out.println(name+"  "+password);
        map = new LinkedHashMap<String,Object>();
//        测试布尔类型
        map.put("boob", 222);
//        测试集合类型
        list = new ArrayList<>();
        list.add(new User("qlq", "123456"));
        list.add(new User("qz", "78910"));
        map.put("list", list);
//        测试字符串类型
        map.put("str", "20");
        this.setMap(map);
//        测试对象
        map.put("obj", new User("wlw", "22222"));
        return Action.SUCCESS;
    }
}

xml配置

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5
 6 <struts>
 7
 8     <constant name="struts.devMode" value="true"></constant>
 9
10     <package name="test" extends="json-default">
11
12         <action name="jsontest" class="StrutsJSON.JSONtest">
13             <result type="json">
14                 <param name="root">map</param>
15             </result>
16         </action>
17
18
19     </package>
20
21
22
23
24 </struts>

2.HTML通过ajax请求JSON数据

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>测试JSON的页面</title>
 6 <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
 7 <script type="text/javascript">
 8     function fun1() {
 9         alert("开始请求数据");
10         $.get("jsontest.action", //请求地址
11         //"name=qlq&password=qlq",   //请求参数
12         {
13             "name" : "qlq",
14             "password" : "nicai"
15         }, //请求传递的参数,也可以是JSON
16         function(data) { //data表示传递回来的数据,只有在成功的时候才有
17              alert(data);
18         }, "text" //表示返回内容的格式,json会将传回来的自动解析成json对象
19         );
20     }
21 </script>
22 </head>
23 <body>
24
25     <input type="button" value="请求JSON数据" onclick="fun1()">
26
27
28 </body>
29 </html>

首先测试的是返回的数据格式,打印结果如下

将上面ajax请求返回数据格式改为json后再进行测试,

修改后HTML代码:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>测试JSON的页面</title>
 6 <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
 7 <script type="text/javascript">
 8     function fun1() {
 9         alert("开始请求数据");
10         $.get("jsontest.action", //请求地址
11         //"name=qlq&password=qlq",   //请求参数
12         {
13             "name" : "qlq",
14             "password" : "nicai"
15         }, //请求传递的参数,也可以是JSON
16         function(data) { //data表示传递回来的数据,只有在成功的时候才有
17             /* 测试json数组 */
18              alert(data.list[0].name+"  "+data.list[0].password);
19         /* 测试json对象与单个属性 */
20              alert(data.obj.name+"  "+data.str);
21         }, "json" //表示返回内容的格式,json会将传回来的自动解析成json对象
22         );
23     }
24 </script>
25 </head>
26 <body>
27
28     <input type="button" value="请求JSON数据" onclick="fun1()">
29
30
31 </body>
32 </html>

结果如下:

                                 

时间: 2024-10-27 08:16:09

Struts的JSON机制的相关文章

深入理解struts的运行机制

在此申明本博文并非原创,原文:http://blog.csdn.net/lenotang/article/details/3336623,本文章是在此文章基础上进行优化.也谈不上优化,只是加上了点自己的想法 jar包准备 为什么会用到这两个jar包呢,因为我需要通过这个jar来解析xml配置文件. 新建项目 流程梳理 struts配置文件 <?xml version="1.0" encoding="UTF-8"?> <struts> <

struts返回json数据

想要在struts中返回json格式数据有两种办法. 1.使用servlet的输出流 实际上就是在struts中获取response对象的输出流.然后写入你要返回的json数据,本质和用servlet返回json数据是一样的,需要自己导入json的jar包.不做详细介绍. 2.试用struts对json的扩展 这里需要两个jar包,xwork-core-2.1.6.jar和struts2-json-plugin-2.1.8.jar.如果是用MyEclipse注入的struts环境就不需要手动了.

struts token令牌机制

利用Struts同步令牌(Token)机制来解决Web应用中的重复提交问题.该方法的基本原理是:服务器端在处理到达的request之前,会将request中的Token值与保存在当前用户session中的令牌值进行比较,看是否匹配.在处理完该request后,且在response发送给客户端之前,将会产生一个新的 Token,该Token除传给客户端以外,也会将用户session中保存的旧的Token进行替换.这样,如果用户会退到刚才的提交页面并再次提交的话,客户端传过来的Token值和服务器端

Hibernate+struts+JqueryAjax+jSON实现无刷新三级联动

看网上JqueryAjax三级联动的例子讲不是很全,代码也给的不是很全,给初学者带来一定的难度.小弟自己写了一个,可能有些地方不是很好,希望大家能够提出建议. 用的是Hibernate+struts2写的.http://blog.csdn.net/luckey_zh/article/details/22995389 以代码来说话吧. 首先是index1.jsp页面 [html] view plaincopy <%@ page language="java" import=&quo

Struts ajax json重新整理

刚才写的例子,出了些问题,又重新写了一个. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/l

Struts之Token机制

Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配.在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换.这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生. 具体使用方法如下: 1.先在一个Action中,调用sav

【自制工具类】struts返回json数据包装格式类

自己写的一个给struts返回的json数据包装格式类,不喜勿喷,原创,需在项目中引入com.alibaba.fastjson的jar包 先看下效果(这里没有使用msg,有兴趣的往下看): 上demo: 1 import java.util.HashMap; 2 3 4 /** 5 * JSON响应处理工具类 6 * 7 * 返回一个json对象,包含status/msg/data, 8 * checkOK()默认status:200/checkFail()默认status:500 9 * 其中

struts返回json

<param name="includeProperties"> </param> 这个属性表示要包含进JSON数据中的数据.<param name="excludeProperties"></param> 这个属性表示不要包含进JSON数据中的数据. <param name="excludeNullProperties">true</param>这个属性表示去除空数据. &

Struts——(四)异常处理机制

在通常的情况下,我们得到异常以后,需要将页面导航到一个错误提示的页面,提示错误信息.利用Stuts我们可以采用两种方式处理异常: 1.编程式异常处理 即我们在Action中调用业务逻辑层对象的方法时,用try{ }catch的方式来截获异常之后,手工对异常进行处理 在编程式异常处理的时候,我们可以使用struts的消息处理机制来对这些异常信息进行处理. 2. 自动异常处理机制 即在Action中不捕捉异常,而是将异常抛出给struts框架处理 我们需要在配置文件中指示struts如何处理这些被抛