在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對象,然後返回,響應便被返回。從而完成對一個請求的響應,返回響應字符串。
以上。