文档章节

struts2之json插件

Zero零_度
 Zero零_度
发布于 2015/09/23 11:20
字数 498
阅读 99
收藏 4

1、引入json插件包

<!-- 引入struts2的json插件 -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-json-plugin</artifactId>
        <version>${struts.version}</version>
    </dependency>

2、配置xml,extends="json-default",<result name="success" type="json"></result>

<?xml version="1.0"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
    <package name="indexPackage" namespace="/" extends="json-default">
        <action name="indexAction_*" class="indexAction" method="{1}">
            <result name="success" type="json"></result>
        </action>
    </package>
</struts>

3、Action中使用

package cn.sniper.project.action;

import org.apache.struts2.json.annotations.JSON;

@Controller("indexAction")
@Scope("prototype")
public class IndexAction extends BaseAction<UserVo> {
    
    private static final long serialVersionUID = -8269406543148672672L;

    //登录默认是失败
    private String login = FAIL;
    
    /**
     * 跳转到登录页面
     * @return
     */
    public String login() {
        return LOGIN;
    }
    
    /**
     * 登录
     * @return
     */
    public String doLogin() {
        UserVo user = this.getModel();
        if(user.getUsername().equals(user.getPassword())) {
            
            this.setLogin(SUCCESS);
            
            //json只能获取得到栈顶元素
            super.push(this.login);
            
            return SUCCESS;
        } else {
            throw new RuntimeException();
        }
    }
    
    /**
     * 登录成功后首页
     * @return
     */
    public String index() {
        return INDEX;
    }
    
    @JSON(name="login")
    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }
}

4、json相关:

a、传递到页面的json对象为栈顶元素

b、重命名json对象
    @JSON(name="login")
    public String getLogin() {
        return login;
    }

c、设置属性不做json序列化
    @JSON(serialize=false)
    public String getLogin() {
        return login;
    }
    
d、格式化日期
    @JSON(format="yyyy-MM-dd")
    public String getDate() {
        return date;
    }

5、json插件原理,查看struts2-json-plugin.jar根目录下的struts-plugin.xml文件,发现json-default本身继承自struts-default,并且自定义了类型json:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <package name="json-default" extends="struts-default">

        <result-types>
            <result-type name="json" class="org.apache.struts2.json.JSONResult"/>
        </result-types>

        <interceptors>
            <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/>
            <interceptor name="jsonValidation" class="org.apache.struts2.json.JSONValidationInterceptor"/>

            <!-- Sample JSON validation stack -->
            <interceptor-stack name="jsonValidationWorkflowStack">
                <interceptor-ref name="basicStack"/>
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel</param>
                </interceptor-ref>
                <interceptor-ref name="jsonValidation"/>
                <interceptor-ref name="workflow"/>
            </interceptor-stack>

        </interceptors>

    </package>
</struts>

6、访问页面:

$.ajax({
                url : baseURL + '/indexAction_doLogin.action',
                type : 'post',
                data : {
                    username : $('#username').val(),
                    password : $('#password').val(),
                },
                beforeSend : function () {
                    $.messager.progress({
                        text : '正在登录中...',
                    });
                },
                success : function (data, response, status) {
                    $.messager.progress('close');
                    
                    /**
                     * 为什么data不采用boolean类型?
                     *         因为做if(data)判断的时候,只要data是非空,就是true值,这样如果登录失败返回非空值,就会导致认为登录成功
                     */
                    if(data=="success") {
                        location.href = baseURL + '/indexAction_index.action';
                    } else {
                        $.messager.alert('登录失败!', '用户名或密码错误!', 'warning', function () {
                            $('#password').select();
                        });
                    }
                }
            });


© 著作权归作者所有

Zero零_度
粉丝 69
博文 1267
码字总数 263854
作品 0
程序员
私信 提问
Struts2 返回json格式配置

介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据。 一、其中主要步骤有: 1.将struts2-json-plugin.jar插件拷贝到项目的"/WEB-INF/lib"文件夹下; 2.编写Action类文件; 3.在...

文文1
2018/06/30
32
0
Struts2 Json日期格式异常处理

org.apache.struts2.json.JSONException: Unable to parse date from: 01/29/2014 Json插件日期解析失败,解决方法如下: Struts2中Json插件默认的日期格式是yyyy-MM-ddTHH:mm:ss的 ,中间有...

YOTOO
2014/05/09
630
0
shenzhanwang/S2SH

S2SH Struts2,Hibernate,Spring三大框架的整合总是很麻烦,在此提供一个已经整合好三大框架的包,可以直接下载导入Myeclipse使用,项目基于Maven做依赖管理。 其中包含的内容如下: 1.Struts...

shenzhanwang
2016/11/16
0
0
后台返回的数据用struts2的json插件在页面显示的时候用IE怎么是提示下载呢?

后台返回的数据用struts2的json插件在页面显示的时候IE怎么提示下载呢?下载后里面试json格式的字符串

汪林
2012/11/12
1K
10
struts2使用json需要注意的问题

JSON(Java Script Object Notation),是一种语言无关的数据交换格式。 JSON插件是Structs 2 的Ajax插件,通过利用JSON插件,开发者可以很方便,灵活的利用Ajax进行开发。 Json是一种轻量级...

zhengjh1987
2012/08/10
89
0

没有更多内容

加载失败,请刷新页面

加载更多

Taro 兼容 h5 踩坑指南

最近一周在改造 公羊阅读🐏 Taro 版本适配 h5 端,过程中改改补补,好不酸爽。 本文记录📝遇到的问题,希望为有相同需求的哥们👬节约点时间。 Taro 版本:1.3.9。 client_mobile_taro...

dkvirus
今天
4
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
今天
3
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
今天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
19
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部