`

Struts2 直接输出字符 type="stream"

 
阅读更多

1. 用json 不能解决的问题

 

有时我们用java 把json 对象用字符串拼接好后

1) 定义一个inputstream 

2)定义Action

 

 

package com.bs023.msvs.action;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

/**
 * 测试Action
 * @author liuqing
 * @version 1.0
 */
public class TestAction {
	
	private String username;
	
	private String password;
	
	//写一个输出流
	private InputStream json;
	
	public String add() {
		try {
		    //中文转码问题
			this.username = "username _=======222==刘庆==qing";
			this.json = new ByteArrayInputStream(this.username.getBytes());
		} 
		catch (Exception e) {
			e.printStackTrace();
		}
		return "add";
	}
	
	public OutputStream output() throws IOException {
		return ServletActionContext.getResponse().getOutputStream();
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public InputStream getJson() {
		return json;
	}

	public void setJson(InputStream json) {
		this.json = json;
	}

}

 

2.配置文件

 

 <action name="test" class="testAction" method="add">
       		<result name="add" type="stream">
       		    <param name="contentType">text/html;charset=UTF-8</param>
       			<param name="inputName">json</param>
       		</result>
       </action>

 

 

3. 运行结果

 

http://127.0.0.1:8080/upsn/usermanager/test.action

 

 

username _=======222==刘庆==qing

 

 

4.方法二使用ServletActionContext

 

 

package com.bs023.msvs.action;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

/**
 * 测试Action
 * @author liuqing
 * @version 1.0
 */
public class TestAction {
	
	private String username;
	
	private String password;
	
	//写一个输出流
	private InputStream json;
	
	public String add() {
		try {
			
			PrintWriter out = new PrintWriter(this.output());
			out.println("我是中国人");
			out.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public OutputStream output() throws IOException {
		//通过struts2 调用Response
		HttpServletResponse reponse = ServletActionContext.getResponse();
		reponse.setContentType("text/html;charset=UTF-8");
		return reponse.getOutputStream();
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public InputStream getJson() {
		return json;
	}

	public void setJson(InputStream json) {
		this.json = json;
	}

}
 

 

 

 

 

 

分享到:
评论

相关推荐

    json struts2 ajax文件上传 input type=file,选择相同文件也提交 附带类库

    json struts2 ajax文件上传 input type=file,选择相同文件也提交,里面附带类库,可以直接运行。使用工具, myeclipse

    JAVA Struts2+Spring+Hibernate=SSH框架集成教程(ppt+源代码).zip

    JAVA Struts2+Spring+Hibernate=SSH框架集成教程(ppt+源代码).zip

    Struts2 国际化字符串 拦截器

    2. 使用java.text.MessageFormat中的字符串格式,格式为{ 参数序号(从0开始), 格式类形(number | date | time | choice), 格式样式},例如: validation.between=Date must between {0, date, short} and {1, ...

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    在struts2中使用result里type="stream"的结果类型时,可以实现文件的下载管理,使用时也是比较顺畅,但是当在“下载提示窗口”中点击“取消按钮”时,总是报出“java.lang.IllegalStateException”异常,异常内容...

    Struts2_s2-016&017&ognl2.6.11_patch漏洞补丁

    &lt;bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class="com.struts2.MyDefaultActionMapper" /&gt; &lt;constant name="struts.mapper.class" value=...

    struts1和struts2的区别

    struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别...

    struts2-sunspoter-stream-1.0.jar

    在我们做struts2文件下载的时候,经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常(其中包括ClientAbortException异常),附件中使用struts2-sunspoter-stream-1.0.jar插件可...

    struts2-sunspoter-stream-1.1.jar

    添加struts2-sunspoter-stream-1.1.jar,该版本适用的范围: 1.JDK 1.4.2 2.J2EE 1.4 功能见http://sunspot.blog.51cto.com/372554/474983

    struts2实例 学生信息管理系统

    struts2实现的学生信息管理系统 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ...

    Struts2文件流方式导出下载excel、Txt、image图片

    Struts2文件流方式导出下载excel、Txt、image图片,直接返回给浏览器提示下载,不生成临时文件,直接保存在客户端

    Struts2视频教程

    Struts2是一套非常优秀的Java WEB应用框架,实现优雅、功能强大、使用简洁。目前已有大量的企业项目采用Struts2来作为Web框架进行开发,掌握Struts2是每个进行Web开发的Java程序员的一项必备技能。 本视频对Struts2...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    Struts2拦截器(Interceptor)

    Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    struts2 资料struts2 资料struts2 资料struts2 资料

    struts2 资料struts2 资料struts2 资料struts2 资料

    struts2中的result的type类型

    struts2 跳转类型 result type chain dispatcher redirect redirect action

    struts2 获取request

    struts2 获取request session对象

    struts2环境搭建+struts2 新闻发布系统+struts2 留言板

    struts2环境搭建+struts2 新闻发布系统+struts2 留言板 struts2环境搭建:基础框架搭建,简单易上手,...struts2 留言板:struts2+jquery 直接导入myecplise中即可使用,很好用,可以在此基础上添加并完善项目将更完美。

    struts2(1-7)源码 struts2学习入门 源码学习

    struts 初步认识Struts2并部署验证 struts2 将要进行自定义类型转换的点数据从1个增加到3个 struts3 进行全局的类型转换 struts4 使用Struts2中内部类中的方法进行自定义类型转换,用到的类StrutsTypeConverter ...

    Struts2漏洞检查工具2019版 V2.3.exe

    Struts2漏洞检查工具2019版 警告: 本工具为漏洞自查工具,请勿非法攻击他人网站! ==漏洞编号==============影响版本=========================官方公告==========================================影响范围====...

Global site tag (gtag.js) - Google Analytics