[實訓]ssh中struts2中的InputStream對象

在ssh中,inputstream對象一般是ssh自己內部使用的對象,即對請求和相應的形式都是輸入輸出流的形式。因此在ssh中如果有inputstream對象,或是有getInputStream方法時,可能會出現不按照正常要求來,會自動執行該方法的情況。

在項目中,由於是安卓客戶端-服務器後臺的形式,所以交互的形式一般都是字符串的形式,因此我在項目中使用的全是將數據輸入到inputstream對象中的形式,進而作爲響應返回。

配置如下:

在struts.xml的配置文件中,action的請求設置:

        <action name="user_*" class="controller.UserInfoAction" method="{1}">
            <result type="stream">
                <param name="contentType">text/html</param>
                <param name="inputName">inputStream</param>
            </result>
        </action>

此處返回的結果指定爲流的方式,然後隨後定義contentType和name,與該類中的對象進行映射。所以,在類中的代碼爲:

    private InputStream inputStream;
        public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

即設置一個與result中name相同的對象並設置get和set方法,且主要該類要繼承SessionAware接口。

經過上述設置之後,在每個方法中進行響應返回時,便可編寫如下代碼:

    public String changePwd() {
        String result = "failed";
        int status = -1;
        //省略業務流代碼
        result = status + "";
        inputStream = MsgUtil.sendString(result);

        return SUCCESS;
    }

直接將數據寫入inputStream對象,然後返回,響應便被返回。從而完成對一個請求的響應,返回響應字符串。

以上。

發佈了71 篇原創文章 · 獲贊 70 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章