分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

struts2对json的支持

发布时间:2023-09-06 01:10责任编辑:顾先生关键词:jsjson

方式一:自行构造json

1)导入jar包:

  xstream 或者 Jackson,推荐使用Jackson,效率高

2)引入struts2,书写配置文件

3)修改action配置,修改result返回的jsp页面,页面只留下${requestScope.json}

下面是我之前做的安卓服务器例子:

action配置

<!-- 设置全局转发地址,专门发送JSON对象 --> 因为我做后台所有信息都是json格式,所以就用了全局设置 ???????<global-results> ?????????????<result name="success">/WEB-INF/return.jsp</result> ???????????<result name="input">/err.jsp</result> ???????</global-results>

action类

/** ????* 登陆 ????* session中添加数据 ????*/ ???public String login() { ???????User login = userService.login(user); ???????ActionContext ac = ActionContext.getContext(); ???????Map<String, Object> application = ac.getApplication(); ???????if (application.get("user:" + user.getId()) == null) ???????????application.put("user:" + user.getId(), user); ??? ???ActionUtil.putRequestParam(JsonUtil.toJson(login)); //该句是重点,把对象转换成json,然后保存到域对象中 ???????return "success"; ???}

public class ActionUtil {

  public static void putRequestParam(String res) {
    ActionContext context = ActionContext.getContext(); //因为Action是多例的所以直接在外部可以获取ActionContext对象
    Map<String, Object> requestMap = context.getContextMap();
    requestMap.put("result", res);
  }

}

return.jsp

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2 ${result}

浏览器获取到数据再调用trim()方法除去空行即可

方式二:使用Struts2的struts2-json-plugin.jar插件返回JSON数据。

该部分转载:转自:http://www.cnblogs.com/liubaozhe/p/4418741.html

一、其中主要步骤有:

1.将struts2-json-plugin.jar插件拷贝到项目的"/WEB-INF/lib"文件夹下;

2.编写Action类文件;

3.在struts.xml文件中配置这个Action,这个Action所在的"<package.../>"必须继承”json-default“, Action 的 Result  类型为  json ,即 type="json" ,而且不对应任何视图资源。

二、示例代码:

Action类文件:

package com.example.action;import java.util.ArrayList;import com.opensymphony.xwork2.ActionSupport;public class StrutsJsonAction extends ActionSupport { ???private int i=123; ???private String str="str"; ???private int[] array={1,2,3}; ???private ArrayList<String> list; ???????public int getI() { ???????return i; ???} ???public void setI(int i) { ???????this.i = i; ???} ???public String getStr() { ???????return str; ???} ???public void setStr(String str) { ???????this.str = str; ???} ???public int[] getArray() { ???????return array; ???} ???public void setArray(int[] array) { ???????this.array = array; ???} ???public ArrayList<String> getList() { ???????return list; ???} ???public void setList(ArrayList<String> list) { ???????this.list = list; ???} ???public String execute(){ ???????list = new ArrayList<String>(); ???????list.add("red"); ???????list.add("green"); ???????list.add("yellow"); ???????return SUCCESS; ???}}

struts.xml文件:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> ???<package name="json-example" namespace="/" extends="json-default"> ???????<action name="JSONExample" class="com.example.action.StrutsJsonAction"> ???????????<result name="success" type="json"/> ???????</action> ???</package></struts> ???

然后在浏览器中访问"   http://localhost:8080/Struts2_JSON/JSONExample  ",显示结果如图:

  JSON 插件会将所有可序列化  Action  属性序列化为 JSON  数据。

三、配置常用JSON类型的Result

浏览器是否缓存JSON

<result type="json">  <!-- 取消浏览器缓存-->  <param name="noCache">true</param></result>

 设置浏览器响应类型,默认为text/html

<result type="json">  <!-- 设置服务器响应类型-->  <param name="contentType">application/json</param></result>

 

排除值为 null 的属性

<result type="json"> ?<!--排除值为null的属性--> ?<param name="excludeNullProperties">true</param></result>

只序列化指定的Action属性

<result type="json"> ???<!--只序列化Action内的list属性--> ???<param name="root">list</param></result>

序列化包含的属性(逗号分隔的正则表达式列表)
<result type="json"> ???<!--序列化list属性--> ???<param name="includeProperties">list.*</param></result>
<result type="json"> ???<!--序列化array属性,\[和\]匹配数组的[]括号,\d匹配数字,+表示一次或多次--> ???<param name="includeProperties">array\[\d+\]</param>
</result>

排除不需要被序列化的属性(逗号分隔的正则表达式列表)
<result type="json"> ????<!--排除list属性-->  <param name="excludeProperties"> list.* </param></result>

struts2对json的支持

原文地址:http://www.cnblogs.com/webyyq/p/7507911.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved