[实训]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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章