struts2之json外掛程式

來源:互聯網
上載者:User

標籤:

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();                        });                    }                }            });


struts2之json外掛程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.