在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对象,然后返回,响应便被返回。从而完成对一个请求的响应,返回响应字符串。
以上。